51单片机串行通信
单片机1P1口的状态,通过串行通信方式传递到单片机2P2口输出
/*******************************************
发送信息
***************************************/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void send(uchar state)
{
SBUF=state;
while(TI==0);
TI=0;
}
void SCON_init()
{
SCON=0X40;//选择串口通信方式1
TMOD=0x20;//设置计数器T1为计数方式2(自动重装初值)
PCON=0x00;//设置波特率倍增
TH1=0xFD;
TL1=0xFD;
TI=0;
TR1=1;
}
void main()
{
SCON_init();
while(1)
send(P1);
}

/*******************************************
接收机接收信息
***************************************/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar state;
void receive()
{
while(RI==0);
state=SBUF;
RI=0;
}
void SCON_init()//接受设置函数
{
SCON=0X50;//选择串口通信方式1,允许接受
TMOD=0x20;//设置计数器T1为计数方式2(自动重装初值)
PCON=0x00;//设置波特率倍增
TH1=0xFD; //计数器工作与方式2,高位存放初值,计数溢出后自动装入TL0
TL1=0xFD; //计数单元,从FD开始计数
RI=0;
TR1=1;
}
void main()
{
SCON_init();
while(1) //等待接受
{
receive();
P2=state;
}
}