Bonjour,
alors voilà, j'ai fais un montage avec un 16F877, et compilé avec mikroC.
Le montage est le suivant :
- un module LCD connecté sur 4 bis sur le portB
- des LEDS connectées sur le port D
- 2 interrupteurs switch connectés sur RC1 et RC2
Tout fonctionnait bien tant que je ne testais pas dans mon code l'état du bouton sur RC2, mais dès que j'ai ajouté les tests sur ce bouton, l'afficheur LCD m'affiche n'importe quoi comme caractères ! Je ne comprend pas le rapport, je débute en plus ...
En gros, voici le code qui fonctionne :
Ce code fonctionne nikelCode:void main(){ char oldstate = 0; char oldstate2 = 0; // BOUTON TRISC = 0xff; // LED PORTD=0; TRISD = 0; PORTD.F3=1; // LCD PORTB=0; TRISB = 0; LCD_Init(&PORTB); LCD_Cmd(LCD_CLEAR); LCD_Cmd(LCD_CURSOR_OFF); LCD_OUT(1,1,"Hello"); Delay_ms(2000); LCD_Cmd(LCD_CLEAR); LCD_Cmd(LCD_CURSOR_OFF); LCD_OUT(1,1,"Waiting ..."); do { LCD_OUT(1,1,"Waiting ... "); if (Button(&PORTC, 1, 1, 1)) { oldstate = 1; } if (oldstate && Button(&PORTC, 1, 1, 0)) { PORTD.F2 = ~PORTD.F2; oldstate = 0; LCD_Cmd(LCD_CLEAR); LCD_Cmd(LCD_CURSOR_OFF); LCD_OUT(2,1,"Bouton RC1 "); } } while(1); }
PAR CONTRE, si je rajoute uniquement le code suivant, tout merde !!
Là tout merdeCode:if (Button(&PORTC, 1, 1, 1)) { oldstate2 = 1; } if (oldstate2 && Button(&PORTC, 1, 1, 0)) { PORTD.F2 = ~PORTD.F2; oldstate2 = 0; LCD_Cmd(LCD_CLEAR); LCD_Cmd(LCD_CURSOR_OFF); LCD_OUT(2,1,"Bouton RC2"); }
Des idées ???
Merci
-----