Utilisation des symboles pour entrées sorties

PieM

Senior Member
Les symboles sont nécessaires pour la lisibilité des programmes.
Mais parfois ça ne marche pas comme on veut !

Petite précision donc concernant les symboles et les entrées sorties

Une broche de picaxe peut selon les cas se nommer C.3 ou pinC.3.

On peut par exemple associer un Symbol Led1 = C.3 et l'utiliser en sortie par un HIGH Led1
Le fait d'utiliser l'instruction HIGH va avoir deux effets: configurer automatiquement la broche C.3 en sortie, et la mettre à un niveau haut.

Indépendamment de cela, si auparavant on a défini C.3 en tant que sortie par la commande DirsC = %00001000, il est alors possible de de commander cette sortie par une instruction LED1 = 1 à condition d'avoir associé le symbole par un Symbol LED1 = pinC.3

Concernant les entrées:
En supposant que l'on affecte : Symbol Poussoir = C.2
Lorsqu'on fait un test du type IF Poussoir = 1 then ... ça indiquera une erreur.

Par contre avec Symbol Poussoir = pinC.2, IF Poussoir = 1 then ... sera accepté.

En fait il faut considérer que C.3 est la broche et pinC.3 en est le contenu (1 ou 0).

Ceci permet d'écrire par exemple : Led1 = Poussoir
au lieu de :
IF Poussoir 1THEN
HIGH Led1​
.......

That's all folks :)
 
Last edited:

PapyJP

Senior Member
C'est trés clair ' as usual'
That's all folks
Vous avez un humour que je ne soupçonnais pas dans notre discussion !
Je chipote mais
de commander cette sortie par une instruction LED1 = 1
LED1=1 est une instruction ?
lol !
 
Last edited:

PieM

Senior Member
Vous avez un humour que je ne soupçonnais pas dans notre discussion !
Je chipote mais

LED1=1 est une instruction ?
lol !

Faut pas se fier aux apparences.

Led1 = 1 est la simplifification de LET Led1 = 1
Comme LET est une instruction d'affectation, son "raccourci" l'est aussi.
 

Jacques ROBERT

Senior Member
suite tardive aux conseils de PieM

Bonjour,merci PieM pour la mise au point sur l'utilisation des symboles.Alors je vais profiter de vos connaissances pour vous poser une question:je désire faire bouger
3servos en même temps avec des déplacements identiques ,j'ai écrit:
servo 1,100
servo 2,100
servo 4,100
donc j'ai écrit 3fois la même chose et ce pour chaque mouvement ,bien sûr ça marche;j'ai voulu simplifier:
servo 1,2,4,100 eh ben ça marche pas!!!le vérificateur de syntaxe me dit "erreur".Y a-t il un truc pour limiter le nombre de lignes du programme ?Merci d'avance.
 

PieM

Senior Member
servo 1,2,4,100 eh ben ça marche pas!!!le vérificateur de syntaxe me dit "erreur".Y a-t il un truc pour limiter le nombre de lignes du programme ?Merci d'avance.
Bonjour,
Non effectivement ça n'est pas accepté par la syntaxe de cette commande.

Je ne connais (?) qu'une simplification de ce type (qui n'est pas dans le manuel je crois ): c'est la commande de sortie numérique: on peut écrire High 1,2,3 ou Low 1,2,3 par exemple.

Concernant la limitation du nombre de ligne du programme, il faut en fait faire attention au nombre d'octets mémoire occupés par le programme.
en fait si on écrit :

high 1
high 2
high 3

cela occupe 7 octets, exactement comme si on écrit:
High 1,2,3 !
 

Jacques ROBERT

Senior Member
Je m'en doutais un peu ,mais en fait, ce n'est pas le nombre d'octets qui m'interresse,mais la longueur de l'écriture ;peut-être un peu fénéant sur les bords!!Merci quand même PieM et
à bientôt.Congratulations(avec l'accent).
 

PieM

Senior Member
Par contre pour économiser des lignes, on peut écrire :
servo 1,100 :servo 2,100 : servo 4,100
 

PieM

Senior Member
Bonjour,

Un post récent de Westaust me fait compléter ce que j'ai pu écrire en #1

Quand on écrit HIGH C.1 , C.1 est une constante qui correspond à la broche C.1 du Picaxe, la met à l'état de sortie et au niveau haut. (plusieurs instructions au niveau du PIC)

Mais l'instruction HIGH peut être suivie d'une variable ...
par exemple HIGH b1 sera équivalent à HIGH C.1 si b1 a été définie comme étant égal à 9.

En fait, vu du Pic les broches B.0 à B.7 puis C.0 à C.7, puis A.0 à A.7, puis D.0 à D.7 sont vues comme les sorties 0 à 31

Un petit programme à simuler dans PE met cela en lumière :

Code:
#picaxe 40X2

do
	for b1= 0 to 31
	toggle b1
	pause 100
	next
loop
Il est évident que pour d'autres picaxes ne disposant de 4 ports, il faut se limiter à 0 à 17 par exemple pour un 20M2
 
Top