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

List p=16f877a

#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

retlw B'01111111';cdigo 7 segmentos para 8


retlw B'01101111';cdigo 7 segmentos para 9
Descodifica_num movf contador_uni,w
call Tabla
movwf siete_seguni
movf contador_dec,w
call Tabla
movwf siete_segdec
return
;---------Muestra Cuenta----Muestra_Cuenta movf siete_seguni,w
movwf PORTC
movf siete_segdec,w
movwf PORTB
return
END

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