Está en la página 1de 20

LIST P=16F84A

__CONFIG 3FF1H

ORG 0X00

GOTO START

PORTA EQU 0X05

PORTB EQU 0X06

TMR0 EQU 0X01

PCL EQU 0X02

STATUS EQU 0X03

OPCION EQU 0X81

INTCON EQU 0X0B

PDel0 EQU 0X10

PDel1 EQU 0X11

PDel2 EQU 0X12

PDel01 EQU 0X13

PDel11 EQU 0X14

REG0 EQU 0X24

REG1 EQU 0X23

REG2 EQU 0X22

REG3 EQU 0X21

REG4 EQU 0X20

REGA EQU 0X0A

;--------------------------------------

; SECTOR DE INTERRUPCION
ORG 0X04

GOTO TEST

;--------------------------------------

; INICIO

ORG 0X50

START

MOVLW B'00010000'

TRIS PORTA ;CONFIGURA RA4 COMO ENTRADA Y RA3 A RA0 COMO SALIDAS

MOVLW 0X00

TRIS PORTB ;CONFIGURA EL PORTB COMO SALIDAS

BSF STATUS,5 ;CAMBIA A BANCO 1

MOVLW B'00111000' ;CONFIGURA EL REGISTRO OPTION COMO CONTADOR Y CON EL

MOVWF OPCION ;PRESCALER ASIGNADO AL PERRO

BCF STATUS,5 ;REGRESA A BANCO CERO

MOVLW B'10000000' ;HABILITA LAS INTERRUPCIONES GIE(NO HABILITA EL TMR0)

MOVWF INTCON ;EN EL CONTROL DE INTERRUPCIONES

;--------------------------------------------

; PROGRAMA PRINCIPAL

MAIN

CLRW

MOVWF REG0

MOVWF REG1

MOVWF REG2

MOVWF REG3
MOVWF REG4

CALL T6M

BCF PORTA,3 ;RS = 0

BCF PORTA,1 ;RW = 0

CALL INIEX ;INICIALIZA EL LCD

MOVLW 0X80 ;SELECCIONA PRIMER LINEA, PRIMER RENGLON

MOVWF PORTB

CALL HABI

BSF PORTA,3 ;RS = 1

CALL M1 ;PRIMER MENSAJE

BCF PORTA,3 ;RS = 0

CALL INIEXSC ; INICIALIZA EL DISPLAY SIN CLEAR

MOVLW 0XC0 ;SELECCIONA SEGUNDA LINEA 1ER COLUMNA

;---------

MOVWF PORTB

CALL HABI

BSF PORTA,3 ;RS = 1

CALL TESE ;MENSAJE "xxxxx DIGITALES2"

CONTA

MOVLW .255

MOVWF TMR0

BSF INTCON,5 ;HABI LITA EL TMR0

CALL T1S ;LLAMA RETARDO DE 1 SEGUNDO

BCF INTCON,5
BCF INTCON,2

CALL LEER

CLRW

MOVWF REG0

MOVWF REG1

MOVWF REG2

MOVWF REG3

MOVWF REG4

GOTO CONTA

;--------------------------------------------

; RUTINA DE ATENCION A LA INTERRUPCION

TEST

INCF REG0,1

MOVF REG0,0

XORLW 0X0A

BTFSS STATUS,2

GOTO SALTO

CLRF REG0

INCF REG1,1

MOVF REG1,0

XORLW 0X0A

BTFSS STATUS,2

GOTO SALTO

CLRF REG1

INCF REG2,1

MOVF REG2,0
XORLW 0X0A

BTFSS STATUS,2

GOTO SALTO

CLRF REG2

INCF REG3,1

MOVF REG3,0

XORLW 0X0A

BTFSS STATUS,2

GOTO SALTO

CLRF REG3

INCF REG4,1

MOVF REG4,0

XORLW 0X0A

BTFSS STATUS,2

GOTO SALTO

CLRF REG4

SALTO

BCF INTCON,2

BCF INTCON,0

MOVLW .255

MOVWF TMR0

RETFIE

;-----------------------------------

;-----------------------------------

; RUTINA PARA LECTURA DE DATOS


LEER

NOP

WR6

BCF PORTA,3 ;RS = 0

CALL INIEXSC ; INICIALIZA EL LCD SIN CLEAR

MOVLW 0X85 ;SELECCIONA PRIMER LINEA, COLUMNA 6

MOVWF PORTB

CALL HABI

BSF PORTA,3 ;RS = 1

MOVF REG4, 0

CALL TABLA

MOVWF PORTB

CALL HABI

WR7

BSF PORTA,3 ;RS = 1

MOVF REG3,0

CALL TABLA

MOVWF PORTB

CALL HABI

WR8

BSF PORTA,3 ;RS = 1

MOVF REG2,0

CALL TABLA

MOVWF PORTB

CALL HABI

WR9
BSF PORTA,3 ;RS = 1

MOVF REG1,0

CALL TABLA

MOVWF PORTB

CALL HABI

