Intel 80C186XL Computer Hardware User Manual


 
TIMER/COUNTER UNIT
9-20
Example 9-1. Configuring a Real-Time Clock (Continued)
sti ;enable interrupts
pop si ;restore saved registers
pop dx
pop ax
pop bp ;restore caller’s bp
ret
_set_time endp
timer_2_interrupt_routine proc far
push ax ;save registers used
push dx
cmp _msec, 99 ;has 1 sec passed?
jae bump_second ;if above or equal...
inc _msec
jmp short reset_int_ctl
bump_second:
mov _msec, 0 ;reset millisecond
cmp _minute, 59 ;has 1 minute passed?
jae bump_minute
inc _second
jmp short reset_int_ctl
bump_minute:
mov _second, 0 ;reset second
cmp _minute, 59 ;has 1 hour passed?
jae bump_hour
inc _minute
jmp short reset_int_ctl
bump_hour:
mov _minute, 0 ;reset minute
cmp _hour, 12 ;have 12 hours passed?
jae reset_hour
inc _hour
jmp reset_int_ctl
reset_hour:
mov _hour, 1 ;reset hour
reset_int_ctl:
mov dx, EOI
mov ax, 8000h ;non-specific end of interrupt
out dx, al
pop dx
pop ax
iret
timer_2_interrupt_routine endp
lib_80186 ends
end