Définition du RS232 PIE1 - Peripheral interrupt enable register
(en banque 1)
RS-232 (parfois appelée EIA RS-232, EIA 232
ou TIA 232) est une norme standardisant une
voie de communication de type série.
Disponible sur presque tous les PC depuis
Utilisation des interruptions de
1981 jusqu'au milieu des années 2000, il est l'USART du microcontrôleur.
communément appelé le « port série ».
Le fil TX de la liaison RS232 est relié à la
La connectique de cette liaison se présente broche RB2/TX/CK du PIC, à travers une
fréquemment sous la forme du connecteur interface (MAX232 ou équivalent).
DE-9 ou DB-25, Les connecteurs DB-9 ont
Configuration du registre TRISC
rapidement remplacé les DB-25, pour des
raisons de taille de connecteur et d'économie broche RC6/RX/DT à configurer en entrée
de câblage.
broche RC7/TX/CK à configurer en entrée
USART = Universal Synchronous (bien que ce soit une sortie)
Asynchronous Receiver Transmitter
Initialisation du registre SPBRG et du bit
L'USART du PIC 16F877A gère deux modes : BRGH
La vitesse de transmission est 9600 bauds /
mode asynchrone
mode synchrone seconde, avec un quartz de 4 MHz :
SPBRG = D'25' (valeur du registre SPBRG)
Registres spéciaux utilisés par
l'USART : BRGH = 1 (bit 2 du registre TXSTA)
SPBRG - Baud rate generator (en banque 1) SYNC = 0 (bit 4 du registre TXSTA) : mode
TXSTA- Transmit status and control (en asynchrone
banque 1)
SPEN = 1 (bit 7 du registre RCSTA) :
RCSTA - Receive status and control (en utilisation du port série
banque 0)
Autorisation de l'interruption
TXREG - Transmit data register (en banque
GIE = 1 (bit 7 du registre INTCON) :
0)
autorisation globale des interruptions
RCREG - Receive data register (en banque 0)
PEIE = 1 (bit 6 du registre INTCON) :
Auquels s'ajoutent 3 registres, si les autorisation des interruptions des
interruptions de l'USART sont utilisées : périphériques
INTCON - Interrupt control register (banque RCIE = 1 (bit 4 du registre PIE1) : autorisation
0, 1, 2 ou 3) de l'interruption de l'USART
PIR1 - Peripheral interrupt flag register (en Autorisation de la transmission du port
banque 0) série
TXEN = 1 (bit 5 du registre TXSTA)
ORG 0x00
Dans la routine d'interruption : goto start
Sauvegarde du contexte org 0x04 ; Interrupt Vector
goto RCV_ISA
Ecriture dans le registre TXREG des 8 bits
de données à transmettre start:
Restauration du contexte BANKSEL TRISD
CLRF TRISD
LE TRAVAIL DEMANDE BANKSEL TRISC
BSF TRISC,7;TX
BCF TRISC,6 ;RX
Réaliser a l’aide du pic et la carte easypic un
programme qui permet de faire un affichage BANKSEL PORTD
sur un afficheur 7 segments les donnes MOVLW 0x81
transmises a partir d’un Pc.
MOVWF PORTD
MOVLW D'25'
LE PROGRAMME BANKSEL SPBRG
List p=16F877A ; processeur utilisé MOVWF SPBRG
#include <p16F877A.inc> BSF PIE1,RCIE;
__config _CP_OFF & _WDT_OFF & BSF INTCON,PEIE
_PWRTE_ON & _XT_OSC & _LVP_OFF & _CPD_OFF
& _DEBUG_OFF & _BODEN_ON BSF INTCON,GIE
;---------------------------------------- BCF PIR1,RCIF
TIME: EQU 0x30 BANKSEL PORTC
TIME1: EQU 0x31 CLRF FLAGS
RCV_DATA: EQU 0x20; donnée reçue BANKSEL TXSTA
FLAGS: EQU 0x21 ; drapeaux utilisateurs MOVLW 0x24
W_Save: EQU 0x22 MOVWF TXSTA
STATUS_Save: EQU 0x23 BANKSEL RCSTA
READY: EQU 0 ; Flag: RCV Data Ready MOVLW 0x90
FRAME: EQU 1 ; Flag: Frame Error MOVWF RCSTA
MOVLW 0xFC
BSF PORTA,1
ENVOI: CLRF PORTD
BANKSEL TXREG SWAPF RCV_DATA,W
movwf TXREG ANDLW 0X0F
BANKSEL PIR1 CALL TABLE
WaitTX: BCF STATUS,RP0
btfss PIR1,TXIF MOVWF PORTD
goto WaitTX BCF PORTA,2
BANKSEL FLAGS CALL DELAY5
NO_DATA: BSF PORTA,2
BTFSS FLAGS,READY MOVF RCV_DATA,W
GOTO NO_DATA btfsc STATUS,Z
clrf RCV_DATA
INCF RCV_DATA goto ENVOI
MOVF RCV_DATA,W ; reception donnée RCV_ISA:
BCF FLAGS,READY banksel STATUS_Save
BANKSEL PORTD movwf W_Save
BTFSC RCSTA,FERR movf STATUS,W
BSF FLAGS,FRAME clrf STATUS
BANKSEL RCREG movwf STATUS_Save
MOVF RCREG,W BCF FLAGS,FRAME ;
MOVWF RCV_DATA banksel RCSTA
BSF FLAGS,READY btfsc RCSTA, OERR
ANDLW 0X0F goto Overrunerror
call TABLE BANKSEL STATUS_Save
BCF STATUS,RP0 MOVF STATUS_Save,W
MOVWF PORTD MOVWF STATUS
BCF PORTA,1 SWAPF W_Save,F
CALL DELAY5 SWAPF W_Save,W
GOTO FIN RETLW 0X66
;---------------------------------- RETLW 0X6D
DELAY RETLW 0X7D
MOVLW D'250' RETLW 0X07
MOVWF TIME RETLW 0X7F
LOOP1 RETLW 0X6F
NOP RETLW 0X77
DECFSZ TIME,F RETLW 0X7C
GOTO LOOP1 RETLW 0X58
RETURN RETLW 0X5E
DELAY5 RETLW 0XF9
MOVLW D'255' RETLW 0X71
MOVWF TIME1 RETURN
LOOP5 ;----------------------------------
CALL DELAY
DECFSZ TIME1,F
GOTO LOOP5 FIN:
RETURN RETFIE
;---------------------------------- END
Overrunerror:
BANKSEL RCSTA
Conclusion
BCF RCSTA,CREN
Dans ce TP nous avons appris a configurer et
BSF RCSTA,CREN envoyé des données a travers la liaison USART du
pic en utilisant les interruptions.
TABLE
ADDWF PCL,F
RETLW 0X3F
RETLW 0X06
RETLW 0X5B
RETLW 0X4F