27,383
社区成员
发帖
与我相关
我的任务
分享
void COM_Event () interrupt 4
{
BYTE dat = 0;
if(RI == 1)
{
dat = SBUF;
RI = 0;
switch(Approach){
case 0: //根据步骤,等待包头的出现,若不是包头数据就继续等待包头
if(dat==0xB2){
Approach = 1;
dataXOR = 0xB2;
}else{
Approach = 0;
}
break;
case 1: //根据步骤,判断机号是否与自己的一致
if(dat==P1){ //P1是机号的IO口
Approach = 2;
dataXOR = dataXOR ^ dat;
}else{
//弃包
Approach = 0;
}
break;
//... 以下步骤省略 ....
case 200: //接收异或校检码
NowXOR = dat;
if(dataXOR!=NowXOR){
Approach = 0;
}else{
Approach = 201;
}
break;
case 201: //接收包尾
if(dat==0xB3){
//操作过程在主程序中执行,这里是设置执行过程的参数
//当这个参数为1时主程序的执行过程才开始运作
IsReadOver = 1;
}else{
IsReadOver = 0;
}
Approach = 0;
break;
}
}else{
TI = 0;
}
}