1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| #include <16F877.h>
#use delay(clock=4000000)
#fuses hs,nowdt,noprotect
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
#include <REG16F.h>
#include <lcd.c>
#define use_portd_lcd true
lONG DATA=0, CODE=0;
INT8 i=0,j=0,nb_bar=8,pas = 2;
INT1 FLAG_DONNEE=0;
int8 tab_DONNEE[12];
char c;
char d=0;
int aux ,k;
#INT_CCP1
void interep()
{
DATA=RC1;
CODE=CODE+(DATA<<i);
i++;
//putc('A');
if(i==11){CODE=(CODE>>1)&0xFF;//printf("%lu ",H);
i=0;
tab_DONNEE[j]=CODE;//putc(CODE);//putc(tab_DONNEE[j]);
CODE=0;
pas--;
if(pas == 0)
{pas = 2;
j++;//putc(j+0X30);
}
}
}
void init()
{
trisc=0xff;
CCP1CON=4;
CCP1IE=1;
//CCP1IF=1;
delay_ms(1000);
PEIE=1;
GIE=1;
}
void main()
{
lcd_init();
init();
printf(lcd_putc," ISET SOUSSE \n 2011");
WHILE(1){ //putc('A');
if(j==9){ FLAG_DONNEE=1;tab_DONNEE[j]='\0';j=0;} //printf("%s \r",tab_DONNEE);
if(FLAG_DONNEE==1){FLAG_DONNEE=0;
for (k=0;k<9;k++)
{
aux=tab_DONNEE [k];
switch ( aux)
{
case 0x51: tab_DONNEE [k]='Q'; break;
case 0x48: tab_DONNEE [k]='H'; break;
case 0x50: tab_DONNEE [k]='P'; break;
case 0x43: tab_DONNEE [k]='C'; break;
case 0x30: tab_DONNEE [k]='0'; break;
case 0x31: tab_DONNEE [k]='1'; break;
case 0x32: tab_DONNEE [k]='2'; break;
case 0x33: tab_DONNEE [k]='3'; break;
case 0x34: tab_DONNEE [k]='4'; break;
case 0x35: tab_DONNEE [k]='5'; break;
case 0x36: tab_DONNEE [k]='6'; break;
case 0x37: tab_DONNEE [k]='7'; break;
case 0x38: tab_DONNEE [k]='8'; break;
case 0x39: tab_DONNEE [k]='9'; break;
}
}
puts(tab_DONNEE);
printf(lcd_putc,"\f %s",tab_DONNEE );
delay_ms(200);
lcd_putc("\n Patientez SVP");
delay_ms(3000);
lcd_init();
c = getc();
if ((c!='o')){
lcd_putc(" effectuer \n en double");}
//printf(lcd_putc,"\f %s",msg_serie);
else{ lcd_putc(" ----- OK ------");}
delay_ms(2000);
lcd_init();
}
}
} |
Partager