Comunication série entre 2PIC

abdellahchakir Messages postés 16 Statut Membre -  
abdellahchakir Messages postés 16 Statut Membre -
Bonjour,

j'ai un mini projet en info indus qui suppose mettre en place un programme en code assembleur( MP LAB)
qui assure la communication série USART asynchrone entre deux PICs ,le premier PIC envoie un caratere le 2ème recoit ce caractere et le met dans un registre( PORTD) ,le conteu de ce dernier sera affiché par la suite dans 1 afficheur LCD , pour le moment j'ai fait 2 programmes pour le 2 PIC ,mais mon problème ce que j'arrive

a recevoir rien sur le PORTD lors de la simulation sur PROTEUS , j'arrive pas a trouver l'erreur dans le programme ,s'il vous plait aider mois a localiser l'erreur:

PROGRAMME PIC1:EMMISSION

listp=16877A
#include<p16F877A.inc>

cblock 0x20
compteur1
compteur2
endc

org 0x00
goto start
org 0x05
start

banksel TRISC
movlw B'10000000'
movwf TRISC

banksel PORTC
clrf PORTC

;----------------------------------------------------------------- INITIALISATION USART-----------------------------------------------------------------------------------------------

banksel TXSTA
movlw B'00000100' ; mode asynchrone, émission 8 bits haute vitesse
movwf TXSTA ; dans registre TXSTA
banksel SPBRG
movlw 0x19 ; valeur calculée de SPBRG
movwf SPBRG ; dans baud rate generator
banksel RCSTA
movlw B'10000000' ; module en service, réception 9 bits
movwf RCSTA ; dans registre RCSTA
debut
movlw 0xFF
call emission
goto debut

;------------------------------------------------------------------------EMISSION---------------------------------------------------------------------------------------------------------

emission
banksel TXSTA
bsf TXSTA,TXEN
movwf TXREG ; transmission
toto
btfss TXSTA,TRMT ; transmission terminée?
goto toto ; non, attendre
bcf TXSTA,TXEN ; oui, fin de transmission
call tempo

return ; et retour

;--------------------------------------------------------------------------Tempo-----------------------------------------------------------------------------------------------------
tempo
movlw 0x20
movwf compteur2
boucle2
movlw 0xFF
movwf compteur1
boucle1
decfsz compteur1,1
goto boucle1
decfsz compteur2,1
goto boucle2
return

end

PROGRAMME PIC1:RECEPTION

listp= 16F877A
#include <p16F877A.inc>

cblock 0x00

endc

org 0x00
goto start
org 0x05

start
banksel TRISC
movlw B'10000000'
movwf TRISC

banksel PORTC
clrf PORTC

banksel TRISD
clrf TRISD

banksel PORTD
clrf PORTD

;----------------------------------------------------------------- INITIALISATION USART-----------------------------------------------------------------------------------------------

banksel TXSTA
movlw B'00000100' ; mode asynchrone,
movwf TXSTA ; dans registre TXSTA
banksel SPBRG
movlw 0x19 ; valeur calculée de SPBRG
movwf SPBRG ; dans baud rate generator
banksel RCSTA
movlw B'10000000' ; module en service, réception 8 bits
movwf RCSTA ; dans registre RCSTA

boucle
call reception
movwf PORTD
goto boucle

;------------------------------------------------------------------------RECEPTION---------------------------------------------------------------------------------------------------------

reception

banksel RCSTA
bsf RCSTA,SREN

toto
btfsc RCSTA,SREN
goto toto

banksel RCREG
movf RCREG,W

return

end

merci d'avance

1 réponse

abdellahchakir Messages postés 16 Statut Membre 28
 
Bonjour,

si qlq est intéressé par ce programme -il est déja mis en service et il marche bien

en pratique- il n'a qu'a me faire signe.

@ plus
1