Flags dans le registre INTCON

Signaler
Messages postés
86
Date d'inscription
jeudi 8 juillet 2004
Statut
Membre
Dernière intervention
27 juin 2007
-
Messages postés
87
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
4 avril 2008
-
Bonjour,

J'ai trouvé sur cette page une excellente routine de communication RS232 entre un PIC et un PC.
http://www.electronic-engineering.ch/microchip/projects/rs232/rs_test/rs_test.html

Seulement, cette routine est faite pour un PIC16F84. Je souhaiterais la modifier pour un PIC16F876.
Il faut donc retoucher les lignes suivantes :

#define TXport PORTA,0x00 ; RS232 output port, could be
#define TXtris TRISA,0x00 ; any active push/pull port

#define RXport PORTB,0x00 ; Needs to be an interrupt supervised
#define RXtris TRISB,0x00 ; port! When modify, set adequate
; flags in INTCON register.

Ici, les ports correspondants sont ra0 pour TX et rbO pour RX
Je voudrais donc y passer TX à la broche rc6 et RX pour la broche rc7
Est ce quelqu'un connait l'équivalent "flag dans le registre INTCON" pour ces broches ??

Merci d'avance de vos réponses
@++ Tahiti_bob

4 réponses

Messages postés
86
Date d'inscription
jeudi 8 juillet 2004
Statut
Membre
Dernière intervention
27 juin 2007
1
En fait, pour faire simple, "PORTA,0x00" correspond à la broche RA0 du pic, "PORTB,0x00" correspond à RB0,...
Je cherche l'équivalent pour les broches RC6 et RC7

Merci
@++ Tahiti_bob
Messages postés
87
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
4 avril 2008

allo tahiti_bob ca va pas ca le 16f84 na pas de usart il faut le faire,
mais avec un 16F876 tu as un usart interne la routine est pas la meme.
il faut faire le init du usart pour commencer

;//////////////// CALCUL DE LA VITESSE DU PORT COMM //////////////////////
#define FOSC D'20000000' ; <<< frequence du quartz[Hz], max. 20 MHz
#define BAUD D'19200' ; <<< vitesse du port serie [bit/sec]
#define BRGVAL (FOSC/(D'16' * BAUD))-1
; Pin RC6 (TX) & RC7 (RX)
;initialiser le usart
;----------------
init_usart
bsf STATUS,RP0 ; passer banque 1
bsf INTCON,PEIE ; autoriser interruptions périphériques


movlw B'00000100' ; mode haute vitesse
movwf TXSTA ; dans registre de contrôle
movlw BRGVAL ; valeur pour baud rate generator
movwf SPBRG ; dans SPBRG
bcf STATUS,RP0 ; passer banque 0
movlw B'10000000' ; module USART en service
movwf RCSTA ; dans registre de contrôle

Rx_Rs232_Sans_Int
Attend_Rx
btfss PIR1,RCIF ; on attend ce bit soit a 1 , ce qui signale une reception
goto Attend_Rx
movf RCREG,W


Transmet_Rs232 ; ce qui as ete recu va etre envoyer
movwf TXREG
bsf STATUS,RP0
bsf TXSTA,TXEN
Attend_Fin_Octet
btfss TXSTA,TRMT
goto Attend_Fin_Octet
bcf STATUS,RP0
goto RX_RS232_Sans_Int
;ca peu etre comme ca , ce que je fait j attend un octet et je le renvoi
jai pas faite de test en mplab mais je doit pas etre loin
Messages postés
86
Date d'inscription
jeudi 8 juillet 2004
Statut
Membre
Dernière intervention
27 juin 2007
1
Merci phenojeff de ta réponse.
Par contre, est ce que je suis obligé d'utiliser l'USART interne si le PIC en dispose d'un ? Je ne peux pas en "simuler" un avec le programme sur d'autres broches ?

Merci
@++ Tahiti_bob
Messages postés
87
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
4 avril 2008

re allo

oui tu peu faire ca
mais ca demande un peu plus de présition dans le calcul de tes routines

#define RXport PORTC,6
#define TXport PORTC,7
#define SET_RXport TRISC,6
#define SET_TXport TRISC,7

a++