je viens de réaliser un programme en langage C à l'aide du compilateur
picc en utilisant un PIC16F887. mon programme doit contenir les modules adc et RS232 pour convertir 20 entrées analogiques. j'ai essayé pour une seule entrée mais le programme n'affiche que la partie entière. voila le code:
#include <16F887.h> // change header
#fuses INTRC_IO, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)
#byte PORTA= 0x05
#byte PORTB= 0x06
#byte PORTC= 0x07
#byte PORTD= 0x08
#byte TRISA= 0x85
#byte TRISB= 0x86
#byte TRISC= 0x87
#byte TRISD= 0x89
#byte TXSTA= 0X98
#byte RCSTA= 0X18
#BYTE SPBRG= 0x99
#byte ADRESL=0x9E
#byte ADRESH=0X1E
#BYTE TXREG= 0x19
#byte ADCON1=0x9F
#byte ADCON0=0x1F
#byte RCSTA= 0x18
#byte ANSEL= 0x188
#byte PIE1 = 0x8c
#byte PIR1 = 0x0c
#BYTE SPBRG=0x99
#BYTE TRISB=0x86
#BYTE TRISA=0x85
#BYTE PCON= 0x8E
#BYTE PORTA=0x05
#bit GODONE= ADCON0.1
#bit ADFM = ADCON1.7
#bit VCFG0=ADCON1.4
#bit VCFG1=ADCON1.5
#bit adcs1=ADCON0.7
#bit adcs0=ADCON0.6
#bit ADON=ADCON0.0
#bit ADIE=PIE1.6
#bit ADIF=PIR1.6
#BIT RCIE=PIE1.5
#BIT TXIF=PIE1.4
#BIT RA1=PORTA.0
#BIT RA2=PORTA.1
#BIT TRMT=TXSTA.1
#define spbrg_value 25
float resultat;
void init_adc()
{
SPBRG = spbrg_value;
TXSTA = 0x24;
RCSTA = 0x90;
setup_adc(ADC_clock_internal);
setup_adc_ports(ALL_ANALOG);
set_adc_channel(0);
delay_ms(500);
}
void main()
{
TRISC = 0x00;
TRISA = 0b00111100;
ADCON0 = 0b00010000;
ADCON1 = 0b00001010;
ADON = 1;
ADIF=0;
ADIE=1;
PIE1 = 1;
//GIE = 1;
init_adc();
while(true)
{
delay_us(50);
GODONE = 1;
while(GODONE==1);
resultat=read_adc()/51.0; //205.7;
setup_adc(ADC_OFF);
delay_us(1000);
ADON=0;
TXREG =resultat;
//putc(resultat);
//printf(,"%f\n",resultat);
while(TXIF==0);
delay_ms(10);
}
}
svp j'ai besoin de votre aide
merci d'avance
-----