
II-94
EPSON
S1C88348/317/316/308 TECHNICAL SOFTWARE
14 SOUND GENERATOR
(1)
(3)
(2)
Control of sound generator
public
sound_init
public
normal_init,normal_on,normal_off
public
envelope_init,envelope_on,envelope_reset,envelope_off
public
oneshot_ready,oneshot_on.oneshot_off
;
br_io
equ
0ffh
;base reg. address (set i/o area)
sound_mode0
equ
00ff44h
;sound generator mode set reg. 0
sound_mode1
equ
00ff45h
;sound generator mode set reg. 1
;
hzr_ex
equ
00ff70h
;expand output control reg.
r5d
equ
00ff78h
;r5x output data
code
;
(1) Initialization for sound generator
;************************************************************************
;*
*
;*
sound genertator control
*
;*
*
;************************************************************************
sound_init:
ld
br,#br_io
;set br reg. address to 0ffxxh
and
[br:low r5d],#11111110b
;r50="l" (bzon enable)
and
[br:low hzr_ex],#10111111b
;r50=complementary output
ret
;
(2) Normal buzzer output
;************************************************************************
;*** sound normal
normal_init:
ld
[br:low sound_mode1],#00000000b
;duty=max.,bzfq=4096hz
ret
;***
normal_on:
or
[br:low sound_mode0],#00000001b
;bzon=enable
ret
;***
normal_off:
and
[br:low sound_mode0],#11111110b
;bzon=disable
ret
;
(3) Buzzer output with digital envelope
;************************************************************************
;*** sound envelope
envelope_init:
ld
[br:low sound_mode1],#00000000b
;duty=don't care,bzfq=4096hz
or
[br:low sound_mode0],#00001010b
;enrtm=1sec,enon=on
ret
;***
envelope_on:
or
[br:low sound_mode0],#00000001b
;bzon=enable (with envelope)
ret
;***
;envelope reset then on(change envelope release time & buzzer frequency)
envelope_reset:
ld
[br:low sound_mode1],#00000100b
;duty=don't care,bzfq=2048hz
ld
a,[br:low sound_mode0]
and
a,#00000011b
;enrtm=0.5sec
or
a,#00000100b
;envelope reset
ld
[br:low sound_mode0],a
ret
;***
envelope_off:
and
[br:low sound_mode0],#11111110b
;bzon=disable
ret
;
Source List