串行中断服务程序

2019-07-15 17:29发布

void   ZHX1010_int(void)interrupt4
{
uchar key1;
if(RI) //如果为接收中断
{
  key1=SBUF;//读接收寄存器数据
  RI=0;//清接收标志位
  if((KWFLAG==0)&&(key1=KEYWORD[0])) //密码正确时,置标志位key_FLAG为1
  {
   KWFLAG=1;
  }
   else  if ((KWFLAG ==1)&&(key1!=KEYWORD[1])) //密码正确第二位错误时清标志位
    {
   KWFLAG=0;
     }
     else  if ((KWFLAG==1)&&(key1==KEYWORD[1])) //密码正确时,置标志位key_FLAG为2
     {
      KWFLAG=2;
     }
}
}


其中
uchar     KEYWORD[2]={0xaa,0xbb};


当第一个密码正确时,设置标志位为1,当第一位正确第二位错误时,清标志位,只有当两个密码都正确时才设置标志位为2


这个程序是怎么执行的,能实现要求的条件吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
武力戡乱
1楼-- · 2019-07-15 18:09
可以实现一次吧!
KWFLAG=2;之后呢!就永远啦!
http://bbs.elecfans.com/jishu_472128_1_1.html
我这个串口程序里面有段串口通讯程序,你可以参考一下。他还带回删功能。
282337449
2楼-- · 2019-07-15 18:48
武力戡乱 发表于 2015-4-22 00:17
可以实现一次吧!
KWFLAG=2;之后呢!就永远啦!
http://bbs.elecfans.com/jishu_472128_1_1.html

条件语句应该用的不正确吧
武力戡乱
3楼-- · 2019-07-15 20:28
282337449 发表于 2015-4-22 09:12
条件语句应该用的不正确吧

缺条件,就是让KWFLAG=2后恢复0或者1的功能。

一周热门 更多>