Texas Instruments TMS320C2XX Calculator User Manual


 
Task-Specific Program Code
C-16
Example C–11. Testing and Using Automatic Baud-Rate Detection on
Asynchronous Serial Port (autobaud.asm)
* File: autobaud.asm *
* Function: UART,auto baud test *
* Locks to incoming baud rate if the first character *
* is ”A” or ”a” & continuously echoes data received *
* through the port. *
* Once detection is complete, if the CAD and ADC bits are not *
* disabled and the interrupt is enabled, the ISR will occur for *
* all characters received and will change the baud setting again. *
.title ”Auto_baud detect” ; 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
* UART initialization *
splk #0ffffh,ifr ; clear interrupts
splk #0000h,60h
out 60h, wsgr ; Set zero wait states
splk #0c0a0h,61h ; reset the UART by writing 0
out 61h, aspcr ; 1 stop bit, rx interrupt, input i/o
splk #0e0a0h,61h ; CAD=1 enable
out 61h,aspcr
splk #4fffh,62h ; enable ADC bit
out 62h,iosr ; disable auto baud
splk #0000h, 63h ; set baud rate =0000 @ 20-MHz CLKOUT1
out 63h, brd
splk #20h,imr ; enable UART interrupt
mar *,ar1
lar ar1,#rxbuf
* Load data at DM300
lar ar1,#rxbuf
lar ar0, #size ; load buffer size
mar *,ar1 ; load data pointer
clrc intm
wait: clrc xf
idle
b wait