MICROCONTROLADORES

M.Sc. César Augusto Peña C.
Profesor de planta – Ingeniería mecatrónica Universidad de Pamplona

COMUNICACIÓN SERIAL RS232 (ASINCRÓNICA)
UART: Transmisión/Recepción Asíncrona Universal

Niveles INTERFAZ RS232

Niveles PIC TTL

NIVELES RS232
25 v 15 v 0 Lógico 5v 0v -5 v 1 Lógico -15 v -25 v Indeterminado 3v 0v -3 v 1 Lógico Indeterminado 0 Lógico

Transmisor

Receptor

ESTRUCTURA DE UN CARÁCTER

INTERFAZ PC-PIC

LECTURA DE DATOS

T2 = 1 /Velocidad de transmisión T1 = 1.5 T2 Velocidad de transmisión = 1200 Bps T2 = 833 µS T = 1.5 * 833 µS = 1249.5 µS

RECEPCIÓN DE UN BYTE
Verificar Rx • Si esta en Rx = 1 significa que NO se están transmitiendo datos

RECEPCIÓN DE UN BYTE
Si Rx cambia a “0” significa que el PIC esta recibiendo un dato (este cambio) ocurre puesto que esta leyendo el comienzo del bit de indicio

NBITS = 8

0
Bit de acarreo

0 0 0 0 0 0 0 0
RECEP

RECEPCIÓN DE UN BYTE
Se realiza un retardo equivalente a 1.5 bits, se limpia el carry, se rota el registro auxiliar RECEP, se pone en 1 el bit 7 del mismo en caso que Rx sea 1 de lo contrario se deja en 0 y se decrementa NBITS.

NBITS = 7

0
Bit de acarreo

0 0 0 0 0 0 0 0
RECEP

RECEPCIÓN DE UN BYTE
Se realiza un retardo equivalente a 1 bits, se limpia el carry, se rota el registro auxiliar RECEP y se pone en 1 el bit 7 del mismo en caso que Rx sea 1 de lo contrario se deja en 0 y se decrementa NBITS.

NBITS = 6

0
Bit de acarreo

1 0 0 0 0 0 0 0
RECEP

RECEPCIÓN DE UN BYTE
Se realiza un retardo equivalente a 1 bits, se limpia el carry, se rota el registro auxiliar RECEP y se pone en 1 el bit 7 del mismo en caso que Rx sea 1 de lo contrario se deja en 0 y se decrementa NBITS.

NBITS = 5

0
Bit de acarreo

1 1 0 0 0 0 0 0
RECEP

RECEPCIÓN DE UN BYTE
Se realiza un retardo equivalente a 1 bits, se limpia el carry, se rota el registro auxiliar RECEP y se pone en 1 el bit 7 del mismo en caso que Rx sea 1 de lo contrario se deja en 0 y se decrementa NBITS.

NBITS = 4

0
Bit de acarreo

0 1 1 0 0 0 0 0
RECEP

RECEPCIÓN DE UN BYTE
Se realiza un retardo equivalente a 1 bits, se limpia el carry, se rota el registro auxiliar RECEP y se pone en 1 el bit 7 del mismo en caso que Rx sea 1 de lo contrario se deja en 0 y se decrementa NBITS.

NBITS = 3

0
Bit de acarreo

1 0 1 1 0 0 0 0
RECEP

RECEPCIÓN DE UN BYTE
Se realiza un retardo equivalente a 1 bits, se limpia el carry, se rota el registro auxiliar RECEP y se pone en 1 el bit 7 del mismo en caso que Rx sea 1 de lo contrario se deja en 0 y se decrementa NBITS.

NBITS = 2

0
Bit de acarreo

1 1 0 1 1 0 0 0
RECEP

RECEPCIÓN DE UN BYTE
Se realiza un retardo equivalente a 1 bits, se limpia el carry, se rota el registro auxiliar RECEP y se pone en 1 el bit 7 del mismo en caso que Rx sea 1 de lo contrario se deja en 0 y se decrementa NBITS.

NBITS = 1

0
Bit de acarreo

0 1 1 0 1 1 0 0
RECEP

RECEPCIÓN DE UN BYTE
Se realiza un retardo equivalente a 1 bits, se limpia el carry, se rota el registro auxiliar RECEP y se pone en 1 el bit 7 del mismo en caso que Rx sea 1 de lo contrario se deja en 0 y se decrementa NBITS.

NBITS = 0

0
Bit de acarreo

1 0 1 1 0 1 1 0
RECEP

RECEPCIÓN DE UN BYTE
Al detectar que el registro NBITS es igual a cero el PIC reconoce que la transmisión del dato ha finalizado

NBITS = 0

0
Bit de acarreo

1 0 1 1 0 1 1 0
RECEP

PROGRAMA DE RECEPCIÓN DE DATOS
;AUTOR: CÉSAR AUGUSTO PEÑA c ;PIC: 16F84A ;FUNCION: ;ESTE PROGRAMA RECIBE DATOS (BYTE DE 8 BITS) SERIALMENTE ENVIADOS ; POR LA COMPUTADORA A LA PATILLA DE RA0 Y POSTERIORMENTE MUESTRA LOS DATOS EN EL PUERTO B ;CARACTERISTICAS: ;OSCILLATOR: ;WATCHDOG TIMER: ;POWER UP TIMER: ;CODE PROTECT:

XT OFF ON OFF

