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 + -
显示快捷键?