Task-Specific Program Code
C-14
Example C–9. Asynchronous Serial Port Transmission (uart.asm) (Continued)
lar
ar1,#rxbuf
lar
ar0, #20
; load buffer size
mar
*,ar1
; load data pointer
clrc
intm
wait:
clrc
xf
; toggle xf bit
idle
b
wait
uart:
setc
xf
; toggle xf bit
splk
#0ffffh,67h
out
*+,adtr
; transmit character from data buffer@300
mar
*,ar0
banz
skip,ar1
; check if size=0, and reload
lar
ar1,#rxbuf
lar
ar0,#20
; set size = character length
skip:
splk
#0020h,ifr
; Clear ifr bit
clrc
intm
ret
inpt1:
ret
inpt23:
ret
timer:
ret
codtx:
ret
codrx:
ret
.end
; Assembler module end directive
; –optional
Example C–10. Loopback to Verify Transmissions of Asynchronous Serial Port (echo.asm)
* File:
echo.asm
*
* Function:
UART Test Code
*
*
Continuously echoes data received by UART at 1200 baud.
*
*
Received data will be stored in the buffer @300
*
.title ” UART/ASP loop back”
; 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