#include <reg51.h>
void send(unsigned char send_date);
unsigned char resive();
unsigned char resive_date;//接受到得数据保存在resive_date单元
void initT1();
void delay(int time);
void led_light();
void led_run();
void led_close();
void serial();
void initT1()//定时器X初始化,设置波特率
{
TMOD=0x20;//方式控制
PCON=0x00;
SCON=0x50;//方式一,允许接收
//PCON=0x00;
EA=0;
ET1=0;
TH1=0xfd; // 给定时器赋初值
TL1=0xfd;
TR1=1;
}
void serial_init()//串口初始化,方式一,允许接收
{
SCON=0x50;//方式一,允许接收
PCON=0x00;
EA=0;
ES=0;//关闭串口中断
}
void send (unsigned char send_date)//发送子程序
{
TI=0;
SBUF=send_date; // 发送一个字节
while(!TI)
;
TI=0;
}
unsigned char resive()//接收子程序
{
unsigned char resive_date;
while(!RI)
;
RI=0;
resive_date=SBUF;
return resive_date;
}
void led_light()
{
P1=0x00;
}
void led_run()
{
unsigned char i;
do{
for(i=0;i<8;i++)
P1=~(0x01<<i);
}
while(1);
}
void led_close()
{
P1=0xff;
}
void delay(int time)
{
while(time--)
;
}
void main() //主程序
{
unsigned char redate,i;
void initT1(); //定时器1初始化,用于波特率的设定
//void serial_init(); //串口初始化
for(i=1;i<255;i++)
{
send(i);
delay(32000);
delay(32000);
}
redate=resive();//接收到得数据
switch(redate)
{
case 0xff:led_light();
break;
case 0xfe:led_run();
break;
default: led_close();
}
} |