|
#include<reg51.h>
sbit a=P1^0; //led1
sbit b=P1^1;
sbit c=P1^2;
sbit d=P1^3;
sbit h1=P0^0; //紅外對(duì)管
sbit h2=P0^1; //紅外對(duì)管
sbit h3=P0^4; //紅外對(duì)管
int go,back,left,right,clean,clean_over,xunji,xunji_over;
int flag_uart=0;
int flag_on=0;
void UsartConfiguration(); //串口初始化
void main()
{
UsartConfiguration();
while(1)
{
if(flag_uart==1)
{
ES=0;
flag_uart=0;
switch(flag_on)
{
case 1: go=1; break;
case 2: back=1; break;
case 3: left=1; break;
case 4: right=1; break;
case 5: clean=1; break;
case 6: xunji=1; break;
case 7: clean_over=1; break;
case 8: xunji_over=1; break;
}
ES=1;
flag_on=0;
}
if(go==1)
a=0;
}
}
//串口初始化
void UsartConfiguration()
{
SCON=0X50; //設(shè)置為工作方式1
TMOD=0X20; //設(shè)置計(jì)數(shù)器工作方式2
PCON=0X80; //波特率加倍
TH1=0XFd; //計(jì)數(shù)器初始值設(shè)置,注意波特率是9600
TL1=0XFd;
ES=1; //打開(kāi)接收中斷
EA=1; //打開(kāi)總中斷
TR1=1; //打開(kāi)計(jì)數(shù)器
}
//串口中斷:中斷入口號(hào)4
void Usart() interrupt 4
{
int receiveData;
receiveData=SBUF;//出去接收到的數(shù)據(jù)
RI = 0;//清除接收中斷標(biāo)志位
//new
flag_uart = 1;
if(receiveData==97) flag_on=1;
else if(receiveData=='i') flag_on=2;
else if(receiveData=='j') flag_on=3;
else if(receiveData=='k') flag_on=4;
else if(receiveData=='l') flag_on=5;
else if(receiveData=='m') flag_on=6;
else if(receiveData=='n') flag_on=7;
else if(receiveData=='o') flag_on=8;
SBUF=receiveData; //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
while(!TI); //等待發(fā)送數(shù)據(jù)完成
TI=0; //清除發(fā)送完成標(biāo)志位
}
|
評(píng)分
-
查看全部評(píng)分
|