Bonjour bonjour,
Je suis actuellement entrain de tester mon programme, le compilateur Mikrobasic ne détecte pas d'erreur mais lorsque je teste en réel rien ne se passe.
Je programme un pic16F877A sous mikrobasic à l'aide de la plaquette EasyPIC5.
Je veut pouvoir choisir avec 4 switchs (pour avoir 16 possibilités), le temps d'une impulsion que je déclenche par un bouton poussoir.
Mais rien ne se passe alors si quelqu'un a une idée cela serait sympa .
program pulsations
symbol BP = PORTA.1
symbol sortie = PORTC.0
main:
CMCON = 7
TRISA = 1
ADCON1=7
TRISB = 1
ADCON1=7
TRISD = 1
ADCON1=7
TRISC.0 = 0 ' output
ADCON1=7
PORTC.0 = 0
PORTB.3 = 0
PORTB.1 = 0
PORTB.2 = 0
debut:
while BP = 0 ' détection d'un front descendant du bouton poussoir
wend
'if PORTA.0 = 0 then 'choix pour la première tempo si S0 = 1 -> possibilité de choisir entre 100µs et 840ms avec un pas de 120ms
' si S0 = 0 -> possibilité de choisir entre 1 s et 30 s avec un pas de 3.7s
'******* Pour la durée du niveau haut de la sortie entre 1 et 60 s sur 4 bits donc 16 possibilités*****
sortie = 1
if (PORTB.0 = 0) AND (PORTB.1 = 0) AND (PORTB.2 = 0) AND (PORTB.3 = 0) then
delay_ms(1000) 'tempo de 1s
end if
if (PORTB.0 = 0) AND (PORTB.1 = 0) AND (PORTB.2 = 0) AND (PORTB.3 = 1) then
delay_ms(2000) 'tempo de 2s
end if
if (PORTB.0 = 0) AND (PORTB.1 = 0) AND (PORTB.2 = 1) AND (PORTB.3 = 0) then
delay_ms(4000) 'tempo de 4s
end if
if (PORTB.0 = 0) AND (PORTB.1 = 0) AND (PORTB.2 = 1) AND (PORTB.3 = 1) then
delay_ms(6000) 'tempo de 6s
end if
if (PORTB.0 = 0) AND (PORTB.1 = 1) AND (PORTB.2 = 0) AND (PORTB.3 = 0) then
delay_ms(8000) 'tempo de 8s
end if
if (PORTB.0 = 0) AND (PORTB.1 = 1) AND (PORTB.2 = 0) AND (PORTB.3 = 1) then
delay_ms(10000) 'tempo de 10s
end if
if (PORTB.0 = 0) AND (PORTB.1 = 1) AND (PORTB.2 = 1) AND (PORTB.3 = 0) then
delay_ms(12000) 'tempo de 12s
end if
if (PORTB.0 = 0) AND (PORTB.1 = 1) AND (PORTB.2 = 1) AND (PORTB.3 = 1) then
delay_ms(14000) 'tempo de 14s
end if
if (PORTB.0 = 1) AND (PORTB.1 = 0) AND (PORTB.2 = 0) AND (PORTB.3 = 0) then
delay_ms(16000) 'tempo de 16s
end if
if (PORTB.0 = 1) AND (PORTB.1 = 0) AND (PORTB.2 = 0) AND (PORTB.3 = 1) then
delay_ms(18000) 'tempo de 18s
end if
if (PORTB.4 = 1) AND (PORTB.1 = 0) AND (PORTB.2 = 1) AND (PORTB.3 = 0) then
delay_ms(20000) 'tempo de 20s
end if
if (PORTB.0 = 1) AND (PORTB.1 = 0) AND (PORTB.2 = 1) AND (PORTB.3 = 1) then
delay_ms(22000) 'tempo de 22s
end if
if (PORTB.0 = 1) AND (PORTB.1 = 1) AND (PORTB.2 = 0) AND (PORTB.3 = 0) then
delay_ms(24000) 'tempo de 24s
end if
if (PORTB.0 = 1) AND (PORTB.1 = 1) AND (PORTB.2 = 0) AND (PORTB.3 = 1) then
delay_ms(2600) 'tempo de 26s
end if
if (PORTB.0 = 1) AND (PORTB.1 = 1) AND (PORTB.2 = 1) AND (PORTB.3 = 0) then
delay_ms(2800) 'tempo de 28s
end if
if (PORTB.0 = 1) AND (PORTB.1 = 1) AND (PORTB.2 = 1) AND (PORTB.3 = 1) then
delay_ms(3000) 'tempo de 30s
end if
sortie = 0
'end if
GOTO debut
end.
-----