打印

接收机程序

[复制链接]
1886|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yufe|  楼主 | 2021-9-11 18:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//接收机程序如下,当接收机确认发射机发送的字符55H后,接收机发送0AAH表示同意接收。但是红色部分 我单步调试时令SBUF=0x55 就是出不来这个循环,执行不了 SBUF=0XAA; 不知道哪里错了,望指点。
#include<reg51.h>
unsigned int pf,i;
unsigned char idata *buf;

void delay()
{ unsigned char i,j;
for(i=200;i>0;i--)
for(j=500;j>0;j--);
}
void init()
{ P2=0x00;
SCON=0XD0;
PCON=0X00;
TMOD=0X20;
TH1=0Xf3;
TL1=0Xf3;
TR1=1;
}
void main()
{ init(); //初始化
do{
while(!RI);
RI=0;
}while(SBUF^0x55);
SBUF=0XAA;
while(!TI);
TI=0;
while(1)
{ pf=0; // 开始接收数据
for(i=0;i<10;i++)
{ buf=SBUF;
while(!RI);
RI=0;
pf+=buf;
}
while(!RI);
if(SBUF^pf)
{SBUF=0XEE;
while(!TI);
TI=0;
}
else
{ SBUF=0XDD;
for(i=0;i<10;i++)
{ P2=buf;
delay();
}
break;
}

}

}

使用特权

评论回复
沙发
llljh| | 2021-9-11 19:01 | 只看该作者
SBUF别重复读!它可是一个地址2个寄存器的

使用特权

评论回复
板凳
supernan| | 2021-9-11 19:10 | 只看该作者
你无法确定你现在读的是不是刚才读的那个物理寄存器

使用特权

评论回复
地板
huangchui| | 2021-9-11 19:13 | 只看该作者
这个寄存的“读”是破坏性的。

使用特权

评论回复
5
jlyuan| | 2021-9-11 19:16 | 只看该作者
do{
     while(!RI);
     RI=0;
     }while(SBUF^0x55);
这里不对}

使用特权

评论回复
6
zwll| | 2021-9-11 19:18 | 只看该作者
改成
uchar i;
for(;;){
    while(!RI);
    i = SBUF;
   RI = 0;
  if(i != 0x55) break;

使用特权

评论回复
7
xxrs| | 2021-9-11 19:20 | 只看该作者
我也遇到类似这样的问题,IIC通信,在线仿真通信通不过

使用特权

评论回复
8
zhenykun| | 2021-9-11 19:22 | 只看该作者

那你俩可以讨论讨论了

使用特权

评论回复
9
llljh| | 2021-9-11 19:23 | 只看该作者
本帖最后由 llljh 于 2021-9-11 19:26 编辑

同遇到

使用特权

评论回复
10
yufe|  楼主 | 2021-9-11 19:26 | 只看该作者
嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

983

主题

10170

帖子

1

粉丝