Bonjour,
Je galère depuis une semaine pour trouver un bug dans un programme Mikrobasic dont voici le détail :
PIC18F2420, compilateur Mikrobasic Pro V3.2, platine EasyPic5.
Je souhaite réceptionner une chaîne de 8 caractères avec délimiteur “OK” à condition que RC0 = 0 en utilisant UART1_Data_Ready() = 1 de la Lib UART1.
Si j’envoi la chaîne 12345678OK rien ne se passe, alors que si j’enlève la condition RC0 = 0 ça fonctionne.
Qui peux m’aider ?
Code:program Probleme 'PIC 18F2420 'EasyPic5 SW7.1 = 1, SW8.1 = 1, SW3.1 = 1 'Déclaration LCD_________________________________________ dim LCD_RS as sbit at RB4_bit LCD_EN as sbit at RB5_bit LCD_D4 as sbit at RB0_bit LCD_D5 as sbit at RB1_bit LCD_D6 as sbit at RB2_bit LCD_D7 as sbit at RB3_bit LCD_RS_Direction as sbit at TRISB4_bit LCD_EN_Direction as sbit at TRISB5_bit LCD_D4_Direction as sbit at TRISB0_bit LCD_D5_Direction as sbit at TRISB1_bit LCD_D6_Direction as sbit at TRISB2_bit LCD_D7_Direction as sbit at TRISB3_bit 'Déclaration des variables________________________________ Dim Rec as string[8] 'Main____________________________________________________ Main: UART1_Init(19200) 'Init UART1 Delay_ms(200) ADCON1 = $0F TRISC = $01 'RC0 en input Lcd_Init() 'Init LCD Lcd_Cmd(_LCD_CURSOR_OFF) LCD_OUT(1,1,"Test") delay_ms(1000) LCD_Cmd(_LCD_CLEAR) UART1_Write_Text("Ready") 'Fonctionne UART1_Write(10) ' Line Feed UART1_Write(13) ' Carriage Return 'Programme principal______________________________________ while true if TestBit(PORTC,0) = 0 then UART1_Write_Text(Rec) LCD_OUT(2,1,"P1 ") 'Fonctionne if (UART1_Data_Ready() = 1) then 'N'est pas executé si RC0 = 0 et UART_Data_Ready = 1 'Comment savoir si UART_Data_Ready = 1 UART1_Read_Text(Rec, "OK", 10) 'N'est pas executé UART1_Write_Text(Rec) 'N'est pas executé LCD_OUT(2,1,Rec) 'Ne fonctionne pas end if else LCD_OUT(2,1,"P3 ") 'Fonctionne end if wend 'Boucle sans fin___________________________________ end.
-----