Академический Документы
Профессиональный Документы
Культура Документы
#include <p16f877a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _LVP_OF
F & _CPD_OFF
;Definicin de variables
siete_seguni
equ 0x20
siete_segdec
equ
0x21
contador_uni
equ 0x22
contador_dec
equ
0x23
contador1
equ
0x24
contador2
equ
0x25
contador3
equ
0x26
;Definicin de valores del contador
m
equ
.30; lo hace en dos segundos
n
equ
.110
l
equ
.199
;Definicin de caracteres a utilizar
Car_0 equ
0x3f
Car_1 equ
0x06
Car_2 equ
0x5B
Car_3 equ
0x4F
Car_4 equ
0x66
Car_5 equ
0x6D
Car_6 equ
0x7D
Car_7 equ
0x07
Car_8 equ
0x7F
Car_9 equ
0x6F
;Definicin de puertos
;Puerto A
Sin_UsoRA0
equ
Sin_UsoRA1
equ .1
Sin_UsoRA2
equ .2
Sin_usoRA3
equ
Sin_UsoRA4
equ
Sin_UsoRA5
equ
progA
equ
USeg_A
USeg_B
USeg_C
USeg_D
USeg_E
USeg_F
USeg_G
USeg_PT
progB
;Puerto B
equ .0
equ .1
equ .2
equ .3
equ .4
equ .5
equ
.6
equ
.7
equ B'00000000'
DSeg_A
DSeg_B
DSeg_C
DSeg_D
DSeg_E
DSeg_F
DSeg_G
DSeg_PT
;Puerto
equ .0
equ
equ
equ
equ
equ
equ
equ
C
.1
.2
.3
.4
.5
.6
.7
.0
.3
.4
.5
B'11111'
progC
equ
B'00000000'
;Puerto
Sin_usoRD0
Sin_usoRD1
Sin_usoRD2
Sin_usoRD3
Sin_usoRD4
Sin_usoRD5
Sin_usoRD6
Sin_usoRD7
progD
d
equ
equ
equ
equ
equ
equ
equ
equ
equ
;Puerto
Sin_usoRE0
Sin_usoRE1
Sin_usoRE2
progE
e
equ
.0
equ
.1
equ
.2
equ B'111'
.0
.1
.2
.3
.4
.5
.6
.7
B'11111111'
;---------------------------------------------------------------------------------------------------------------------------------------------------;----------------------------------------------------------Vector Reset-----------------------------------------------------------------------------Vec_Reset
org 0000h
NOP
goto Prog_prin
;---------------------------------------------------------------------------------------------------------------------------------------------------;---------------------------------------------------Subrutina de Interrupciones---------------------------------------------------------------------Vec_int org 0004h
NOP
RETFIE
;---------------------------------------------------------------------------------------------------------------------------------------------------;-----------------------------------------------------Inicializacin de puertos---------------------------------------------------------------------Prog_ini
bsf STATUS,RP0
movlw
movwf
movlw
movwf
movlw
movwf
movlw
movwf
movlw
movwf
progA
TRISA^0x80
progB
TRISB^0x80
progC
TRISC^0x80
progD
TRISD^0x80
progE
TRISE^0x80
bcf STATUS,RP0
movlw .1
movwf contador_uni
clrf contador_dec
return
;---Autmata principal-----
Prog_prin
call Prog_ini
call Muestra_Cuenta_00
Ciclo
call Retardo
call Cuenta
call Descodifica_num
call Muestra_Cuenta
goto Ciclo
;----Subrutina muestra cuenta---Muestra_Cuenta_00
movlw Car_0
movwf PORTB
movlw Car_1
movwf PORTC
return
;----Subrutina Retardo------Retardo
movlw m
loop3
movlw n
loop2
movlw l
movwf contador3
movwf contador2
movwf contador1
decfsz contador1, f
goto loop1
decfsz contador2, f
goto loop2
decfsz contador3, f
goto loop3
return
;----Subrutina Cuenta----loop1
Cuenta
movlw .2
addwf contador_uni
movlw .11
subwf contador_uni,w
btfss STATUS,Z
goto salte
clrf contador_uni
movlw .1
movwf contador_uni
incf contador_dec
movlw .10
subwf contador_dec,w
btfss STATUS,Z
goto salte
incf contador_dec
clrf contador_dec
clrf contador_uni
clrw
salte
return
;----Subrutina decodifica----Tabla addwf PCL,f
retlw B'00111111';cdigo
retlw B'00000110';cdigo
retlw B'01011011';cdigo
retlw B'01001111';cdigo
retlw B'01100110';cdigo
retlw B'01101101';cdigo
retlw B'01111101';cdigo
retlw B'00000111';cdigo
7
7
7
7
7
7
7
7
segmentos
segmentos
segmentos
segmentos
segmentos
segmentos
segmentos
segmentos
para
para
para
para
para
para
para
para
0
1
2
3
4
5
6
7