hola amigos. perdon por desentonar este tema pero les queria compartir la solucion al cronometro de 4 digitos con pic16f628. solo tuve que experimentar un poco con el valor cargado al tmr0 y cambiar el valor de 61 por 65 y listo. a continuacion, el codigo.
saludosss
saludosss
Código:
@ DEVICE MCLR_ON, XT_OSC, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
DEFINE OSC 4
cuenta var byte
numero2 var word
numero var word
unid var byte
dece var byte
cent var byte
mile var byte
contar var porta.3
encera var porta.2
pausa var porta.1
trisb=0
cmcon=7
cuenta=0
numero=0
numero2=0
OPTION_REG = %0000111 ' Configuración del Registro OPTION
INTCON = %10100000 ' Configuración del Registro INTCON
ON INTERRUPT GOTO interrup
inicio:
cuenta=0
if contar=0 then display
goto display2
display:
unid=numero dig 0
dece=numero dig 1
cent=numero2 dig 0
mile=numero2 dig 1
portb=224+mile
pause 2
portb=208+cent
pause 2
portb=176+dece
pause 2
portb=112+unid
pause 2
gosub teclas
goto display
display2:
unid=numero dig 0
dece=numero dig 1
cent=numero2 dig 0
mile=numero2 dig 1
portb=224+mile
pause 2
portb=208+cent
pause 2
portb=176+dece
pause 2
portb=112+unid
pause 2
goto inicio
teclas:
if pausa=0 then inicio
return
;************** Handler de interrupciones para incrementar contador ***************
DISABLE ;deshabilita interrupciones durante el proceso
interrup:
cuenta = cuenta + 1
TMR0=65
IF cuenta < 20 THEN reset
cuenta = 0
numero = numero + 1
IF numero >= 60 THEN
numero = 0
numero2 = numero2 + 1
IF numero2 >= 99 THEN
numero2 = 0
ENDIF
ENDIF
reset:
INTCON.2 = 0 ;resetea la bandera de interrupción del TMR0
RESUME
END