Intel 80C188XL User Manual
Page 249

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