Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CURSO DE
MICROCONTROLADORES
MICROCONTROLADORES
PIC16F87X (...y XII)
Fernando Remiro Domínguez
Profesor de Sistemas Electrónicos
IES. Juan de la Cierva
www.terra.es/personal/fremiro
60
RESISTOR
UNIVERSAL como asíncrono full dúplex que pue- ● Asíncrono( Full duplex )
SYNCHRONOUS de comunicar con los dispositivos pe- ● Síncrono-Master (half duplex)
ASYNCHRONOUS riféricos como el terminales de CRT ● Síncrono-Slave (half duplex)
RECEIVER TRANSMITTER y los ordenadores personales, o pue- Poniendo a "1" el bit SPEN (RCS-
(USART) de configurarse como un sistema sín- TA <7>), y los bits TRISC <7:6> (RC7
El módulo transmisor (USART) crono half duplex que puede comu- se configura como entrada y RC6 co-
es otro de los dos puertos serie de los nicar con otros microcontroladores, mo salida), se configura RC6/TX/CK y
que dispone esta familia de micro- con dispositivos periféricos como RC7 /RX/DT como USART. En modo
controladores. Los módulos de I/O. A/D o D/A circuitos integrados, EE- síncrono se utilizan formatos estándar:
(USART también se conocen como PROMs serie etc. un bit de Start y ocho bits o nueve bits
Serial Communications o Interface o El USART puede configurarse en de datos y un bit de Stop, siendo el más
SCI). El USART puede configurarse los modos siguientes: común el de ocho bits de datos.
56-70 MICROCONTROLADORES2 17/6/04 13:16 Página 61
bit 7: CSRC: Bit de selección de fuente del reloj bit 7: SPEN: Bit de habilitación del puerto serie
Modo Asíncrono 1 = Habilita puerto serie (configura patillas RC7/RX/DT y
Sin importancia RC6/TX/CK para el puerto serie)
Modo Síncrono 0 = Deshabilita puerto serie
1 = Modo master (reloj generado internamente para BRG bit 6: RX9: Habilita recepción de 9-8 bits
(Generador de Baudios)) 1 = Selecciona 9 bits de recepción
0 = Modo esclavo (fuente de reloj externa) 0 = Selecciona 8 bits de recepción
bit 6: TX9: Habilita transmisión de 9-8 bits bit 5: SREN: Bit de habilitación de recepción única
1 = Selecciona la transmisión de 9 bits Modo asíncrono
0 = Selecciona la transmisión de 8 bits Este modo no se usa
bit 5: TXEN: Bit de habilitación del transmisor Modo Síncrono master
1 = Habilita transmisión 1 = Habilita una recepción única
0 = Deshabilita transmisión 0 = Deshabilita una recepción única
Nota: SREN/CREN anula TXEN en modo SYNC. Este bit se borra después de completar la recepción
Modo Síncrono esclavo
bit 4: SYNC: Bit de selección del modo USART En este modo no se usa
1 = Modo Síncrono bit 4: CREN: Bit de habilitación de recepción continua
0 = Modo Asíncrono Modo Asíncrono
bit 3: Sin implementar: En lectura es'0' 1 = Habilita recepción continua
bit 2: BRGH: Bit de selección del rango de baudios alto 0 = Deshabilita recepción continua
Modo Asíncrono Modo Síncrono
1 = Alta velocidad 1 = Habilita recepción continua hasta que el bit CREN sea
0 = Baja velocidad borrado (CREN anula SREN)
Modo Síncrono 0 = Deshabilita la recepción continua
No se usa este modo bit 3:ADDEN: Bit de dirección
bit 1: TRMT: Bit de estado del registro de desplazamiento del Modo Asíncrono con 9 bits (RX9=1)
transmisor (TSR) 1= Activa la detección de dirección, activa la interrupción y des-
1 = TSR vacío carga el buffer de recepción al activarse RSR<8>
0 = TSR lleno 0= Desactiva la detección de dirección, todos los bits son recibidos
bit 0: TX9D: Noveno bit de datos de transmisión. Se puede y el noveno bit puede utilizarse como bit de paridad.
emplear como bit de paridad. bit 2: FERR: Bit de error de empaquetamiento
1 = Error de empaquetamiento (Puede actualizarse al leer el
registro RCREG y recibir el siguiente byte)
GENERADOR DE BAUDIOS registro SPBRG. La 0 = No hay error
DEL USART (BRG). frecuencia en baudios del bit 1: OERR: Bit de error de desbordamiento
En el protocolo asíncrono RS-232 generador depende del bit 1 = Error de desbordamiento (puede ser borrado al borrar CREN)
la frecuencia en baudios a la que se BRGH (TXSTA<1>). Si 0 = No hay desbordamiento
realiza la transferencia se debe BRGH=0 se trabaja a baja bit 0: RX9D: Noveno bit de datos de recepción. Se puede emplear
efectuar a un valor normalizado: 330, velocidad y si BRGH=1 se como bit de paridad
600,1.200, 2400, 4800, 9600, 19.200, trabaja a alta velocidad.
38.400, etc. Para generar esta Según este bit se obtendrá el valor de consiste de un contador/divisor de
frecuencia, el USART dispone de un una constante K necesaria para frecuencia de 8 bits controlado por el
generador de frecuencia en Baudios, determinar la frecuencia de registro SPBRG (99H). De tal
BRG, cuyo valor se controla por el funcionamiento. manera que la frecuencia de
contenido del registro SPBRG. Este generador sirve tanto para el transmisión se calcula de acuerdo a la
Además del valor X cargado en el modo síncrono como el asíncrono y siguiente tabla:
Bus de Datos
TRANSMISIÓN ASÍNCRONA
Figura 3
Escritura en TXREG
Palabra 1
Salida BRG
(Reloj desplaz.)
Pin RC6/TX/CX Bit de Start Bit 0 Bit 1 Bit 7/8 Bit Stop
PALABRA 1
Bit TXIF
(Flag de Buffer vacio)
Palabra 1
Bit TRMT Transmite Reg. de desplazamiento
(Flag reg. desplazamiento
vacío)
64
RESISTOR
Figura 4
Escritura en TXREG
TRANSMISIÓN ASINCRONA CONTINUA
PALABRA1 PALABRA2
bit TRMT Transmite Reg. desplazamiento Transmite Reg. desplazamiento
(flag regi.desplazamiento)
EL USART EN MODO ●Inicializar el registro SPBRG con el veno bit (si está habilitado) y com-
RECEPCIÓN ASÍNCRONA` valor apropiado según los cálculos re- probar si ha ocurrido un error duran-
En el modo de recepción, los datos alizados. Si se desea el margen alto se te la recepción.
son recibidos por la patilla RC7/RX/DT pondrá a uno el bit BRGH. ●Leer el octavo bit recibido y dar lec-
y se introducen en serie en el registro ●Habilitar el puerto asíncrono borran- tura al registro RCREG para conocer
RSR; después de recibir el bit de Stop do el bit SYN y poniendo a uno el si el dispositivo se ha direccionado.
los datos acumulados en este registro se SPEN. ●Si ha ocurrido un error borrarlo po-
cargan en el de datos RCREG (si está ●Habilitar la interrupción (si se desea) niendo a cero el bit CREN.
vacío). Cuando la transferencia se ha poniendo a uno el bit RCIE. Si el dispositivo ha sido
completado, el bit RCIF (PIR1 <5>) ●Poner a uno el bit RX9 para habilitar direccionado, borrar el bit ADDEN
pone a uno. La interrupción puede 9 bits de recepción. para permitir que los datos puedan
habilitarse o deshabilitarse colocando a ●Habilitar la recepción poniendo a uno leerse del buffer receptor
uno o a cero, respectivamente, el bit el bit CREN.
RCIE (PIE1 <5>). El bit RCIF se borra ●El flag RCIF subirá a uno cuando MODO SÍNCRONO
cuando el registro RCREG se ha leído se complete la recepción. Este modo de trabajo tiene dos
(se "vacía" el registro). Para configurar ●Se ocasionará una interrupción si es- posibles formas de configuración, como
el puerto como receptor hay que seguir tá habilitado el bit RCIE. master y como esclavo. En el modo
los siguientes pasos: ●Leer el registro RCSTA, cargar el no- master la transmisión y recepción no
56-70 MICROCONTROLADORES2 17/6/04 13:16 Página 65
OERR FERR
CREN
SPBRG P64
o Msb Registro RSR LSb
tienen lugar al mismo tiempo, cuando se el bit TXEN del registro TXSTA<5>, si ●Habilitar la transmisión poniendo a
transmite un dato, la recepción es se borra durante una transmisión, ésta uno el bit TXEN.
inhibida y viceversa. En la transmisión el será abortada y reseteado el transmisor. ●Si se ha habilitado la transmisión de
registro de desplazamiento, TSR Para iniciar una transmisión es 9 bits, el noveno se cargar en el regis-
(Transmit Shift Register), obtiene los necesario seguir los siguientes pasos: tro TX9D.
datos del registro de lectura/escritura ●Inicializar el registro SPBRG con el ●La transmisión se iniciar al
TXREG, pero éste no se carga hasta que valor apropiado calculado. cargar los datos en el registro
el último bit de la anterior carga no haya ●Habilitar el puerto master asíncrono TXREG.
sido transmitido; cuando esto suceda el colocando a uno los bits SYN, SPEN
TSR se vuelve a cargar con el nuevo dato y CSRC. EL USART EN MODO MASTER
del registro TXREG (si está disponible) ●Si se desea emplear la interrupción, SÍNCRONO
éste se vacía y se genera una interrupción habilitarla poniendo a uno el bit TXIE. Para seleccionar el modo receptor
(si está habilitada por el bit TXIE, ● Si se desea una transmisión de nueve master hay que poner a uno el bit
PIE1<4>. La transmisión se habilita por bits, el noveno se cargar en el bit TX9. SREN (RCSTA<5> o habilitar el
56-70 MICROCONTROLADORES2 17/6/04 13:16 Página 66
Carga RSR
RCIF
Nota.- Este diagrama de tiempos muestra un byte de datosseguido de un byte de dirección. El byte de datos no se lee en el RCREG (buffer de rección)
porque ADDEN = 1
Carga RSR
Bit 8 = 1. Byte de Dirección Bit8 = 0, Byte de Datos PALABRA1
RCREG
Lectura
RCIF
Nota.- Este diagrama muestra un byte dirección seguido por un byte de datos. El byte de datos no se lee eb RCREC (Buffer recptor)
porque ADEN no se ha actualizado y todabía = 0
66
RESISTOR
CREN (RCSTA<4>). El dato es
tomado de la patilla RC7/WDT por
●Inicializar el registro SPBRG con el
valor apropiado de baudios.
a uno cuando la recepción haya fina-
lizado si está habilitada por el bit
cada flanco de caída del reloj , si el bit ●Habilitar el puerto master asíncrono RCIE.
SREN está a uno, sólo se recibir una colocando a uno los bits SYN, SPEN ●Leer el registro RCSTA y cargar el
palabra, pero si se borra el bit CREN la y CSRC. noveno bit (si está habilitado) y com-
recepción ser continua. Después del ●Asegurarse de que los bits CREN y probar si ha ocurrido un error duran-
último impulso de reloj, el dato SREN están borrados. te la recepción.
recibido en el registro de ●Si se desea emplear la interrupción ●Leer el octavo bit recibido y dar lec-
desplazamiento RSR será transferido habilitarla poniendo a uno el bit RCIE. tura al registro RCREG.
al RCREG (si está vacío). Una vez ●Si se desean nueve bits poner a uno ●Si ha ocurrido un error borrarlo po-
haya terminado la recepción se originar el bit RX9. niendo a cero el bit CREN.
una interrupción si ésta está habilitada, ●Si sólo se desea una recepción única,
RCIE (PIE1 <5>). poner a uno el bit SREN; para recep- MODO ESCLAVO SÍNCRONO
Los pasos a seguir para iniciar la ción continua poner a uno el bit Este modo de trabajo difiere del
recepción en modo master son las CREN. modo master, pues la señal de reloj de
siguientes: ●El flag de interrupción RCIF se pone desplazamientos es proporcionada
Q1 Q2Q3 Q4 Q1Q2 Q3Q4 Q1Q2 Q3Q4 Q1Q2Q3Q4 Q1Q2 Q3Q4 Q3 Q4 Q1Q2Q3Q4 Q1Q2Q3Q4 Q1Q2 Q3Q4Q1Q2Q3Q4Q1 Q2Q3Q4 Q1Q2Q3Q4
Escritura en
Reg. TXREG
bit TXIF
(Flag de Interrupción)
bit TRMT
"1" "1"
bit TXEN
VCC
C4 C5
1µF 1µF U1
1 9
C1+ 9
2 10
V+ 10
3 11 RC6
C1- T1IN
4 12 RC7
C2+ R10UT
DB9 5 13 RXPC
MICROCONTROLADORES
C6 C2- R1IN
6 14 TXPC
1µF V- T1OUT
1
5
9
4
8
3
7
2
6
7 15
7 GND
8 16
8 VCC
RXPC C3
MAX232
C7 10nF
TXPC
1µF
Vcc= 5V
VCC
VSS
C2 27 pF
RC0 RC7
Figura 10.- Circuito de aplicación para
RC1 RC6 comprobar el funcionamiento del USART
68
RC2 RC5
RC3 RC4 del PIC16F876 y el puerto serie del
ordenador.
RESISTOR
MICROCONTROLADORES
Figura 16.- Hyperterminal. Ejemplos de conexiones
Figura 15 .-Hyperterminal. Pantalla de trabajo configuradas
cionar HyperTerminal. Se advierte recto a Com2, figura 13. Se va a utili- conexión, para comenzar la
que no se trata de un programa, si- zar el puerto serie Com2 para comu- comunicación simplemente ha de
no de una carpeta cuyo contenido es nicar el ordenador y el microcontro- ejecutar el icono de la conexión
un único programa denominada Hy- lador. También se puede elegir el previamente configurada tal como se
pertrm. Cada vez que se ejecuta el COM1. muestra en la figura 16.
programa Hypertrm se le pide al 4. Aparece una pantalla con las El programa monitor232.asm
usuario la información suficiente pa- Propiedades de COM. Seleccionar las configura el USART para trabajar a
ra crear en la carpeta HyperTermi- apropiadas para el sistema utilizado. Para 9.600 baudios, con un bit de Stop y sin
nal una nueva conexión, es decir, un nuestros ejemplos utilizamos las bit de paridad, seguidamente se queda a
lugar de destino con el que conec- opciones que se muestran en la figura 14. la espera de recibir un dato por el puerto
tarse. 5. A continuación aparece la pantalla de serie y cuando lo hace lo muestra en el
2. Ejecutar el programa Hypertrm para trabajo tal como la mostrada en la PORTB.
crear una nueva conexión, se le pre- figura 15. Por su parte el programa
gunta el nombre que asignará a la co- Para conectar el ordenador y el Transmite232.asm configura el USART
nexión, teclear por ejemplo microcontrolador a través del puerto para trabajar a 9.600 baudios, con un bit
"PIC16F876" y elegir un icono con
el que se quiera representar la cone-
xión, figura 12.
serie COM 2, basta con activar la opción
"Llama" (o icono de teléfono colgado) y
para desconectar hay que activar opción
de Stop y sin bit de paridad,
seguidamente transmite cada segundo la
cadena de caracteres "HOLA" cada
69
RESISTOR
3.En la siguiente pantalla Conecta con "Desconecta" (o icono de teléfono segundo que se reflejan en el
elegir la opción Conectar usando: Di- descolgado. Una vez configurada una HiperTerminal.
; ;*********************************************************************************
; PROGRAMA : monitor232.asm
; Este programa escucha el puerto serie rs232 sin usar las interrupciones y cuando recibe un byte lo muestra
;en PortB hasta que otro lo sobrescriba.Configuración del puerto serie: 9600 baudios,8 bits,paridad = none
;
; Revisión : 1.0 Programa para : PIC16F876
; CPU Clock : 4 MHz Reloj instrucción : 1 MHz = 1 _s
; WDT : Deshabilitado Tipo de reloj : XT
; Protección de Código : OFF
;**********************************************************************************
CBLOCK 0x20
Buffer ;Buffer entrante
ENDC