logo资料库

串行通信中断方式子程序.pdf

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
串行通信中断方式子程序 串行通信中断方式子程序 本文给大家分享了串行通信中断方式子程序。 /*-----------------------------------------------------* *文件描述:本文件包含了串行通信的4子程序,分别为: * *(1)SCISend1:串行发送1字节 * *(2)SCISendN:串行发送n字节 * *(3)SCIRe1:串行接收1字节 * *(4)SCIReN:串行接收n字节 * //[以下为子程序源代码] //[包含头文件] #include "SCI.h" /*SCISend1:串行发送1个字节-----------------------------* *功 能:串行发送1个字节 * *参 数:要发送的数据 * *返 回:无 * *-----------------------------------------------------*/ void SCISend1(unsigned char o) {//判断ReStatusR的第SendTestBit位是否为1,是1可以发送 while(1) if ((ReSendStatusR & (1< { ReSendDataR=o; break;} } /*SCISendN:串行发送N个字节-----------------------------* *功 能:发送数组中的N个字节数据 * *参 数:待发送的数据字节数及其要存放的数组首地址 * *返 回:无 * *-----------------------------------------------------*/ void SCISendN(unsigned char n,unsigned char ch[]) {int i; for(i=0;i SCISend1(ch[i]); } /*SCIRe1:串行收一个字节数据----------------------------* *功 能:从串行口接收1个字节的数据 * *参 数:标志指针p * *返 回:接收到的数据(若接收失败,返回0xff) * *说 明:参数*p带回接收标志=0收到数据,=1未收到数据 *
*-----------------------------------------------------*/ unsigned char SCIRe1(unsigned char *p) { unsigned int k; unsigned char i; //ReStatusR第ReTestBit位为1表示可接收数据 for(k=0;k<0xfbbb;k++) if ((ReSendStatusR & (1< {i=ReSendDataR; *p=0x00; break;} if(k>=0xfbbb) {i=0xff; *p=0x01;} return i; //返回接收到的数据 } /*SCIReN:HC08串行接收N个字节---------------------------* *功 能:接收N个字节数据,并存放在ch数组中 * *参 数:待接收的数据字节数及其存放的数组首地址 * *返 回:接收标志=0收到数据,=1未收到数据 * *-----------------------------------------------------*/ unsigned char SCIReN(unsigned char n,unsigned char ch[]) {int m; unsigned char fp; m=0; while (m { ch[m]=SCIRe1(&fp); if (fp==1) return 1; m++; } return 0; }
分享到:
收藏