Você está na página 1de 4

EXPLICACIN DEL CDIGO

Se han declarado diversas variables que realizan validaciones y control para


las diferentes actividades que realizara el PIC 16F877A.
Se han inicializado los puertos trabajndolos como entradas o salidas
digitales.
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF

0X1F
TRISA
0X08
TRISD
0X80
TRISC
0X07
TRISE

Existen cuatro subrutinas principales en las que se realizaran las diferentes


acciones.
CONDICIONUNO
Al iniciar esta opcin se muestra por el LCD un mensaje despus de haber
sido inicializado
CALL
CALL

INICIO_LCD
ENVIAR_DATOS

Se configuran las variables iniciales para el direccionamiento indirecto.


MOVLW 0X20
MOVWF FSR
MOVWF INDF
Se detectara si alguna tecla se ha digitado, comprobando fila por fila y
contando con un rebote para verificar y devolviendo un valor especfico para
cada una de estas.
CLRF PORTB ;ACTIVA LAS CUATRO FILAS
BTFSS PORTB,7 ;LEE RENGLN 1,2,3
GOTO REBO
REBO

CALL D20MS ;PAUSA DE 20 MILISEGUNDOS

BTFSS PORTB,7 ;LEE RENGLN 1,2,3


RETLW 0XFF
D20MS MOVLW N ;(1) CARGA DATO N
MOVWF CONT1 ;(1) INICIALIZA CONTADOR1 CICLO EXTERNO
REP1

MOVLW M ;(1) CARGA DATO M

MOVWF CONT2 ;(1) INICIALIZA CONTADOR2 CICLO INTERNO


REP2

DECFSZ CONT2,1 ;(1,2)DECREMENTA CONTADOR2 Y ESCAPA SI CERO

GOTO REP2 ;(2) SI NO ES CERO, REPITE CICLO INTERNO


DECFSZ CONT1,1 ;(1,2)DECREMENTA CONTADOR1 Y ESCAPA SI CERO
GOTO REP1 ;(2) SI NO ES CERO REPITE CICLO EXTERNO
RETURN
Si se ha detectado alguna se la codificara, caso contrario esperar a que
suceda.
MOVLW 0XF7 ;ACTIVA LA PRIMERA COLUMNA
MOVWF PORTB ;Y ACTIVA LA COLUMNA 1,4,7,*
BTFSS PORTB,7 ;ES LA TECLA 1?
RETLW 0X06 ;RETORNA CDIGO DEL ?1?
Se lo guardara en memoria mediante el direccionamiento indirecto
INCF
MOVF

NUM2,F

;DIRECCIONAMIENTO INDIRECTO

NUM2,W

;MENOS SIGNIFICATIVOS

MOVWF FSR
Al digitar asterisco con el cdigo ascii 0x2A deber detenerse el
almacenamiento y empezar a mostrar los datos guardados, mostrando una
pausa de 3 segundos llamando a la subrutina PAUSA3S.
MOVWF CONTA_4
MOVLW 0X06
SUBWF CONTA_4,W
BTFSC STATUS,Z
CALL MSSG_LCDUNO
MOVLW 0X5B
PAUSA3S
MOVLW 0X0C
MOVWF CONTA_2
MOVLW 0XF1
MOVWF CONTA_1
NOP
DECFSZ CONTA_1,F
GOTO $-.2

; Z=0 SALTA, RESULTADO NO CERO

DECFSZ CONTA_2,F
GOTO $-.6
DECFSZ CONTA_3,F
GOTO $-.10
RETURN

CONDICIONDOS
Se leern los datos del puerto A, y se los convertirn para poder ser
mostrados por el display de 7 segmentos de ctodo comn modificando el
valor de W de acuerdo al digito ingresado por el puerto C.
MOVF

PORTA,0

ANDLW B'00001111'
CALL

CONV_DISPLAY

MOVWF PORTC
Al digitar 2 el valor de W se modificara mediante
RETLW 5BH
CONDICIONTRES
Se realiza la divisin de 4 bits , iniciando variables y leyendo los datos
ingresados por los puertos.
movlw 0x00
movwf porcent
movwf numero
movlw 0x00
movwf porcent
movwf numero
Al leer el dato del divisor se debe validar que este no sea igual a cero
INCF divisor,F
DECFSZ divisor,F
GOTO DOS
MOVLW 0X40
MOVWF PORTC
La divisin se la har mediante restras sucesivas por medio de
DOS SUBWF numero,1

BTFSC STATUS,C
GOTO AUMENTA
GOTO SAL
AUMENTA
INCF porcent,F
GOTO DOS
Y se mostrar por el display el dato del cociente mediante.
SALIDA1 MOVLW 0X06
MOVWF PORTC ; resultado del cociente es uno

CONDICIONCUATRO
Iniciar el LCD y mostrara un mensaje que indique NO
CALL

INICIO_LCD

CALL

ENVIAR_DATOS

CALL

CLR_LCD

CALL MSSG_LCDSW11

LCD
Toda la informacin que ser mostrada por el LCD se hara mediante
MSSG_LCD

MOVLW 'C'
CALL

ENVIAR_DATOS

MOVLW 'A'
RETURN
Se limpiara la informacin que tenga mediante
CLR_LCD

MOVLW 0X01
CALL

ENVIAR_INSTR

RETURN

Você também pode gostar