You are on page 1of 5

#include "p16f877a.

inc"
org 0x00
goto princ
;------------------------------------------------------------------------------org 0x04
;aqui llega en caso de interrupcion
bcf STATUS,RP0
bcf STATUS,RP1
a
c
d
e
f
g

su

sd

mu

md

;banco 0

btfss PORTB,RB1
goto c
goto su
btfss PORTD,RD4
goto d
goto sd
btfss PORTD,RD5
goto e
goto mu
btfss PORTD,RD6
goto f
goto md
btfss PORTD,RD7
goto g
goto hu
btfss PORTB,RB0
goto a
goto hd
movlw 0x22
movwf FSR
movf INDF,w
movwf PORTD
bcf PORTB,RB1
bsf PORTD,RD4
goto cdc
movlw 0x24
movwf FSR
movf INDF,w
movwf PORTD
bsf PORTD,RD5
goto cdc
movlw 0x26
movwf FSR
movf INDF,w
movwf PORTD
bsf PORTD,RD6
goto cdc
movlw 0x28
movwf FSR
movf INDF,w
movwf PORTD

;direccion del dato


;al puerto D
;activo el disp de su

;al puerto D
; disp de sd

;al puerto D
;disp mu

;al puerto D

hu

hd

bsf PORTD,RD7
goto cdc

;disp de md

movlw 0x30
movwf FSR
movf INDF,w
movwf PORTD
bcf PORTD,RB7
bsf PORTB,RB0
goto cdc

;al puerto D

movlw 0x32
movwf FSR
movf INDF,w
movwf PORTD
bcf PORTB,RB0
bsf PORTB,RB1
goto cdc

;al puerto D

;disp de hu

;disp de hd

cdc

decf 0x20,1
btfss STATUS,Z
goto x

;resto 1 del registro 0x20

unse

incf 0x22,1
;aumento en uno el regitro de u de s
decf 0x21,1
;dec el contador de las u de s
btfss STATUS,Z
goto r
clrf 0x22
movlw 0x0A
movwf 0x21
goto dese

dese

incf 0x24,1
;aumento en uno el regitro de u de s
decf 0x23,1
;dec el contador de las u de s
btfss STATUS,Z
goto r
clrf 0x24
movlw 0x06
movwf 0x23
goto unmi

unmi

incf 0x26,1
;aumento en uno el regitro de u de s
decf 0x25,1
;dec el contador de las u de s
btfss STATUS,Z
goto r
clrf 0x26
movlw 0x0A
movwf 0x25
goto demi

demi

incf 0x28,1

;aumento en uno el regitro de u de s

decf 0x27,1
;dec el contador de las u de s
btfss STATUS,Z
goto r
clrf 0x28
movlw 0x06
movwf 0x27
goto unho
unho

incf 0x30,1
;aumento en uno el regitro de u de s
decf 0x29,1
;dec el contador de las u de s
btfss STATUS,Z
goto r
clrf 0x30
movlw 0x0A
movwf 0x29
goto deho

deho

incf 0x32,1
;aumento en uno el regitro de u de s
decf 0x31,1
;dec el contador de las u de s
btfss STATUS,Z
goto r
clrf 0x32
movlw 0x06
movwf 0x31

clrf 0x20
movlw 0x64
movwf 0x20

bcf PIR1,TMR1IF ;baja la bandera del TMR1

;limpio
;cuantos
;a donde

clrf TMR1L
movlw 0xF0
movwf TMR1L

;
;
; limpio y le pongo el valor de cual empieza el cont

clrf TMR1H
movlw 0xD8
movwf TMR1H

;
;
;

eo

bsf INTCON,GIE

;vuelve a habilitar todas las interrupciones

retfie

;termina el servicio a la interrupcion

;------------------------------------------------------------------------------princ
call confi
;llama a la subrutina config
aqui
goto aqui
;------------------------------------------------------------------------------confi
bcf STATUS,RP1
bcf STATUS,RP0 ;va al banco 0
movlw 0x09
movwf T1CON

;valor para configurar el TMR1


;habilita el TMR1

bcf PIR1,TMR1IF

;limpia la bandera de interrupcion del TMR1

clrf PORTD
clrf PORTB
bsf STATUS,RP0
clrf TRISD
clrf TRISB
bcf STATUS,RP0
clrf 0x20
movlw 0x64
movwf 0x20

;limpio
;cuantos
;a donde

mando 20

;segundos
clrf
movlw
movwf
clrf

0x21
0x0A
0x21
0x22

;
;mando 10 para las unidades de los segundos

clrf
movlw
movwf
clrf

0x23
0x06
0x23
0x24

;
;mando 5 para las decenas de los seg

;limpio el registro que usare para las unidades de los

segundos

;limpio el registro para las decenasde los seg

;minutos
clrf
movlw
movwf
clrf

0x25
0x0A
0x25
0x26

;
;mando 9 para las unidades de los min

clrf
movlw
movwf
clrf

0x27
0x06
0x27
0x28

;
;mando 5 para las decenas de los min

;limpio el registro para las unidades de los min

;limpio el registro para las decenasde los min

;horas
clrf
movlw
movwf
clrf

0x29
0x0A
0x29
0x30

;
;mando 9 para las unidades de las hors

clrf
movlw
movwf
clrf

0x31
0x06
0x31
0x32

;
;mando 5 para las decenas de las hors

movlw 0x22
movwf FSR
movf INDF,w
movwf PORTD

;limpio el registro para las unidades de las hrs

;limpio el registro para las decenasde las hrs

bsf PORTD,RD4
bcf
bsf
bsf
bsf

STATUS,RP1
STATUS,RP0
PIE1,TMR1IE
INTCON,PEIE

bsf INTCON,GIE
bcf STATUS,RP1
bcf STATUS,RP0
clrf TMR1L
movlw 0xF0
movwf TMR1L
clrf TMR1H
movlw 0xD8
movwf TMR1H

;enciendo el disp de segundos unidades

;va al banco 1
;habilita la interrupcion del TMR1
;abilita interrupciones perifericas
;habilita el global de las interrupciones
;va al banco 0
;
;
;
;
;

limpio y le pongo el valor de


cual empieza el conteo

return
;------------------------------------------------------------------------------uni addwf PCL,F
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
dec

0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0x08
0x09

addwf PCL,F
retlw
retlw
retlw
retlw
retlw
retlw

0x00
0x01
0x02
0x03
0x04
0x05

;------------------------------------------------------------------------------end