Вы находитесь на странице: 1из 3

list p=16F628A

#include P16F628A.inc

;**** Definicion de variables ****


UNI equ 0x20
DEC equ 0x21
Contador1 equ 0x22
Contador2 equ 0x23
DISP equ 0x24

;**** Inicio del Micro ****


Reset org 0x00
goto Inicio

;**** Tabla de conversion BCD a 7 Segmentos ****

org 0x05
BCD7SEG ADDWF PCL,1 ; se incrementa el contador de programa display
gfedcba segmentos de los leds del display
RETLW B'00111111' ; c�digo para el 0
RETLW B'00000110' ; c�digo para el 1
RETLW B'01011011' ; c�digo para el 2
RETLW B'01001111' ; c�digo para el 3
RETLW B'01100110' ; c�digo para el 4
RETLW B'01101101' ; c�digo para el 5
RETLW B'01111101' ; c�digo para el 6
RETLW B'00000111' ; c�digo para el 7
RETLW B'01111111' ; c�digo para el 8
RETLW B'01101111' ; c�digo para el 9
RETLW B'01110111' ; c�digo para el A
RETLW B'01111100' ; c�digo para el B
RETLW B'00111001' ; c�digo para el C
RETLW B'01011110' ; c�digo para el D
RETLW B'01111001' ; c�digo para el E
RETLW B'01110001' ; c�digo para el F

;**** Configuracion de puertos 3f78****


Inicio bsf STATUS,RP0
movlw b'11111100'
movwf TRISA
clrf TRISB
bcf STATUS,RP0
clrf PORTA
clrf PORTB
clrf UNI
clrf DEC
goto Actualizo_Display

;**** Testeo de Pulsador ****


Bucle btfss PORTA,RA4
goto DESC
goto ASCE

;**** Ascendente ****


ASCE incf UNI,1 ;mientras sea decena 1-9
movlw d'16' ;no salta entonces
xorwf UNI,0 ;solo actualiza unidad
btfss STATUS,Z
goto Actualizo_Display

clrf UNI
incf DEC,1
movf DEC,0
xorlw d'16'
btfss STATUS,Z
goto Actualizo_Display
clrf DEC
goto Actualizo_Display

;**** Descendente ****


DESC decf UNI,1 ;mientras sea decena 1-9
movf UNI,0 ;no salta entonces
xorlw d'255'
btfss STATUS,Z ;solo actualiza unidad
goto Actualizo_Display
movlw d'15'
movwf UNI

decf DEC,1
movf DEC,0
xorlw d'255'
btfss STATUS,Z
goto Actualizo_Display
movlw d'15'
movwf DEC
goto Actualizo_Display

;**** Se multiplexan los Display ****


Actualizo_Display
movlw d'20'
movwf DISP

Refresco
movf UNI,0
call BCD7SEG
bcf PORTA,RA1 ;Muestra Decena
movwf PORTB
bsf PORTA,RA0 ;Muestra Unidad
call Demora_5ms ;REPARAR DEMORA
movf DEC,0
call BCD7SEG
bcf PORTA,RA0 ;Muestra Unidad
movwf PORTB
bsf PORTA,RA1 ;Muestra Decena
call Demora_5ms ;REPARAR DEMORA
decfsz DISP,1
goto Refresco
btfsc PORTA,RA3
goto Refresco
goto Bucle

;**** Demora ****


Demora_5ms
movlw 0xFF
movwf Contador1
Repeticion1
movlw 0x05
movwf Contador2
Repeticion2
decfsz Contador2,1
goto Repeticion2
decfsz Contador1,1
goto Repeticion1
return

end

Вам также может понравиться