raxfeer 发表于 2012-2-28 14:50:33

单片机与单片机的串口通信

两片单片机,现称为A机、B机。
简单的以A机TXD接B机RXD,A机RXD接B机TXD,仅此而已。
A机程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void main()
{
SCON=0x50;      //SM1置1,REN置1
TMOD=0x20;   //8位自动重装
TH1=0xFD;      //波特9600
TL1=0xFD;
TR1=1;            //计时开
while(1)
{
if(P1!=0xff)       //如果P1被按下
   {
    SBUF=P1;
        while(TI==0);    //如果TI不等于1,即没有发送完,则一直停留此处。
        TI=0;                //如果TI等于1了,跳出上面的循环,执行TI置1
   }
}
}

B机程序:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay()
{
uchar i,j;
for(i=0;i<200;i++)
   for(j=0;j<200;j++);
}
void main()
{
TMOD=0x20;
SCON=0x50;
TH0=0xfd;
TL0=0xfd;
TR1=1;
while(1)
   {
          while(RI==0);
          RI=0;
          P1=SBUF;    //P1接的是LED,即是否有输出用LED观察。
          delay();
   }
}

第二个程序就不上注释了,其实都是很简单的,就是调试的时候出了问题,无论如何按键,都没有反应,此程序我改过很多次,最好的一次效果是调试助手能接消息,但接收机不能正常点亮LED。


搞好几天了,希望大虾们帮帮忙!

raxfeer 发表于 2012-2-28 15:52:09

好吧,我自己知道了,一个很低级的错误……

lxa0 发表于 2012-2-28 21:42:05

回复【1楼】raxfeer
-----------------------------------------------------------------------

虽然晚来一步
但是看不懂C
也帮不上你
抱歉
然而你通过自己的努力
解决了问题
很好
高手的队伍里又多了一员
祝贺

raxfeer 发表于 2012-3-24 11:00:18

lxa0 发表于 2012-2-28 21:42 static/image/common/back.gif
回复【1楼】raxfeer
-----------------------------------------------------------------------



还是要谢谢你喽~
页: [1]
查看完整版本: 单片机与单片机的串口通信