Bonjour à tous,
Je programme en language C, j'utilise un PIC 16F877.
Je suis en train de réaliser un programme mettant en oeuvre la liaison USART.
Cependant j'ai quelques dificultées ou doutes sur mon programme.
Je souhaite donc réaliser une réception d'un octect par mon PIC, en mode Asynchrone.
Je l'ai testé mais il ne marche pas. Ma liaison RS232 fonctionne avec un autre programme.
J'ai des LEDS placées en sortie de mon PORTB. Le but de mon programme étant d'envoyer une valeur via le terminal, et au final voir allumées les LEDS correspondantent sur mon PORTB.
Exemple: j'envois la valeur 4, j'aurais donc la LED du PORTB.2 allumée...
Apparement dans mon programme RCIF ne passe jamais à 1, et je ne sais pas pourquoi.
Voici mon programme avec les commentaires:
Code:void main (void) { ADCON1=0x06; PORTA=0; TRISA=0x00; PORTB=0; TRISB=0b00000000; PORTC=0; TRISC=0b11000000; //RC7 en entré et RC6 en entré. SPBRG=0x33; // Quartz 8Mhz , BRGH=1 donc SPBRG = 51; TXSTA=0xb0000100; // Pas de 9ème bit. Emission désactivée. Mode Asynchrone. BRGH=1. TRMT=0. TX9D=0. RCSTA=0x10010000; // Reception continue activée. ADDEN=0. FERR=0. OERR=0. RX9D=0. SPEN=1. for(;;) { if(RCIF==1) // Quand l'octect est reçu RCIF passe à 1. Donc à ce mmt là je lit RCREG. Mon PORTA prend la valeur de RCREG. { PORTB=RCREG; } } // Je fais cela en boucle. }
Merci d'avance.
Laurent
-----