Task-Specific Program Code
C-8
C.3 Task-Specific Program Code
Example C–4. Implementing Simple Delay Loops (delay.asm)
* File: delay.asm *
* Function: Delay loop. XF and I/O 3 pins toggle after each delay *
.title ”Delay routine” ; Title
.copy ”init.h” ; Variable and register declaration
.copy ”vector.h” ; Vector label declaration
.text
start: clrc cnf ; Map block B0 to data memory
ldp #0h ; set DP=0
setc INTM ; Disable all interrupts
splk #0000h, 60h ; Set zero wait states
out 60h, wsgr
splk #0e00ch,60h ; Define iosr for bit I/O in aspcr
out 60h,aspcr
lar ar0,#del ; Initialize ar0
mar *,ar7 ; Set ARP to ar7
splk #0008h,6eh ; data for setting bit I/O 3
splk #0000h,6fh ; data for clearing bit I/O 3
splk #0ffffh,60h ; Inner repeat loop size
lar ar7,#del
loop: clrc xf ; xf=0
out 6fh,iosr ; bit 3=0
dely1: rpt 60h ; @ 50ns, this loop gives 3.4 ms approx.
nop
banz dely1,ar7 ; delay = 17*3.4 = 57.8 ms approx.
lar ar7,#del
setc xf ; xf=1
out 6eh,iosr ; bit 3=1
dely2: rpt 60h ; @ 50ns, this loop gives 3.4 ms approx.
nop
banz dely2,ar7 ; delay = 17*3.4 = 57.8 ms approx.
lar ar7,#del
b loop
inpt1: ret ; Unused interrupts
inpt23: ret ; have dummy returns for safety
timer: ret
uart: ret
codtx: ret
codrx: ret
.end ; Assembler module end directive –optional