bonjour, j'ai écrit un programme qui devrait calculer la valeur efficace d'une tension périodique sur la voie 0 et la valeur d'une autre tension continue sur la voie 1 ensuite afficher ces valeurs sur un écran LCD, mais rien ne fonctionne.
est-ce que quelqu'un aurait-il une idée pourquoi ? le programme se trouve dans la pièce jointe.
merci d'avance.
Code:#pragma config FOSC = HS #pragma config WDT = OFF #pragma config PBADEN = OFF #pragma config LVP = OFF #pragma config PWRT = ON #pragma config DEBUG= OFF sbit LCD_RS at RD4_bit; sbit LCD_EN at RD5_bit; sbit LCD_D4 at RD0_bit; sbit LCD_D5 at RD1_bit; sbit LCD_D6 at RD2_bit; sbit LCD_D7 at RD3_bit; sbit LCD_RS_Direction at TRISD4_bit; sbit LCD_EN_Direction at TRISD5_bit; sbit LCD_D4_Direction at TRISD0_bit; sbit LCD_D5_Direction at TRISD1_bit; sbit LCD_D6_Direction at TRISD2_bit; sbit LCD_D7_Direction at TRISD3_bit; int i; char V1[4], V2[4]; float val, x, y, v, eff, K, T; void main() { while(1) { CONFIG1H=0x4c; CONFIG1L=0x24; ADCON0=0x03; ADCON1=0; ADCON2=0x95; TRISA = 0XFF; PORTD = 0; TRISD = 0x00; LCD_Init(); ADC_Init(); LCD_Cmd(_LCD_CURSOR_OFF); LCD_Cmd(_LCD_CLEAR); Lcd_Chr(1,16,'V'); Lcd_Chr(2,16,'A'); v=0; for (i=0 ; i=670 ; i++) { x = ADC_Read(0); x*=0.004887585532746823069403714565; y=x*x; v=v+y; } T = (v/671); // T = Veff= sommes des échantillons au carré par le nombre d'échantillons K= ADC_READ(1); K*=0.004887585532746823069403714565; floattostr(T,V1); floattostr(K,V2); Lcd_Out(1,1,"V1"); Lcd_Out(2,1,"V2"); } }
-----