program sourcecode
symbol Selected = PORTA.0
symbol HrChange = PORTA.1
symbol MinChange = PORTA.2
symbol SecChange = PORTA.3
symbol Hr1224 = PORTA.4
symbol led1224 = PORTA.5
dim data7, num7 as byte
dim temp as byte
dim hr, min, sec as byte
dim hrten1224, hrone1224 as byte
dim HRTEN, HRONE, MINTEN, MINONE, SECTEN,SECONE as byte
sub procedure interrupt
temp = temp + 1
PIR1.TMR1IF = 0
T1CON.TMR1ON = 0
TMR1H = $3C
TMR1L = $AF
T1CON.TMR1ON = 1
PORTA.3 = 1
end sub
sub procedure delay1ms
delay_ms(1)
end sub
sub procedure delay50ms
delay_ms(50)
end sub
sub procedure send7 (dim value, seven as byte)
PORTC = 0
select case value
case 0 data7 = $C0
case 1 data7 = $F9
case 2 data7 = $A4
case 3 data7 = $B0
case 4 data7 = $99
case 5 data7 = $92
case 6 data7 = $82
case 7 data7 = $F8
case 8 data7 = $80
case 9 data7 = $90
end select
PORTB = data7
select case seven
case 1 num7 = 1
case 2 num7 = 2
case 3 num7 = 4
case 4 num7 = 8
case 5 num7 = 16
case 6 num7 = 32
end select
PORTC = num7
end sub
main:
TRISB = 0
PORTB = 0
TRISC = 0
PORTC = 0
ADCON1 = 7
TRISA = $1F
T1CON = 0
TMR1H = $3C
TMR1L = $AF
PIR1.TMR1IF = 0
PIE1.TMR1IE = 1
INTCON.GIE = 1
INTCON.PEIE = 1
T1CON.TMR1ON = 1
while true
if Selected then
T1CON.TMR1ON = 0
if Hr1224 then
delay50ms
hrten1224 = 1
hrone1224 = 3
led1224 = 1
else
hrten1224 = 0
hrone1224 = 1
led1224 = 0
end if
if HrChange then
delay50ms
HRONE = HRONE + 1
if (HRONE > 9) then
HRONE = 1
HRTEN = HRTEN + 1
end if
if (HRTEN > hrten1224) and (HRONE > hrone1224) then
HRTEN = 0
HRONE = 0
end if
while HrChange
wend
end if
if MinChange then
delay50ms
MINONE = MINONE + 1
if (MINONE > 9) then
MINONE = 0
MINTEN = MINTEN + 1
end if
if (MINTEN > 5) then
MINTEN = 0
MINONE = 0
end if
while MinChange
wend
end if
if SecChange then
delay50ms
SECONE = SECONE + 1
if (SECONE > 9) then
SECONE = 0
SECTEN = SECTEN + 1
end if
if (SECTEN > 5) then
SECTEN = 0
SECONE = 0
end if
while SecChange
wend
end if
else
T1CON.TMR1ON = 1
end if
if (temp = 20) then
temp = 0
sec = sec + 1
SECONE = SECONE + 1
end if
if (SECONE > 9) then
SECONE = 0
SECTEN = SECTEN + 1
end if
if (SECTEN > 5) then
SECTEN = 0
SECONE = 0
MINONE = MINONE + 1
end if
if (MINONE > 9) then
MINONE = 0
MINTEN = MINTEN + 1
end if
if (MINTEN > 5) then
MINTEN = 0
MINONE = 0
HRONE = HRONE + 1
end if
if (HRONE > 9) then
HRONE = 0
HRTEN = 1
end if
if (HRTEN > hrten1224) and (HRONE > hrone1224) then
HRTEN = 0
HRONE = 0
MINTEN = 0
MINONE = 0
SECTEN = 0
SECONE = 0
end if
send7(HRTEN, 1)
delay1ms
send7(HRONE, 2)
delay1ms
send7(MINTEN, 3)
delay1ms
send7(MINONE, 4)
delay1ms
send7(SECTEN, 5)
delay1ms
send7(SECONE, 6)
delay1ms
wend
end.