serialinter.c
来自「绝对超支的见如实系统设计ARN资料应有尽有 请大家要是需要请关注」· C语言 代码 · 共 31 行
C
31 行
Void SerialInter ( ) interrupt 4
{
EA = 0; //关中断
if (RI0) //接收中断标志位为1时进行储存数据操作
{
RI0 = 0; //接收中断标志位软件清0
if ((SeRecStart == 0)&(SBUF0 == 0xfb)) //判断接收标志及数据包起始标志
{
SeRecNum = 0; //接收数量清0
SeRecStart =1; //接收开始标志位置1有效
SeRec[SeRecNum] = SBUF0; //接收一个数据包开始字节
}
if ((SeRecStart)&(SeRecNum != 0)) //接收数据包中间数据
SeRec[SeRecNum] = SBUF0;
SeRecNum++; //接收数据顺序加1
if ((SBUF0 == 0xf7)&(SeRecNum == SeRec[1])) //判断数据包结束标志及长度
{
SeRecStart = 0; //接收开始标志清0
SeRecEnd = 1; //接收结束标志置1有效
RecRight = 1; //接收正确标志置1有效
}
if ((SeRecNum>2)&(SeRecNum > SeRec[1])) //判断是否接收到无效数据
{
SeRecStart = 0; //接收开始标志清0
SeRecEnd = 1; //接收结束标志置1有效
RecRight = 0; //接收正确标志置0
}
}
EA = 1; //中断服务程序结束,开中断
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?