Bienvenu(e)! Identification Créer un nouveau profil

Recherche avancée

Envoi de 7 BIT en rs232

Envoyé par staifo 
Envoi de 7 BIT en rs232
mardi 23 août 2011 11:42:55
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

Re: Envoi de 7 BIT en rs232
mardi 23 août 2011 22:49:32
Salut,

Tu dois pouvoir faire une communication sur 7bits sans soucis, le seul problème est qu'en réception, tu remplis l'octet "rs232" par la gauche et au fur et a mesure que les bits arrivents tu les déplaces vers la droite. Donc quand le premier bit arrive. le bit de poids faible, il est placé a la place du bit de poids fort dans le buffer de réception. et au terme du 8eme bit, a force de faire un "RRF" il se déplace pour arriver au bit de poids faible.

Pour travailler sur 7bits tu dois donc ajouter une rotation supplémentaire après "goto rs_rxblc ;":
bcf STATUS,C ; on efface le carry (sauf si tu souhaites que le Bit de poids fort soit a 1 dans ce cas là utilise BSF)
rrf rs232,f ; on déplace tous les bits vers la droite et le bit C passe dans rs232


Dis moi si ça marche

Benjamin

.: [www.roboticus.org] :. Control your own world !
Re: Envoi de 7 BIT en rs232
mercredi 24 août 2011 10:28:22
Bonjour
Merci beaucoup pour votre répponce en faite j’ai refais le programme avec 7 sur compteur2 sur rx et tx et ça à marché ,et oui comme vous dite j’ai eu tous les chiffre que je reçoit en double c a d si la machine veux envoyer 1 j’ai 2 et si la machine veux envoyer 3 c 6, danc j’avais compris que le rs232 ne fais pas un rrf 8 fois c’est pour quoi j’ai toujours le bit faible en retard ex : 0000 0001 -----------? 0000 0010
Merci beaucoup
Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.

Cliquez ici pour vous connecter