Example 91. configuring a real-time clock – Intel 80C188XL User Manual
Page 247
![background image](/manuals/127076/247/background.png)
TIMER/COUNTER UNIT
9-18
Example 9-1. Configuring a Real-Time Clock
$mod186
name example_80186_family_timer_code
;FUNCTION:
This function sets up the timer and interrupt controller
;
to cause the timer to generate an interrupt every
;
10 milliseconds and to service interrupts to
;
implement a real time clock.
;
;
Timer 2 is used in this example because no input or
;
output signals are required.
;
;SYNTAX:
extern void far set_time(hour, minute, second, T2Compare)
;
;INPUTS:
hour - hour to set time to.
;
minute - minute to set time to.
;
second - second to set time to.
;
T2Compare - T2CMPA value (see note below)
;
;OUTPUTS:
None
;NOTE:
Parameters are passed on the stack as required by
;
high-level languages
;
;
For a CLKOUT of 16Mhz,
;
;
f(timer2)
= 16Mhz/4
;
= 4Mhz
;
= 0.25us for T2CMPA = 1
;
;
T2CMPA(10ms)
= 10ms/0.25us
;
=
10e-3/0.25e-6
;
= 40000
;substitute register offsets
T2CON
equ xxxxh
;Timer 2 Control register
T2CMPA equ xxxxh
;Timer 2 Compare register
T2CNT
equ xxxxh
;Timer 2 Counter register
TCUCON equ xxxxh
;Int. Control register
EOI
equ xxxxh
;End Of Interrupt register
INTSTS equ xxxxh
;Interrupt Status register
timer_2_int
equ 19
;timer 2:vector type 19
data segment public ’data’
public _hour, _minute, _second, _msec
_hour db ?
_minute db ?
_second db ?
_msec db ?
data ends