21ic电子技术开发论坛 单片机与嵌入式系统 侃单片机论坛 51双机通讯的问题
发新帖我要提问
返回列表
打印

51双机通讯的问题

[复制链接]
1333|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanglei_hit|  楼主 | 2013-8-25 14:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近小弟刚开始研究单片机,需要用到双机通讯的东西。可是遇到点问题,两个芯片分别和电脑通讯没问题,但是把他们连在一起却没有现象。目的是主机每隔500ms发送一个数过去,从机一直显示数在8个led上。  电路就是rxd txd交叉连接并且共地。  有没有大神给看看的,或者给小弟发一个能用的双机通讯的代码我回去好好研究一下,感激不尽啊。。。
主机::
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

unsigned char num;
sbit key1=P2^0;
sbit d1=P1^0;
sbit d2=P1^1;

void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void main()
{       
        SM0=0;
        SM1=1;
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;

//        EA=1;
//        ES=1;
        TR1=1;        
        while(1)
        {               
                for(num=0;num<10;num++)
                {
                        SBUF=num;
                        while(TI==0);
                        TI=0;
                        delay(500);
                }
        }
}
从机::

#include<reg52.h>


void main()
{
        REN=1;
        SM0=0;
        SM1=1;
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;

        while(1)
        {
                while(RI==0);
                RI=0;
                P1=SBUF;
        }
}
  

相关帖子

沙发
568581185| | 2013-8-25 16:41 | 只看该作者
建议您读取SBUF的时候用一个中间变量过度一下,比如设置一个变量a,使用a=SBUF;P1=a;试试

使用特权

评论回复
板凳
wes7856863| | 2013-8-25 17:31 | 只看该作者
0 0我写了个12的SPI双机通讯

使用特权

评论回复
地板
Andylue| | 2013-8-25 18:59 | 只看该作者
从机好像没有开串口中断吧,
EA=1;
ES=1;

使用特权

评论回复
5
yanglei_hit|  楼主 | 2013-8-25 20:49 | 只看该作者
568581185 发表于 2013-8-25 16:41
建议您读取SBUF的时候用一个中间变量过度一下,比如设置一个变量a,使用a=SBUF1=a;试试
...

这么做的目的是什么呢??总觉得接收和发送用一个寄存器很别扭

使用特权

评论回复
6
yanglei_hit|  楼主 | 2013-8-25 20:50 | 只看该作者
Andylue 发表于 2013-8-25 18:59
从机好像没有开串口中断吧,
EA=1;
ES=1;

可是从机并没有中断程序也需要吗

使用特权

评论回复
7
chenyu988| | 2013-8-25 20:57 | 只看该作者
嗯 从机中断没开,
ES=1;
EA=1;

使用特权

评论回复
8
yanglei_hit|  楼主 | 2013-8-25 21:22 | 只看该作者
chenyu988 发表于 2013-8-25 20:57
嗯 从机中断没开,
ES=1;
EA=1;

没有中断函数也需要开中断的吗???  可是用电脑的串口助手上试好使的

使用特权

评论回复
9
chenyu988| | 2013-8-25 21:26 | 只看该作者
yanglei_hit 发表于 2013-8-25 21:22
没有中断函数也需要开中断的吗???  可是用电脑的串口助手上试好使的

RI是接收中断标志位

使用特权

评论回复
10
qzc13457| | 2013-8-26 17:44 | 只看该作者
yanglei_hit 发表于 2013-8-25 20:49
这么做的目的是什么呢??总觉得接收和发送用一个寄存器很别扭

是两个地址相同的寄存器

使用特权

评论回复
11
568581185| | 2013-8-26 21:35 | 只看该作者
yanglei_hit 发表于 2013-8-25 20:49
这么做的目的是什么呢??总觉得接收和发送用一个寄存器很别扭

这个没有什么好别扭的吧,SBUF的收发寄存器在物理上是独立的,只是名称一样而已

使用特权

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

本版积分规则

1

主题

4

帖子

1

粉丝
关闭 热门推荐
快速回复 在线客服 返回列表 返回顶部