Intel 80C188XL User Manual

Page 248

Advertising
background image

9-19

TIMER/COUNTER UNIT

Example 9-1. Configuring a Real-Time Clock (Continued)

lib_80186 segment public ’code’

assume cs:lib_80186, ds:data

public _set_time
_set_time proc far

push

bp

;save caller’s bp

mov

bp, sp

;get current top of stack

hour

equ word ptr[bp+6]

;get parameters off stack

minute equ word ptr[bp+8]
second equ word ptr[bp+10]
T2Compare equ word ptr[bp+12]

push

ax

;save registers used

push

dx

push

si

push

ds

xor

ax, ax

;set interrupt vector

mov

ds, ax

mov

si, 4*timer_2_int

mov

word ptr ds:[si], offset

timer_2_interrupt_routine

inc

si

inc

si

mov

ds:[si], cs

pop

ds

mov

ax, hour

;set time

mov

_hour, al

mov

ax, minute

mov

_minute, al

mov

ax, second

mov

_second, al

mov

_msec, 0

mov

dx, T2CNT

;clear Count register

xor

ax, ax

out

dx, al

mov

dx, T2CMPA

;set maximum count value

mov

ax, T2Compare

;see note in header above

out

dx, al

mov

dx, T2CON

;set up the control word:

mov

ax, 0E001H

;enable counting,

out

dx, al

;generate interrupt on MC,
;continuous counting

mov

dx, TCUCON

;set up interrupt controller

xor

ax, ax

;unmask highest priority interrupt

out

dx, al

Advertising
This manual is related to the following products: