Você está na página 1de 26

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 Niveles
INTERFAZ PIC
RS232 TTL
NIVELES RS232

25 v
15 v
0 Lógico
0 Lógico
5v 3v

0v Indeterminado 0v Indeterminado

-5 v -3 v
1 Lógico 1 Lógico
-15 v
-25 v

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 0 0 0 0 0 0 0 0
Bit de acarreo 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 0 0 0 0 0 0 0 0
Bit de acarreo 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 1 0 0 0 0 0 0 0
Bit de acarreo 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 1 1 0 0 0 0 0 0
Bit de acarreo 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 0 1 1 0 0 0 0 0
Bit de acarreo 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 1 0 1 1 0 0 0 0
Bit de acarreo 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 1 1 0 1 1 0 0 0
Bit de acarreo 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 0 1 1 0 1 1 0 0
Bit de acarreo 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 1 0 1 1 0 1 1 0
Bit de acarreo 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 1 0 1 1 0 1 1 0
Bit de acarreo 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: XT
;WATCHDOG TIMER: OFF
;POWER UP TIMER: ON
;CODE PROTECT: 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
org 05
INICIO bsf STATUS,RP0 ;PASA AL BANCO 1
movlw b'00000001'
movwf TRISA
clrf TRISB
bcf STATUS,RP0 ;PASA AL BANCO 0
clrf PORTA
clrf PORTB

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


movwf PORTB

RECIBIR nop
btfsc PORTA,RX ;linea de recepcion esta en bajo?
goto RECIBIR ;ciclo hasta recibir bit de comienzo
call BYMEDIO ;llama rutina de bymedio
movlw 8 ;carga contador con el numero de bits
movwf NBITS
clrf RECEP
RNEXT bcf STATUS,C ;limpia carry
rrf RECEP,1
btfsc PORTA,RX ;pregunta por el estado de la linea
bsf RECEP,7 ;si rx esta en alto pone el bit 7 de RECEP
call BY
decfsz NBITS
goto RNEXT
movf RECEP,w ;pasa el dato del registro RECEP al PORTB
movwf PORTB
goto RECIBIR
PROGRAMA DE RECEPCIÓN DE DATOS
BYMEDIO movlw VALOR1 ;retardo de bit y medio
movwf REG1
TRES movlw VALOR2
movwf REG2
DOS movlw VALOR3
movwf REG3
UNO decfsz REG3
goto UNO
decfsz REG2
goto DOS
decfsz REG1
goto TRES
retlw 0

BY movlw VALOR4 ;retardo de bit


movwf REG1
TRES2 movlw VALOR5
movwf REG2
DOS2 movlw VALOR6
movwf REG3
UNO2 decfsz REG3
goto UNO2
decfsz REG2
goto DOS2
decfsz REG1
goto TRES2
retlw 0
end
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: XT
;WATCHDOG TIMER: OFF
;POWER UP TIMER: ON
;CODE PROTECT: 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
org 05
INICIO bsf STATUS,RP0 ;PASA AL BANCO 1
movlw b'00000001'
movwf TRISA
clrf TRISB
bcf STATUS,RP0 ;PASA AL BANCO 0
clrf PORTA
clrf PORTB

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


movwf PORTB

movlw .7 ;Dato a transmitir


addlw 30h ;convierte caracter PC
call ENVIAR
NADA nop
goto NADA

ENVIAR movwf TRANS ;Carga dator en el registro a transmitir


movlw .8 ;Carga el número de bits
movwf NBITS ;Carga el contador
bcf PORTA,TX ;Pone la línea en bajo
call BY ;Retardo que genera el bit de arranque
PROGRAMA DE TRANSMISIÓN DE DATOS
OTROBIT bcf PORTA,TX ;Pone la línea en bajo
bcf STATUS,C ;Limpia el carry
rrf TRANS ;Rota el registro de transmision
btfsc STATUS,C ;verifica el estado del bit de acarreo
bsf PORTA,TX ;Pone la línea en alto
call BY ;Retardo que genera el bit de datos
decfsz NBITS ;Decrementa el contador
goto OTROBIT ;Transmitir el siguiente bit
bsf PORTA,TX ;Pone la línea en alto
call BY ;Retardo que genera el bit de parada
retlw 0
goto INICIO

BY movlw VALOR4 ;retardo de bit


movwf REG1
TRES2 movlw VALOR5
movwf REG2
DOS2 movlw VALOR6
movwf REG3
UNO2 decfsz REG3
goto UNO2
decfsz REG2
goto DOS2
decfsz REG1
goto TRES2
retlw 0

end
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

Você também pode gostar