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
RS232
PIC TTL
NIVELES RS232 25 v 15 v
0 Lógico
0 Lógico 3v
5v 0v
Indeterminado
0v
Indeterminado
-3 v
-5 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 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
RECIBIR
RNEXT
org bsf movlw movwf clrf bcf clrf clrf
05 STATUS,RP0 b'00000001' TRISA TRISB STATUS,RP0 PORTA PORTB
movlw movwf
b'00000101' ;Carga un dato por defecto en el puerto B PORTB
nop btfsc goto call movlw movwf clrf bcf rrf btfsc bsf call decfsz goto movf movwf goto
PORTA,RX RECIBIR BYMEDIO 8 NBITS RECEP STATUS,C RECEP,1 PORTA,RX RECEP,7 BY NBITS RNEXT RECEP,w PORTB RECIBIR
;PASA AL BANCO 1
;PASA AL BANCO 0
;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
BY TRES2 DOS2 UNO2
movlw movwf movlw movwf movlw movwf decfsz goto decfsz goto decfsz goto retlw
VALOR1 REG1 VALOR2 REG2 VALOR3 REG3 REG3 UNO REG2 DOS REG1 TRES 0
;retardo de bit y medio
movlw movwf movlw movwf movlw movwf decfsz goto decfsz goto decfsz goto retlw end
VALOR4 REG1 VALOR5 REG2 VALOR6 REG3 REG3 UNO2 REG2 DOS2 REG1 TRES2 0
;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
NADA
ENVIAR
org bsf movlw movwf clrf bcf clrf clrf
05 STATUS,RP0 b'00000001' TRISA TRISB STATUS,RP0 PORTA PORTB
movlw movwf
b'00000101' ;Carga un dato por defecto en el puerto B PORTB
movlw addlw call nop goto
.7 30h ENVIAR NADA
movwf movlw movwf bcf call
TRANS .8 NBITS PORTA,TX BY
;PASA AL BANCO 1
;PASA AL BANCO 0
;Dato a transmitir ;convierte caracter PC
;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
PROGRAMA DE TRANSMISIÓN DE DATOS OTROBIT
bcf bcf rrf btfsc bsf call decfsz goto bsf call retlw goto
PORTA,TX STATUS,C TRANS STATUS,C PORTA,TX BY NBITS OTROBIT PORTA,TX BY 0 INICIO
;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
movlw movwf movlw movwf movlw movwf decfsz goto decfsz goto decfsz goto retlw
VALOR4 REG1 VALOR5 REG2 VALOR6 REG3 REG3 UNO2 REG2 DOS2 REG1 TRES2 0
;retardo de bit
TRES2 DOS2 UNO2
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