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.