WR10

BSF PORTA,3 ;RS = 1

MOVF REG0,0

CALL TABLA

MOVWF PORTB

CALL HABI

RETURN

;---------------------------------------

; TABLA DE CONVERSION, DATOS A CARACTERES ASCI I

TABLA

ADDWF PCL ,1

RETLW "0"

RETLW "1"

RETLW "2"

RETLW "3"

RETLW "4"

RETLW "5"

RETLW "6"

RETLW "7"

RETLW "8"

RETLW "9"
RETLW "?"

;----------------------------------------

; MENSAJE DE INICIO

M1

BSF PORTA,2

MOVLW "V"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "E"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "L"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW ":"

MOVWF PORTB

CALL T6M
BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW " "

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW " "

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW " "

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW " "

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M
BSF PORTA,2

MOVLW " "

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW " "

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW " "

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW " "

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "R"
MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "P"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "S"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

RETURN

;-------------------------------------------

;-------------------------------------------

; MENSAJE

TESE

BSF PORTA,2

MOVLW "X"

MOVWF PORTB

CALL T6M

BCF PORTA,2
CALL T6M

BSF PORTA,2

MOVLW "X"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "X"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "X"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "X"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2
MOVLW " "

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "D"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "I"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "G"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

;-----

BSF PORTA,2

MOVLW "I"
MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "T"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "A"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "L"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "E"

MOVWF PORTB

CALL T6M
BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "S"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW "2"

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

RETURN

;------------------------------------------

; RUTINA DE INICIALIZACON DEL DISPLAY

INIEX

BSF PORTA,2

MOVLW 0X38

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW 0X38
MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW 0X06

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW 0X0E

MOVWF PORTB

CALL T6M

;----

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW 0X01 ;LIMPIA EL DISPLAY

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

RETURN

;-------------------------------------------------------------

; RUTINA DE INICIALIZACIÓN SIN CLEAR


INIEXSC

BSF PORTA,2

MOVLW 0X38

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW 0X38

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW 0X06

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

BSF PORTA,2

MOVLW 0X0E

MOVWF PORTB

CALL T6M

BCF PORTA,2

CALL T6M

RETURN
;-------------------------------------------------------------

; RUTINA PARA HABILITAR EL DISPLAY

HABI

BSF PORTA,2 ;PULSO DE SUBIDA EN RA2

CALL T6M ;RETARDO DE 1 MILISEGUNDO

BCF PORTA,2 ;PULSO DE BAJADA EN RA2

RETURN

;-------------------------------------------------------------

; RETARDO DE 6 MILISEGUNDOS

;-------------------------------------------------------------

T6M

movlw .7 ; 1 s et numero de rep et i c i on (B)

movwf PDel01 ; 1

PLoop11

movlw .213 ; 1 s e t n ume ro de rep e t i c io n (A)

movwf PDel11 ; 1

PLoop21

clrwdt ; 1 c l ear wa t ch d og

decfsz PDel11,1 ; 1 + (1) es e l t iemp o 0 ? (A)

goto PLoop21 ; 2 n o, loo p

decfsz PDel01,1 ; 1 + (1) es e l t iemp o 0 ? (B)

goto PLoop11 ; 2 n o, loo p

PDelL11

goto PDelL21 ; 2 c i c los de lay

PDelL21

clrwdt ; 1 c i c l o de lay
return ; 2+2 Fin.

;-------------------------------------------------------------

;-------------------------------------------------------------

; RETARDO DE 1 SEGUNDO

;-------------------------------------------------------------

T1S

movlw 14 ; 1 s e t numero d e re pe t i c io n (C)

movwf PDel0 ; 1 |

PLoop0

movlw .72 ; 1 s e t n ume ro de repe t i c i on (B)

movwf PDel1 ; 1 |

PLoop1

movlw .247 ; 1 s e t nume ro d e re pe t i c io n (A)

movwf PDel2 ; 1 |

;--------

PLoop2

clrwdt ; 1 c le ar wa t c hd o g

decfsz PDel2,1 ; 1 + (1) e s e l t i empo 0 ? (A)

goto PLoop2 ; 2 no , lo op

decfsz PDel1,1 ; 1 + (1) e s e l t i empo 0 ? (B)

goto PLoop1 ; 2 no , lo op

decfsz PDel0,1 ; 1 + (1) e s e l t i empo 0 ? (C)

goto PLoop0 ; 2 no , lo op

PDelL1
goto PDelL2 ; 2 c i c lo s d elay

PDelL2

clrwdt ; 1 c i c lo d e la y

return ; 2+2 Fin.

;-------------------------------------------------------------

;-------------------------------------------------------------

; RETARDO DE 1 MINUTO CON EXIBICION AL DISPLAY LCD

T1M

MOVLW .60

MOVWF REGA

LAZO

DECFSZ REGA,1

GOTO Y1

GOTO F1

Y1

CALL T1S

CALL LEER

GOTO LAZO

F1

RETURN

;-------------------------------------------------------------

END