首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2012-02-21 
在SBUF处设置0xAA,运行到switch(a)处就返回了,不能进如 switch(a)内,while(1){if(RI){RI 0aSBUFswitc

在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改成你要的值.

热点排行