salut, je suis débutant point de vue programmation PIC16F877A sous le compilateur PCWHD. Alors, mon travail consiste à afficher sur un écran LCD relié au PIC16F877A un message défilant, dont j'arrive à le faire, et c'est comme ça "veuillez entre le code" et ceci pour une porte de voiture, ainsi je n'arrive pas à taper le code que je veux qu'il soit masqué sachant que j'ai relié un clavier pour saisir le code correctement j’espère mais ceci ne marche pas malgré que mon programme soit opérationnel alors je ne sais pas ou est le problème alors l'aide sera le bienvenue et merci d'avance et voila mon programme que j'ai écrit:

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
#include "16F877A.h"
#use delay(clock=10M)
#byte PORTB= 0x06
#byte PORTC= 0x07
#byte TRISB= 0x86
#byte TRISC= 0x87
#byte PORTD= 0x08
#byte TRISD= 0x88
#bit E= PORTC.0
#bit RS= PORTC.1
#bit C1=PORTD.0
#bit C2=PORTD.1
#bit C3=PORTD.2
int touche;
void envoie_commande(char commande)
    {
      E=0;
      RS=0;
      PORTB=commande;
      E=1;
      delay_us(50);
      E=0;
    }
void envoie_caractere (char caractere )
   {
      E=0;
      RS=1;
      PORTB=caractere;
      E=1;
     delay_us(50);
      E=0;
   }
#int_timer0
void clavier()
{
   touche='\n';
   PORTD=0x08;//Selection de la ligne A
   if(C1==1){touche='1';while(C1==1);}
   if(C2==1){touche='2';while(C2==1);}
   if(C3==1){touche='3';while(C3==1);}
   PORTD=0x10;//Selection de la ligne B
   if(C1==1){touche='4';while(C1==1);}
   if(C2==1){touche='5';while(C2==1);}
   if(C3==1){touche='6';while(C3==1);}
   PORTD=0x20;//Selection de la ligne C
   if(C1==1){touche='7';while(C1==1);}
   if(C2==1){touche='8';while(C2==1);}
   if(C3==1){touche='9';while(C3==1);}
   PORTD=0x40;//Selection de la ligne D
   if(C1==1){touche='*';while(C1==1);}
   if(C2==1){touche='0';while(C2==1);}
   if(C3==1){touche='#';while(C3==1);}
}   
void init_LCD()
   {
      delay_ms(15);
      envoie_commande(0x3c);
      delay_ms(5);
 
      envoie_commande(0x3c);
      delay_ms(100);
 
      envoie_commande(0x0E);
      delay_ms(5);
 
      envoie_commande(0x01);
      delay_ms(5);
   } 
void main()
{
   TRISB=0x00;
   TRISC=0xFC;
   TRISD=0x87;
   setup_timer_0 (RTCC_DIV_128|RTCC_INTERNAL);
   enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
   init_LCD();
 
   while(true)
      {
      if(touche!='\n')
         {
         envoie_caractere(touche);
         touche='\n';
         }
 
      else envoie_commande(0x89);
            envoie_caractere("Veuillez entrer le code");
      }
 
 
}