Bonjour
J’ai travailler sur la communication en rs232 comme décrit sur le site et ça marche très bien j’ai bien appris a l’utilisé, maintenant j’ai une machine qui communique en rs232 9600 BOOD et 7 bit , est ce que le faite de changer le compteur (compteur2) suffis pour que ça marche ou il y a autre chose a modifier ( j’ai mis 7 sur le compteur2 en tx et en rx mais ça n’a pas marché je reçoit des information erronés)
rs_tx
movlw 0x41
movwf rs232 ; on copie le registre W dans rs232
movlw 7 ;
movwf compteur2 ; compteur pour envoyer les 8 bits
bcf PORTA,1 ; bit pour dire qu'on démarre, on place tx à 0
call rs_tempo ; on cadence le signal
rs_txbc
bcf STATUS,C
rrf rs232,f ; le bit à envoyer est placé dans C
btfsc STATUS,C ; Si c'est 1 :
goto sendone ; on envoie 1
bcf PORTA,1 ; sinon on envoie 0
goto sendnull ; pour sauter la partie sendone
sendone
bsf PORTA,1 ; on envoie 1
sendnull
call rs_tempo ; on cadence
decfsz compteur2,f ; On a effectué un bit, on le retire du compteur
goto rs_txbc ; tant qu'on a pas fini on continue
bsf PORTA,1 ; bit de stop
call rs_tempo ; tempo final
return ; la transmission est finie
rs_prog
btfsc PORTA,2 ; on attend le bit de start, on ne continuera que quand il sera la
goto tempo_debug ; on tourne en boucle en l'attendant
call rs_tempo ; on attend le premier bit
movlw 7 ;
movwf compteur2 ; compteur pour recevoir 8 bits
clrf rs232 ; le registre rs232 est mis a 0, c'est dans lui qu'on va recevoir l'octet
rs_rxblc ;
bcf STATUS,C ; on efface le carry
btfsc PORTA,2 ; si le bit est a 1
bsf STATUS,C ; dans ce cas on place C à 1
rrf rs232,f ; on déplace tous les bits vers la droite et le bit C passe dans rs232
call rs_tempo ; on attend le prochain bit
decfsz compteur2,f ; on décompte les bits reçu
goto rs_rxblc ; jusqu'à ce que les 8 bits soit reçu
merci