Bonjour,
je veux faire liaison série.
j'envoie un octet sur l'entrée de mon pic(à la patte Rx=réception), j'allume une led dès que je reçois un caractère
je n'utilise pas de timer ni d'interruptions. Je veux les bits j'ai pas besoins du 9ème bit.
je suis en mode asynchrone avec une vitesse de 9600 bauds.
Vos suggestions et remarques sont les bienvenues.
Merci à tout le monde.
Voici mon code:
;***************************** *
list p=16f873 ; list directive to define processor
#include <p16f873.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _XT_OSC
;***** VARIABLE DEFINITIONS
;CBLOCK 0x00C
;ENDC
;***************************** * ***********************
RESET_VECTOR CODE 0x000 ; processor reset vector
;*****************************
; Programme Principal *
;*****************************
MAIN CODE
start
;SPBRG=Baud Rate Generator Register
nitA
bcf STATUS,RP0
bcf STATUS,RP1
clrf PORTA
bsf STATUS,RP0
bcf STATUS,RP1
movlw 0x06
movwf ADCON1
movlw b'00000000'
movwf TRISA
InitC
clrf PORTC
movlw 0x06 ; PORTC = digital input/output
movlw b'10000000' movwf TRISC
;Procédure suivu pour la Réception asynchrone
movlw D'25' ;25 pour vitesse de 9600 Bauds
movwf SPBRG ;Vitesse 9600 bauds
bsf TXSTA,BRGH
bcf TXSTA,SYNC ;mode asynchrone
bsf RCSTA,SPEN ;serial port enable
bcf PIE1,RCIE ;pas d'interruption sur reception
bcf RCSTA,RX9
bsf RCSTA,CREN ;reception continue enable
goto Reception
;fin du Programme Principal
Reception
btfss PIR1,RCIF
goto Reception
movf RCREG,W
goto allume_led
;return
allume_led
bsf PORTA,1 ;la led est au PORTA,1
goto Reception
END ;directive fin de programme
-----