DSP与PC机串行通信在减摇水舱试验台架控制系统中的
DSP中通信程序设计
DSP的SCI模块使用中断来接收PC机所传送来的参数,供控制算法主程序调用,DSP中串行数据接收流程图如图3所示。

图3 DSP串行数据接收流程图
DSP接收的数据为十六位,所以需要对高八位和低八位分别进行接收,高八位左移八位加上低八位,就是所要的十六位数据,接收的数据依次保存在首地址为4002h的连续单元中。下面为SCI模块初始化和接收中断两部分的汇编语言源程序。
SCI初始化程序如下:
LDP #0E1h
SPLK #0003h, MCRA
; 选中SCI输入输出引脚
LDP #0E0h
SPLK #27h, SCICCR
; 1个停止位,八位数据,奇校验,
; 空闲线方式,禁止自测试
SPLK #0003h, SCICTL1
; 允许TX,RX和内部SCICLK
; 禁止RXERR,SLEEP,TXWAKE
SPLK #0002h, SCICTL2
; 允许RX中断,禁止TX中断
SPLK #0002h, SCIHBAUD
SPLK #0008h, SCILBAUD
; 40MHz SYSCLK下,波特率为9600bps
SPLK #0023h, SCICTL1
; 放弃复位SCI
LAR AR0, #SCITXBUF
LAR AR1, #SCIRXBUF
; 载入两个缓冲器的地址
LDP #0
SPLK #04002h, RTB
; 定义接收数据的首地址
SPLK #01h, NUM
; 设置判别高8位还是低8位的变量
SPLK #0, RTD
; 接收数据寄存器
串行数据接收中断程序如下:
SCI_INT:
LDP #0
LACC #02h
SUB NUM
BCND high, GT
; 判断是否为高8位数据
MAR *, AR1
LACC *, AR1
ADD RTD
SACL RTD
LACC RTB
TBLW RTD
ADD #1
SACL RTB
SPLK NUM
high:
; 读高8位数据
MAR *, AR1
LACC *, AR1
SACL RTD
LACC RTD, 8
SACL RTD
SPLK #02h, NUM
PC机中通信程序设计
在PC机中,串口通信的程序是用Visual Basic 6.0开发的,调用的是Microsoft 公司提供的 MSComm 控件。
评论