INCLUDE "P16F84A.Inc" ;*******DEFINICION DE REGISTROS********************************** CBLOCK .12 REG1, REG2, REG3, RECEP, NBITS ENDC RX equ 0h ;PATILLA QUE RECIBE LOS DATOS ;*******DEFINICION DE DATOS************************************** VALOR1 EQU .7 ;para controlar numero de ciclos del retardo bymedio VALOR2 EQU .1 ;1246 CICLOS DE RETARDO VALOR3 EQU .56 VALOR4 EQU .5 ;para controlar numero de ciclos del retardo by VALOR5 EQU .1 ;830 CICLOS DE RETARDO VALOR6 EQU .52 ;*******PROGRAMA************************************************* ORG 00 goto INICIO

PROGRAMA DE RECEPCIÓN DE DATOS
INICIO org bsf movlw movwf clrf bcf clrf clrf movlw movwf RECIBIR nop btfsc goto call movlw movwf clrf bcf rrf btfsc bsf call decfsz goto movf movwf goto 05 STATUS,RP0 b'00000001' TRISA TRISB STATUS,RP0 PORTA PORTB ;PASA AL BANCO 1

;PASA AL BANCO 0

b'00000101' ;Carga un dato por defecto en el puerto B PORTB

RNEXT

PORTA,RX RECIBIR BYMEDIO 8 NBITS RECEP STATUS,C RECEP,1 PORTA,RX RECEP,7 BY NBITS RNEXT RECEP,w PORTB RECIBIR

;linea de recepcion esta en bajo? ;ciclo hasta recibir bit de comienzo ;llama rutina de bymedio ;carga contador con el numero de bits

;limpia carry ;pregunta por el estado de la linea ;si rx esta en alto pone el bit 7 de RECEP

;pasa el dato del registro RECEP al PORTB

PROGRAMA DE RECEPCIÓN DE DATOS
BYMEDIO TRES DOS UNO movlw movwf movlw movwf movlw movwf decfsz goto decfsz goto decfsz goto retlw movlw movwf movlw movwf movlw movwf decfsz goto decfsz goto decfsz goto retlw end VALOR1 REG1 VALOR2 REG2 VALOR3 REG3 REG3 UNO REG2 DOS REG1 TRES 0 VALOR4 REG1 VALOR5 REG2 VALOR6 REG3 REG3 UNO2 REG2 DOS2 REG1 TRES2 0 ;retardo de bit y medio

BY TRES2 DOS2 UNO2

;retardo de bit

PROGRAMA DE TRANSMISIÓN DE DATOS
;AUTOR: CÉSAR AUGUSTO PEÑA c ;PIC: 16F84A ;FUNCION: ;ESTE PROGRAMA ENVIA DATOS (BYTE DE 8 BITS) SERIALMENTE HACIA LA COMPUTADORA ;POR LA PATILLA DE RA1 ;CARACTERISTICAS: ;OSCILLATOR: ;WATCHDOG TIMER: ;POWER UP TIMER: ;CODE PROTECT:

XT OFF ON OFF

INCLUDE "P16F84A.Inc" ;*******DEFINICION DE REGISTROS********************************** CBLOCK .12 REG1, REG2, REG3, TRANS, NBITS ENDC RX equ 0h ;PATILLA QUE RECIBE LOS DATOS TX equ 1h ;PATILLA QUE TRANSMITE DATOS ;*******DEFINICION DE DATOS************************************** VALOR4 EQU .5 ;para controlar numero de ciclos del retardo by VALOR5 EQU .1 ;830 CICLOS DE RETARDO VALOR6 EQU .52 ;*******PROGRAMA************************************************* ORG 00 goto INICIO

PROGRAMA DE TRANSMISIÓN DE DATOS
INICIO org bsf movlw movwf clrf bcf clrf clrf movlw movwf movlw addlw call nop goto movwf movlw movwf bcf call 05 STATUS,RP0 b'00000001' TRISA TRISB STATUS,RP0 PORTA PORTB ;PASA AL BANCO 1

;PASA AL BANCO 0

b'00000101' ;Carga un dato por defecto en el puerto B PORTB .7 30h ENVIAR NADA TRANS .8 NBITS PORTA,TX BY ;Carga dator en el registro a transmitir ;Carga el número de bits ;Carga el contador ;Pone la línea en bajo ;Retardo que genera el bit de arranque ;Dato a transmitir ;convierte caracter PC

NADA

ENVIAR

PROGRAMA DE TRANSMISIÓN DE DATOS
OTROBIT bcf bcf rrf btfsc bsf call decfsz goto bsf call retlw goto movlw movwf movlw movwf movlw movwf decfsz goto decfsz goto decfsz goto retlw end PORTA,TX STATUS,C TRANS STATUS,C PORTA,TX BY NBITS OTROBIT PORTA,TX BY 0 INICIO VALOR4 REG1 VALOR5 REG2 VALOR6 REG3 REG3 UNO2 REG2 DOS2 REG1 TRES2 0 ;Pone la línea en bajo ;Limpia el carry ;Rota el registro de transmision ;verifica el estado del bit de acarreo ;Pone la línea en alto ;Retardo que genera el bit de datos ;Decrementa el contador ;Transmitir el siguiente bit ;Pone la línea en alto ;Retardo que genera el bit de parada

BY TRES2 DOS2 UNO2

;retardo de bit

PROGRAMA DE TRASMISIÓN Y RECEPCIÓN DE DATOS DEL PC

PROGRAMA DE TRASMISIÓN Y RECEPCIÓN DE DATOS DEL PC

PROGRAMA DE TRASMISIÓN Y RECEPCIÓN DE DATOS DEL PC