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

2020-02-04 09:26发布

两片单片机,现称为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。


搞好几天了,希望大虾们帮帮忙!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。