
II-78
EPSON
S1C88348/317/316/308 TECHNICAL SOFTWARE
12 PROGRAMMABLE TIMER
Control of programmable timer 2
external
osc1toosc3,osc3toosc1
external
vdd_ngf
public
timer1ch_init,pt0_intr
public
timeup
;
pt1_vector
equ
000006h
;timer 1 interrupt vector offset
pt
equ
003000h
;program start address offset
br_io
equ
0ffh
;base reg. address (set i/o area)
pt_mode0
equ
00ff30h
;programmable timer mode set reg. 0
pt_mode1
equ
00ff31h
;programmable timer mode set reg. 1
rld0
equ
00ff33h
;programmable timer 0 reload data
rld1
equ
00ff34h
;programmable timer 1 reload data
;
intr_pr1
equ
00ff21h
;interrupt priority reg. 1
intr_en1
equ
00ff23h
;interrupt enable reg. 1
intr_fac1
equ
00ff25h
;interrupt factor flag reg. 1
;
data
timeup:
db
[1]
;timeup flag
;
code
Vector address setting for programmable timer interrupt
intr_vectors:
org
intr_vectors+pt1_vector
dw
pt1_intr
;programmable timer 0 interrupt
;
(2) Initialization for 16-bit one-shot timer (one system)
org
intr_vectors+pt
timerdata16:
dw
33200
;timer16 reload data (33.2ms at 4mhz/4)
;************************************************************************
;*
*
;*
16-bit * 1-channel one shot timer
*
;*
*
;************************************************************************
;*** initialize routine
timer1ch_init:
ld
br,#br_io
;set br reg. address to 0ffxxh
carl
osc1toosc3
;change osc1 to osc3 ***
ld
a,[lod vdd_ngf]
;vdd ng flag
cp
a,#0ffh
jrl
z,timer1ch_init00
;
;mode16=16-bit,chsel=timer0,ptout=off,cksel1=dont't care,ckse0=fosc3
ld
[br:low pt_mode0],#00010001b
ld
ba,[loc timerdata16]
;set 16-bit reload data (timer 0 & 1)
ld
[lod rld0],ba
;pt0:evcnt=timer,fcsel=normal timer,plpol=don't care,psc=fosc3/4,rlmd0=oneshot
;pset0=preset
ld
[br:low pt_mode1],#00001010b
or
[br:low intr_pr1],#00001100b
;set pt=/irq3
or
[br:low intr_en1],#10000000b
;ept1 intr. en.
or
[br:low pt_mode1],#00000001b
;start timer 0
ld
a,sc
and
a,#00111111b
or
a,#10000000b
ld
sc,a
;i0 flag clear (en. /irq3 intr.)
xor
a,a
ld
[lod timeup],a
;************************************************************************
;*** start programmable timer 0 (16-bit) interrupt
timer1ch_init01:
ld
a,[lod timeup]
cp
a,#0ffh
jrs
nz,timer1ch_init01
;************************************************************************
;*** end processing
timer1ch_init00:
carl
osc3toosc1
;change osc3 to osc1 ***
ret
Source List