#include #include "biosdem.h" __CONFIG (0x3d39); void serial_puts (const char s[]); void serial_putchar (char c); void serial_init (void); int a=0; char commande=0x00; void main (void) { DelayMs(10); serial_init(); ADCON1=0x06; PR2=239; TRISC1=0; TRISC2=0; CCP2CON=0x0C; CCP1CON=0x0C; TRISE2=0; TRISD1=0; TRISD2=0; TRISD3=0; TRISE0=0; TRISA5=0; TRISA4=0; TRISA2=0; TRISE1=0; TMR2ON=1; TRISB4=0; RD1=0; RD2=0; RD3=1; PEIE=0; RCIE=0; GIE=0; RB4=1; for(;;) { RE2=1; RA2=1; // if (RD4==0){RE1=1;}else{RE1=0;} //traitement des interrupteurs // if (RD5==0){RE0=1;}else{RE0=0;} // if (RD6==0){RA5=1;}else{RA5=0;} // if (RD7==0){RA4=0;}else{RA4=1;} if (RCIF==1) { commande=RCREG; CREN=0; CREN=1; } switch (commande) { case 0x00: //perte de la piste CCPR2L=0; CCPR1L=0; break; case 0x18: //piste au milieu CCPR2L=238; CCPR1L=230; break; case 0x30: //robot part léger droite CCPR2L=210; CCPR1L=230; break; case 0x60: //robot part moyen droite CCPR2L=140; CCPR1L=180; break; case 0xC0: //robot part beaucoup droite CCPR2L=90; CCPR1L=150; break; case 0x80: //robot part extrême droite CCPR2L=40; CCPR1L=100; break; case 0x0C: //robot part léger gauche CCPR1L=210; CCPR2L=230; break; case 0x06: //robot part moyen gauche CCPR1L=140; CCPR2L=180; break; case 0x03: //robot part beaucoup gauche CCPR1L=90; CCPR2L=150; break; case 0x01: //robot part extrême gauche CCPR1L=40; CCPR2L=100; break; } RB4=!RB4; if(a==1) { a=0; } } } void serial_init (void) { BRGH=1; SPBRG=25; SYNC=0; SPEN=1; TXEN=1; CREN=1; } void serial_putchar (char c) { while (TRMT==0) ; TXREG=c; } void serial_puts (const char s[]) { char i=0; while (s[i]!='\0') { serial_putchar(s[i]); i++; } } interrupt void isr (void) { if (RCIF==1) { commande=RCREG; a=1; } }