Bonjour,

svp j'ai un problème au niveau de la programmation du port ps2.
Mon projet est bloqué et je ne sais pas comment corriger de mon code et où est mon erreur.

c'est mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();
          }
 
       }
}