12f629 con pulsanti
salve a tutti, volevo sottoporvi questo quesito: ho un PIC 12f629 con il quale intendo far lampeggiare due led con i due relativi pulsanti. alla pressione del tasto deve cominciare il lampeggio, e alla successiva pressione terminare. i pulsanti sono collegati a gp5 e gp4, i led gp0 e gp1. il lampeggio dovrebbe avvenire ogni mezzo secondo. per ora sono giunto ad un risultato non troppo entusiasmante. con il programma allegato il lampeggio comincia ma non riesco più a fermarlo.
void main() {
TRISIO = 0b111000;
GPIO=0;
while(1) {
if (GPIO&0x20){
Delay_Ms(200);
if (GPIO&0x20);
while (GPIO&0x20);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
}
if (GPIO&0x10){
Delay_Ms(200);
if (GPIO&0x10);
while (GPIO&0x10);
GPIO=0x02;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x02;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x02;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x02;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x02;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x02;
delay_ms(500);
GPIO=0x0;
}
}
}
spero qualcuno mi possa aiutare, grazie in anticipo.

void main() {
TRISIO = 0b111000;
GPIO=0;
while(1) {
if (GPIO&0x20){
Delay_Ms(200);
if (GPIO&0x20);
while (GPIO&0x20);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x01;
delay_ms(500);
GPIO=0x0;
}
if (GPIO&0x10){
Delay_Ms(200);
if (GPIO&0x10);
while (GPIO&0x10);
GPIO=0x02;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x02;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x02;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x02;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x02;
delay_ms(500);
GPIO=0x0;
delay_ms(500);
GPIO=0x02;
delay_ms(500);
GPIO=0x0;
}
}
}
spero qualcuno mi possa aiutare, grazie in anticipo.
