Sei sulla pagina 1di 2

;

RECEPCION SERIAL CON EL PIC16F84, LOS DATOS SE ENVIAN AL PORTB

LIST
P=16F84
include "p16f84.inc"

;PI6C84.INC Es un archivo estandar del


;ensamblador de Microchip que contiene las
;definiciones de etiquetas asociadas a los
;registros y bits del PIC16C84

;DEFINICION DE ETIQUETAS Y VARIABLES


DatoRX
ContBITS
RX
ContDEL
Banderas
OK
ContRX

equ
equ
equ
equ
equ
equ
equ

0x0c
0x0d
4
0x0e
0x0f
0
0x10

;Dato que se recibe


;Contador de bits a recibir
;linea de recepcion
;contador de retardo
;registro de banderas
;bandera de recepcion valida
;Contador de retardo para recepcion

;+++++++++++++ ASIGNACION DE MEMORIA DE PROGRAMA ++++++++++++++


org

0
goto

0000

;VECTOR DE RESET
INICIO_RECEPCION
INICIO RECEPCION PIC16F84

INICIO_RECEPCION
LECTURA

call
btfss
goto
movwf
goto

RECIBIR_DATO_SERIAL
Banderas,OK
LECTURA
PORTB
LECTURA

100

INICIA VARIABLES

;lectura del pin de recepcion


;verificar si el dato es valido
;regresar, para hacer otra lectura
;Enviar caracter al PORTB
;regresar, para hacer otra lectura
INICIA_VAR

;Inicializa variables y puertos


INICIA_VAR
clrf
bsf
bsf
clrf
bcf

Banderas
STATUS,RP0
TRISA,RX
TRISB
STATUS,RP0

;Limpiar registro de banderas


;cambiar al banco 1 de memoria
;programas RX como emtrada
;PORTB como salida
;regresar al banco 0

return
;

200

RECIBIR DATO SERIAL

RECIBIR_DATO_SERIAL

;Se realiza recepcion serial a una velocidad de 1200bps, con datos de


;8 bits, sin paridad y con un bit de paro, a traves de pin RA4. El dato
;guarda en DatoRX y se regresa en el acumulador W.
RECIBIR_DATO_SERIAL
clrwdt
clrf

DatoRX

;limpiar registro de recepcion

RXsig

SalirRX

bcf
btfsc
goto
call
btfsc
goto
call
movlw
movwf

Banderas,OK
PORTA,RX
SalirRX
RETARDO_MED
PORTA,RX
SalirRX
RETARDO833
8
ContBITS

;borrar bandera
;linea de recepcion en bajo?
;si no lo esta salir
;retardo medio para confirmar
;se comprueba el bit de arranque
;salir
;generar un retardo
;Numero de bit que se reciben
;contador de bits

bsf
btfss
bcf
rrf
call
decfsz
goto
call
bsf
movf
return

STATUS,C
PORTA,RX
STATUS,C
DatoRX
RETARDO833
ContBITS
RXsig
RETARDO_MED
Banderas,OK
DatoRX,W

;poner el acarroe a uno


;verificar el estado de la linea
;si esta en cero apagar el acarreo
;insertar el acarreo el DatoRX
;generar un retardo
;decrementar contador de bits
;repetir lectura de la linea
;retardo medio para bit de paro
;recepcion valida
;copiar el dato recibido a W
;regresar

bcf
return

Banderas,OK

;recepcion no valida

300

RETARDO MEDIO

RETARDO_MED

;Generar un retardo de la mitad del tiempo de bit para verificar si el


;bit de inicio es valido
RETARDO_MED
movlw
movwf
RETARDORX
nop
nop
decfsz
goto
return
;

.83
ContRX

;carga para 416us


;contador de retardo

ContRX
RETARDORX

;decrementar registro
;repetir retardo

400

RETARDO DE 833us

RETARDO_DE_833us

;Genera un retardo de 833us, para poder transmitir a la velocidad


;de 1200bps.
RETARDO833
movlw
movwf
RETARDO
nop
nop
decfsz
goto
return
end

.166
ContDEL

;retardo de 833us aprox.


;contador para generar retardo

ContDEL
RETARDO

;decrementar contador de retardo


;repetir el retardo
;regresar

Potrebbero piacerti anche