Intel 80C186XL Computer Hardware User Manual


 
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