/********主机发送********/
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
uchar datt;
sbit LED=P1^0;
/**********************/
void delay_ms(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}
/**********************/
void UartInit(void) //9600bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速 SMOD=0 波特率不加倍
SCON = 0x50; //8位数据,可变波特率 SM0=0 SM1=1 SM2=0 REN=1 TB8=0 RB8=0 TI=0 RI=0
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
/*********************/
void main()
{
UartInit();
EA=1;
ES=1;
while(1)
{
SBUF=0X55;
while(!TI);
TI=0;
delay_ms(100);
}
}
/************************************************/
/********从机接收********/
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
uchar datt;
sbit LED=P1^0;
/**********************/
void delay_ms(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}
/**********************/
void UartInit(void) //9600bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速 SMOD=0 波特率不加倍
SCON = 0x50; //8位数据,可变波特率 SM0=0 SM1=1 SM2=0 REN=1 TB8=0 RB8=0 TI=0 RI=0
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
/*********************/
void main()
{
UartInit();
EA=1;
ES=1;
while(1)
{
while(!RI);
RI=0;
LED=~LED;
P0=SBUF;
delay_ms(100);
}
}
LED端无波形输出,故认为是从机没能接收到信号。肯请指点一二。。。 |