//[SCI.c]串行通信----------------------------------------------------------* //本文件包含: * // (1)SCIInit:串行口初始化 * // (2)SCISend1:串行发送1个字节 * // (3)SCISendN:串行发送n字节 * // (4)SCIRe1:串行接收1字节 * // (5)SCIReN:串行接收n字节 * //硬件连接: * // MCU的SCI0模块接口与PC方的串行口相连 * //-------------------------------------------------------------------------* //头文件 #include "SCI.h" //串行通信头文件 //SCIInit:DG128串行口0初始化函数-------------------------------------------* //功 能: * // 开SCI0关SCI1,关串口中断,对串行口进行初始化,默认为允许SCI,正常码输出 * // ,8位数据,无校验等,允许发送器允许接收器.查询方式收发,波特率为9600 * // (设fBUS=19.6608Mhz) * //参 数:无 * //返 回:无 * //说 明: * // (1)若初始化SCI1,只需SCI0->SCI1 * // (2)该初始化函数与芯片有关 * //-------------------------------------------------------------------------* void SCIInit(void) { INT8U t; //定义波特率Bt=9600,SCI0BD=fBUS/(16*Bt) SCI0BDL = 0x9c; //须先给低8位赋值 SCI0BDH = 0x00; //再给高8位赋值 SCI0CR1 = 0x00; //设置允许SCI,正常码输出,8位数据,无校验 t = SCI0DRL; //读数据寄存器(清0) t = SCI0SR1; //读状态寄存器(清0) SCI2CR2 = 0x0C; //允许SCI0接收和发送 查询方式 SCI2BDL = 0x9c; //须先给低8位赋值 SCI2BDH = 0x00; //再给高8位赋值 SCI2CR1 = 0x00; //设置允许SCI,正常码输出,8位数据,无校验 t = SCI2DRL; //读数据寄存器(清0) t = SCI2SR1; //读状态寄存器(清0) SCI2CR2 = 0x0C; //允许SCI0接收和发送 查询方式 } //SCISend1:串行发送1个字节-------------------------------------------------* //功 能:串行发送1个字节 * //参 数:o=要发送的数据 * //返 回:无 * //-------------------------------------------------------------------------* void SCISend1(INT8U o) { //判断ReStatusR的第SendTestBit位是否为1,是1可以发送 while (1) if ((ReSendStatusR & (1<= 0xfbbb) { i=0xff; *p=0x01; } return i; //返回接收到的数据 } //SCIReN:HC08串行接收N个字节-----------------------------------------------* //功 能:接收N个字节数据,并存放在ch数组中 * //参 数:n=待接收的数据字节数,ch=存放待接收数据的数组首地址 * //返 回:接收标志=0收到数据,=1未收到数据 * //内部调用函数:SCIRe1 * //-------------------------------------------------------------------------* INT8U SCIReN(INT8U n,INT8U ch[]) { INT8U m; INT8U fp; m = 0; //接收n个数据 while (m