当前位置: 代码迷 >> 单片机 >> 在SBUF处设置0xAA, 运行到switch(a)处就返回了,不能进如 switch(a)内,该如何解决
  详细解决方案

在SBUF处设置0xAA, 运行到switch(a)处就返回了,不能进如 switch(a)内,该如何解决

热度:450   发布时间:2016-04-28 16:26:13.0
在SBUF处设置0xAA, 运行到switch(a)处就返回了,不能进如 switch(a)内,
while(1)
  {

  if(RI)
  {
  RI = 0;
  a = SBUF;
  switch(a)
  {

  case 0xAA;
  ..........

  case 0xBB

  ..........
  }
  }
  }

  仿真的时后,打开serial channel
  在SBUF处设置0xAA, 运行到switch(a)处就返回了,不能进如 switch(a)内,
请问是何原因,我已用UV2,UV3两个软件了.



------解决方案--------------------
case 0xaa:{...}break;
case 0xbb:{...}break;
....
default:{}


格式你没写错吧
------解决方案--------------------
”在SBUF处设置0xAA“,并不表示接受为0xAA,因为接受和发送是一个SBUF。
------解决方案--------------------
你设置的SBUF,是发送寄存器,不是接收寄存器.
a=SBUF;
读的是接收寄存器. 所以你设置的任何值都不会直接影响程序的运行.
------解决方案--------------------
你的单片机从哪里接受字符?对方不发0xAA你就进不去。有仿真头的话可以设置断点。没有用示波器看看是不是接受端有AA(01010101)序列脉冲。
------解决方案--------------------
a = SBUF;在这条语句上设置断点. 单步执行这条语句,然后把a改成你要的值.
  相关解决方案