DSP與PC機串行通信在減搖水艙試驗臺架控制系統(tǒng)中的
DSP中通信程序設(shè)計
DSP的SCI模塊使用中斷來接收PC機所傳送來的參數(shù),供控制算法主程序調(diào)用,DSP中串行數(shù)據(jù)接收流程圖如圖3所示。
圖3 DSP串行數(shù)據(jù)接收流程圖
DSP接收的數(shù)據(jù)為十六位,所以需要對高八位和低八位分別進行接收,高八位左移八位加上低八位,就是所要的十六位數(shù)據(jù),接收的數(shù)據(jù)依次保存在首地址為4002h的連續(xù)單元中。下面為SCI模塊初始化和接收中斷兩部分的匯編語言源程序。
SCI初始化程序如下:
LDP #0E1h
SPLK #0003h, MCRA
; 選中SCI輸入輸出引腳
LDP #0E0h
SPLK #27h, SCICCR
; 1個停止位,八位數(shù)據(jù),奇校驗,
; 空閑線方式,禁止自測試
SPLK #0003h, SCICTL1
; 允許TX,RX和內(nèi)部SCICLK
; 禁止RXERR,SLEEP,TXWAKE
SPLK #0002h, SCICTL2
; 允許RX中斷,禁止TX中斷
SPLK #0002h, SCIHBAUD
SPLK #0008h, SCILBAUD
; 40MHz SYSCLK下,波特率為9600bps
SPLK #0023h, SCICTL1
; 放棄復(fù)位SCI
LAR AR0, #SCITXBUF
LAR AR1, #SCIRXBUF
; 載入兩個緩沖器的地址
LDP #0
SPLK #04002h, RTB
; 定義接收數(shù)據(jù)的首地址
SPLK #01h, NUM
; 設(shè)置判別高8位還是低8位的變量
SPLK #0, RTD
; 接收數(shù)據(jù)寄存器
串行數(shù)據(jù)接收中斷程序如下:
SCI_INT:
LDP #0
LACC #02h
SUB NUM
BCND high, GT
; 判斷是否為高8位數(shù)據(jù)
MAR *, AR1
LACC *, AR1
ADD RTD
SACL RTD
LACC RTB
TBLW RTD
ADD #1
SACL RTB
SPLK NUM
high:
; 讀高8位數(shù)據(jù)
MAR *, AR1
LACC *, AR1
SACL RTD
LACC RTD, 8
SACL RTD
SPLK #02h, NUM
PC機中通信程序設(shè)計
在PC機中,串口通信的程序是用Visual Basic 6.0開發(fā)的,調(diào)用的是Microsoft 公司提供的 MSComm 控件。
評論