两片单片机,现称为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。
搞好几天了,希望大虾们帮帮忙!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
还是要谢谢你喽~
一周热门 更多>