多机通讯调试过程中,我把单片机的TXD、RXD引脚短接后,为什么把TB8置1后发送数据,收到的数据还是RB8=0?
程序源码如下,串口助手的调试结果如图。调了好久也没找出问题。。。求大佬们提点。
之前发的帖子沉了,新人积分少,还望大家多多包涵。(没找到在哪里删除旧帖,如有知道的麻烦告知,管理大大请原谅我的重复发贴)
- //==================================================================================
- // 多机通讯从机1程序
- //注:从机先接收地址,然后与自己的地址比较,正确了再接收数据,修改地址可挂多个从机
- //==================================================================================
- #include "reg52.h"
- #define uint unsigned int
- #define uchar unsigned char
- //#define addr 0x31 //从机1地址
- #define addr1 0x31 //从机1地址
- #define addr2 0x32 //从机2地址
- sfr AUXR=0x8E;
- /*蜂鸣器相关*/
- //=====================================蜂鸣器相关=========================================//
- sbit spk=P1^7;
- uchar code period[6]={1,2,5,10,30,100};
- uchar code time[6]={1,30,15,10,6,3};
- void delay10ms() //@11.0592MHz
- {
- unsigned char i = 108, j = 145;
- do
- {
- while (--j);
- }
- while (--i);
- }
- void delay(uint a)
- {
- while(a--)
- {
- delay10ms();
- }
- }
- void beep(uchar k) //T是闹钟固定周期,t响铃次数
- {
- uint runtime;
- while(runtime!=time[k])
- {
- spk=!spk;
- delay(period[k]);
- spk=!spk;;
- delay(period[k]);
- runtime++;
- }
- runtime=0;
- }
- //=====================================蜂鸣器相关=========================================//
- void Uart_Init(void)
- {
- PCON &= 0x7F; //波特率不倍速
- SCON = 0xf0; //8位数据,可变波特率
- // SCON = 0x50;
- AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T
- AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
- TMOD=0x20; //定时器T1使用工作方式2
- TL1 = 0xFD; //设定定时初值
- TH1 = 0xFD; //设定定时器重装值
- ET1 = 0; //禁止定时器1中断
- TR1 = 1; //启动定时器1
- RI=1;
- TI=1;
- }
- void send(uchar Data) //发送数据程序
- {
- while(!TI); //等待发送完毕
- TI=0;
- SBUF=Data;
- // while(!TI);
- }
- void main()
- {
- // uchar tem,Data,n=0x30,m=0;
- Uart_Init();
- sm2=1;
- while(1)
- {
- delay(50);
- TB8=1; //地址帧
- send(0x31); //发送地址
- send(RB8);
- if(RB8==0) beep(0);
- if(RB8==1) beep(5);
- delay(50);
- TB8=0; //数据帧
- send(0x32); //发送数据
- send(RB8);
- if(RB8==0) beep(0);
- if(RB8==1) beep(5);
- }
- }
本帖最后由 太子的空间 于 2017-7-30 21:54 编辑
新建 Microsoft Office Word 文档.odt
(734.71 KB, 下载次数: 47) 下载上面那个带问号的那个文件,
太子的空间 发表于 2017-7-30 21:55
下载上面那个带问号的那个文件, 里面不是有图文解释吗?好好看几扁
太子的空间 发表于 2017-7-31 12:01
里面不是有图文解释吗?好好看几扁 本帖最后由 太子的空间 于 2017-7-31 13:21 编辑
我也没弄过这个,资料是我在别的地方给你找的,可是也在浪费别人时间和积分呢,每个人也不是万能的,如果资料没有用,还望楼主坐等下一位高人 本帖最后由 gfzgmd 于 2017-7-31 17:37 编辑
太子的空间 发表于 2017-7-30 20:29
这里面有详细解释,如果觉得有用,请支持一下,
太子的空间 发表于 2017-7-31 13:08
我也没弄过这个,资料是我在别的地方给你找的 本帖最后由 gfzgmd 于 2017-7-31 17:36 编辑
太子的空间 发表于 2017-7-30 20:29
这里面有详细解释,如果觉得有用,请支持一下,
太子的空间 发表于 2017-7-31 13:08
我也没弄过这个,资料是我在别的地方给你找的,可是也在浪费别人时间和积分呢,每个人也不是万能的,如果资料没有用,还望楼主坐等下一位高人 楼主还是把那两个链接删除了吧,你这样做等于出卖了帮助你的人,以后谁还愿意帮助你?这样对论坛影响也不好,自己想想吧 以后检查程序时仔细一点。。。。
你把TB8置1,发送的却是RB8,能对么???
还有,别人回复都是希望对你有所帮助的,哪怕找来的资料你看了确实没什么帮助,也要有感激的心态,毕竟没有谁是万能的。
blust 发表于 2017-7-31 16:35
以后检查程序时仔细一点。。。。
你把TB8置1,发送的却是RB8,能对么???
blust 发表于 2017-7-31 16:37
还有,别人回复都是希望对你有所帮助的,哪怕找来的资料你看了确实没什么帮助,也要有感激的心态,毕竟没有谁是万能的。 本帖最后由 gfzgmd 于 2017-7-31 18:22 编辑
太子的空间 发表于 2017-7-31 16:30
楼主还是把那两个链接删除了吧,你这样做等于出卖了帮助你的人,以后谁还愿意帮助你?这样对论坛影响也不好,自己想想吧 不管是谁的资料,只要不犯法,只要对大家有帮助,都可以用来学习,提高自己的能力,难道我们中国人自己对自己还要说侵权问题吗,,谁能保证自己发的帖子都是原创,举个例子,难道你小时候没有抄过别人的作业吗?或者是这个程序是你自己写的吗?不管怎么说,大家互相帮助互相学习,才能提高自己的知识,往大的说不是提高我们国家的知识吗
gfzgmd 发表于 2017-7-31 17:19
老哥,TB8、RB8在多机通讯里作为一对标志位出现。主机TB8置1后发送地址,TB8清零发送送数据。
从机检测RB8判断收到的是数据还是地址。TB8作为标志位,下一次发送(0x31等)时位于数据的第九位。
我后来发送RB8是为了看从机的RB8是否跟着TB8改变。 ...
求助!!为什么接上运放后前面的电流会增加?为什么接上运放后前面的电流会增加,本来前面的电流是10:1分压得到的0到1.2,接上运放后就不是0到12了?
当然会增加,因为被R1和R3这个反馈回路分流了。除非R1和R3这两
|