Task-Specific Program Code
C-10
Example C–6. Testing and Using Interrupt INT1 (intr1.asm)
* File: intr1.asm *
* Function: Interrupt test code *
* For each INT1 interrupt XF,I/O pins IO3 and IO2 will toggle and *
* transmit char ’c’ through UART *
.title ”Interrupt 1 Test” ; 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 #0ffffh, ifr ; clear interrupts
splk #0001h, imr ; Enable int1 interrupts
splk #0010h, 60h
out 60h,icr ; Enable Intr1 in mode bit/ICR
splk #0000h, 60h
out 60h, wsgr ; Set zero wait states
splk #0e00ch, 60h ; configure I03 and IO2 as outputs
out 60h, aspcr ; set the aspcr for the above
splk #0411h, 60h ; default baud rate 1200, for UART @50 ns
out 60h,brd
mar *,ar1 ; Initialize AR pointer with AR1
lar ar1,#rxbuf
lar ar0,#size ; set counter limit
splk #0004h,61h ; set bit I/O 2
splk #0008h,62h ; set bit I/O 3
splk #0063h,63h ; set tx data
clrc INTM
clrc XF
wait: out 61h,iosr ; toggle IO2/3
idle
clrc XF ; toggle xf
b wait
inpt1: in 65h, icr ; Read icr
out 62h, iosr ; toggle IO2/3
out 65h, adtr ; send icr value through UART to check
; interrupt source
setc XF ; toggle xf
clrc INTM
ret
timer: ret
inpt23: ret
uart: ret
codtx: ret
codrx: ret
.end ; Assembler module end directive
; –optional