这是用蓝牙控制led灯的程序,请问各位大侠这个有错误吗?
时间:10-02
整理:3721RD
点击:
#include<reg52.H>
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
#define light0 'C'
#define light1 'D'
#define light2 'A'
#define light3 'B'
#define light4 'F'
#define light5 '1'
#define light6 '2'
#define light7 '3'
char code str[] = "收到指令,led0亮!\n";
char code str1[] = "收到指令,led1亮!\n";
char code str2[] = "收到指令,led2亮!\n";
char code str3[] = "收到指令,led3亮!\n";
char code str4[] = "收到指令,led4亮!\n";
char code str5[] = "收到指令,led5亮!\n";
char code str6[] = "收到指令,led6亮!\n";
char code str7[] = "收到指令,led7亮!\n";
bit flag_REC=0;
bit flag =0;
unsigned char i=0;
unsigned char dat=0;
unsigned char buff[5]=0; //接收缓冲字节
//延时函数
void delay(unsigned int k)
{
unsigned int x,y;
for(x=0;x<k;x++)
for(y=0;y<2000;y++);
}
//字符串发送函数
void send_str( ) // 传送字串
{
unsigned char i = 0;
while(str[i] != '\0')
{
SBUF = str[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str1( )// 传送字串
{
unsigned char i = 0;
while(str1[i] != '\0')
{
SBUF = str1[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str2( )// 传送字串
{
unsigned char i = 0;
while(str2[i] != '\0')
{
SBUF = str2[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str3() // 传送字串
{
unsigned char i = 0;
while(str3[i] != '\0')
{
SBUF = str3[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str4()// 传送字串
{
unsigned char i = 0;
while(str4[i] != '\0')
{
SBUF = str4[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str5()// 传送字串
{
unsigned char i = 0;
while(str4[i] != '\0')
{
SBUF = str4[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str6()// 传送字串
{
unsigned char i = 0;
while(str4[i] != '\0')
{
SBUF = str4[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str7()// 传送字串
{
unsigned char i = 0;
while(str4[i] != '\0')
{
SBUF = str4[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void lighton0(void)
{
P1_0=0;
}
void lighton1(void)
{
P1_1=0;
}
void lighton2(void)
{
P1_2=0;
}
void lighton3(void)
{
P1_3=0;
}
void lighton4(void)
{
P1_4=0;
}
void lighton5(void)
{
P1_5=0;
}
void lighton6(void)
{
P1_6=0;
}
void lighton7(void)
{
P1_7=0;
}
void sint() interrupt 4 //中断接收3个字节
{
if(RI) //是否接收中断
{
RI=0;
dat=SBUF;
if(dat=='O'&&(i==0)) //接收数据第一帧
{
buff[i]=dat;
flag=1; //开始接收数据
}
else
if(flag==1)
{
i++;
buff[i]=dat;
if(i>=2)
{i=0;flag=0;flag_REC=1 ;} // 停止接收
}
}
}
/*--主函数--*/
void main(void)
{
TMOD=0x20;
TH1=0xFd; //11.0592M晶振,9600波特率
TL1=0xFd;
SCON=0x50;
PCON=0x00;
TR1=1;
ES=1;
EA=1;
while(1) /*无限循环*/
{
if(flag_REC==1) //
{
flag_REC=0;
if(buff[0]=='O'&&buff[1]=='N') //第一个字节为O,第二个字节为N,第三个字节为控制码
switch(buff[2])
{
case light0 : // 前进
send_str( );
lighton0();
break;
case light1: // 后退
send_str1( );
lighton1();
break;
case light2: // 左转
send_str2( );
lighton2();
break;
case light3: // 右转
send_str3( );
lighton3();
break;
case light4: // 停止
send_str4( );
lighton4();
break;
case light5: // 停止
send_str5( );
lighton5();
break;
case light6: // 停止
send_str6( );
lighton6();
break;
case light7: // 停止
send_str7( );
lighton7();
break;
}
}
}
}
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
#define light0 'C'
#define light1 'D'
#define light2 'A'
#define light3 'B'
#define light4 'F'
#define light5 '1'
#define light6 '2'
#define light7 '3'
char code str[] = "收到指令,led0亮!\n";
char code str1[] = "收到指令,led1亮!\n";
char code str2[] = "收到指令,led2亮!\n";
char code str3[] = "收到指令,led3亮!\n";
char code str4[] = "收到指令,led4亮!\n";
char code str5[] = "收到指令,led5亮!\n";
char code str6[] = "收到指令,led6亮!\n";
char code str7[] = "收到指令,led7亮!\n";
bit flag_REC=0;
bit flag =0;
unsigned char i=0;
unsigned char dat=0;
unsigned char buff[5]=0; //接收缓冲字节
//延时函数
void delay(unsigned int k)
{
unsigned int x,y;
for(x=0;x<k;x++)
for(y=0;y<2000;y++);
}
//字符串发送函数
void send_str( ) // 传送字串
{
unsigned char i = 0;
while(str[i] != '\0')
{
SBUF = str[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str1( )// 传送字串
{
unsigned char i = 0;
while(str1[i] != '\0')
{
SBUF = str1[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str2( )// 传送字串
{
unsigned char i = 0;
while(str2[i] != '\0')
{
SBUF = str2[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str3() // 传送字串
{
unsigned char i = 0;
while(str3[i] != '\0')
{
SBUF = str3[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str4()// 传送字串
{
unsigned char i = 0;
while(str4[i] != '\0')
{
SBUF = str4[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str5()// 传送字串
{
unsigned char i = 0;
while(str4[i] != '\0')
{
SBUF = str4[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str6()// 传送字串
{
unsigned char i = 0;
while(str4[i] != '\0')
{
SBUF = str4[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void send_str7()// 传送字串
{
unsigned char i = 0;
while(str4[i] != '\0')
{
SBUF = str4[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void lighton0(void)
{
P1_0=0;
}
void lighton1(void)
{
P1_1=0;
}
void lighton2(void)
{
P1_2=0;
}
void lighton3(void)
{
P1_3=0;
}
void lighton4(void)
{
P1_4=0;
}
void lighton5(void)
{
P1_5=0;
}
void lighton6(void)
{
P1_6=0;
}
void lighton7(void)
{
P1_7=0;
}
void sint() interrupt 4 //中断接收3个字节
{
if(RI) //是否接收中断
{
RI=0;
dat=SBUF;
if(dat=='O'&&(i==0)) //接收数据第一帧
{
buff[i]=dat;
flag=1; //开始接收数据
}
else
if(flag==1)
{
i++;
buff[i]=dat;
if(i>=2)
{i=0;flag=0;flag_REC=1 ;} // 停止接收
}
}
}
/*--主函数--*/
void main(void)
{
TMOD=0x20;
TH1=0xFd; //11.0592M晶振,9600波特率
TL1=0xFd;
SCON=0x50;
PCON=0x00;
TR1=1;
ES=1;
EA=1;
while(1) /*无限循环*/
{
if(flag_REC==1) //
{
flag_REC=0;
if(buff[0]=='O'&&buff[1]=='N') //第一个字节为O,第二个字节为N,第三个字节为控制码
switch(buff[2])
{
case light0 : // 前进
send_str( );
lighton0();
break;
case light1: // 后退
send_str1( );
lighton1();
break;
case light2: // 左转
send_str2( );
lighton2();
break;
case light3: // 右转
send_str3( );
lighton3();
break;
case light4: // 停止
send_str4( );
lighton4();
break;
case light5: // 停止
send_str5( );
lighton5();
break;
case light6: // 停止
send_str6( );
lighton6();
break;
case light7: // 停止
send_str7( );
lighton7();
break;
}
}
}
}
发送asc码,不能发汉字吧