Bonjour,
Tout dabord bonne année !
J'ai un petit probléme avec mon PIC18F2550, il semblerait qu'il se "bloque" lorsque j'utilise une fonction d'initialisation de lcd.
Un simple programme tel que celui ci:
ne m'allume jammais la PIN_A4... Ce qui signifie qu'il n'a pas effectué lcd_init.Code:void main () { lcd_init(); output_high(PIN_A4);//verification que lcd_init s'est bien effectué lcd_display("hey"); }
Par contre un programme de clignotement du genre:
fonctionne parfaitement !Code:void main() { int i=0; for(i=0;i<100; i++){ delay_ms(100); output_high(PIN_A4); delay_ms(100); output_low(PIN_A4); } }
La librairie LCD.C ne contient pas de boucles infinie, et les instructions y sont trés simples. La voici:
Avez vous une idée de pourquoi la fonction lcd_init ne s'execute jammais et bloque tout ? Je n'est aucune erreur à la compilation...Code:#define rs PIN_A1 #define rw PIN_A2 #define e PIN_A3 void lcd_init(); void lcd_clear(); void lcd_display(unsigned char); void lcd_data(unsigned char); void lcd_instruction (unsigned char); void lcd_init() { output_low(rs); //data not commnad. output_low(rw); //write not read. output_low(e); //disable. lcd_clear(); //clear display } void lcd_display(unsigned char data) { lcd_data(data); } void lcd_instruction (unsigned char x) { output_low(rs); //data not commnad. output_low(rw); //write not read. output_b(x); //data to bus. output_high(e); //enable. output_low(e); //disable. } void lcd_data (unsigned char x) { output_high(rs); //data not commnad. output_low(rw); //write not read. output_b(x); //data to bus. output_high(e); //enable. output_low(e); //disable. } void lcd_clear () { output_low(rs); //data not commnad. output_low(rw); //write not read. output_b(0x01); //data to bus. output_high(e); //enable. output_low(e); //disable. }
Merci
-----