Erreur de compilation

Jacques ROBERT

Senior Member
Bonjour,
J'ai besoin de faire 4 mesures de tension pour déterminer l'état de 8 sorties,avec un 20M2 je fais 4 * readadc vers b1,b2,b3,b4 en utilisant les entrées :C.7,C.3,C.2,C.1
qui sont dédiés à ADC et les sorties B.0 à B.7;deux "case x to y" par "bx" ;tout va bien jusqu'à "select b3"qui est refusé pour "erreur de compilation" [7943] pourquoi, alors
que "select b1 et select b2 sont acceptés?J'ai,bien sur, vérifié l'orthographe de tout ce qui précède et tout ce qui suit et ne comprends pas ce qui ne va pas.
Ceci est une suite au post sur "toggle" pour lequel PieM m'avait bien dépanné(merci encore).
 

PieM

Senior Member
Bonjour,
J'ai besoin de faire 4 mesures de tension pour déterminer l'état de 8 sorties,avec un 20M2 je fais 4 * readadc vers b1,b2,b3,b4 en utilisant les entrées :C.7,C.3,C.2,C.1
qui sont dédiés à ADC et les sorties B.0 à B.7;deux "case x to y" par "bx" ;tout va bien jusqu'à "select b3"qui est refusé pour "erreur de compilation" [7943] pourquoi, alors
que "select b1 et select b2 sont acceptés?J'ai,bien sur, vérifié l'orthographe de tout ce qui précède et tout ce qui suit et ne comprends pas ce qui ne va pas.
Ceci est une suite au post sur "toggle" pour lequel PieM m'avait bien dépanné(merci encore).
Bonjour,

Merci de mettre le programme en ligne ... on va bien trouver !
 

Jacques ROBERT

Senior Member
Code:
'Visuel 8 canaux
'Entrées:C.7,C.3,C.2,C.1
'Sorties:B.0 à B.7
#picaxe20M2
init:low B.0,B.1,B.2,B.3,B.4,B.5,B.6,B.7
main:readadc C.7,b1
readadc C.3,b2
readadc C.2,b3
readadc C.1,b4
select b1
case 6 to 9
toggle B.0
case 4 to 1
toggle B.1
select b2
case 6 to 9
toggle B.2
case 4 to 1
toggle B.3
select b3
case 6 to 9
toggle B.4
case 4 to 1
toggle B.5
select b4
case 6 to 9
toggle B.6
case 4 to 1
toggle B.7
endselect
pause 300
goto main[/QUOTE]
 

PieM

Senior Member
Normal ...

Quand vous faites des select, il faut penser à terminer la procédure select par un endselect; qui ne peut être commun , à la fin pour tous !

Le programme devient le suivant:

Code:
'Visuel 8 canaux
'Entrées:C.7,C.3,C.2,C.1
'Sorties:B.0 à B.7

#picaxe20M2
init:low B.0,B.1,B.2,B.3,B.4,B.5,B.6,B.7
main:
readadc C.7,b1
readadc C.3,b2
readadc C.2,b3
readadc C.1,b4

select b1
	case 6 to 9
	toggle B.0
	case 4 to 1
	toggle B.1
endselect
select b2
	case 6 to 9
	toggle B.2
	case 4 to 1
	toggle B.3
endselect
select b3
	case 6 to 9
	toggle B.4
	case 4 to 1
	toggle B.5
	endselect
select b4
	case 6 to 9
	toggle B.6
	case 4 to 1
	toggle B.7
endselect
pause 300
goto main
 

PieM

Senior Member
A ce propos , une petite remarque :
plutôt que d'écrire :
'Entrées:C.7,C.3,C.2,C.1
'Sorties:B.0 à B.7
qui ne renseigne que le lecteur, il est plus judicieux d'écrire en initialisation :

dirsC = %01110001 ce qui renseigne le picaxe en lui disant que C.7,C.3,C.2,C.1 sont des entrées.
dirsB = %11111111 ce qui renseigne le picaxe en lui disant que B0 à B7 sont des sorties

et ainsi au lieu d'écrire low B.0,B.1,B.2,B.3,B.4,B.5,B.6,B.7
il est possible d'utiliser : pinsB =%00000000 plus concis et économe en mémoire (5 octets au lieu de 14 !)

Le fait de préciser au Picaxe (et au lecteur !) dès le début , les broches qui sont en entrées et celles qui sont en sorties donne beaucoup plus de souplesse dans l'utilisation des variables symboliques.
 
Top