#include
typedef unsigned int uint;
typedef unsigned char uchar;
sbit led0 = P1^0;//根据各位实际的单片机上的led灯位来设置
sbit led1 = P1^1;
sbit led2 = P1^2;
sbit led3 = P1^3;
sbit led4 = P1^4;
sbit led5 = P1^5;
sbit led6 = P1^6;
sbit led7 = P1^7;
uint pass = 0; //传递数据位
void UART_init() //设置串行通信 本晶振为11.0592MHZ
{
TMOD = 0x20;
TH1 = 0xfd;
TL1 = 0xfd; //波特率9600
SM0 = 0;
SM1 = 1; // 串口工作方式1 10位异步
REN = 1; //串口允许接收
TR1 = 1;
EA = 1;
ES =1 ; //串口中断
}
int main()
{
UART_init(); //波特率9600
while(1)
{
if(pass == 0x30)//0的ascaII码是48,转换为16进制是30,即0x30 蓝牙通信都是发送ASCII码
{
pass++;//点亮第一个led灯0x31
}
if(pass==0x39)//输入八次后返回点亮第一个灯
{
pass=0x31;
}
switch (pass)
{
case 0x31:led0 = 0;break;
case 0x32:led1 = 0;break;
case 0x33:led2 = 0;break;
case 0x34:led3 = 0;break;
case 0x35:led4 = 0;break;
case 0x36:led5 = 0;break;
case 0x37:led6 = 0;break;
case 0x38:led7 = 0;break;
case 0x39:P2 = 0xfe;break;
default:P2 = 0xff;break;//输入其他P2接口全为高电平灯全灭
}
}
}
void UART_INTERRUPT() interrupt 4
{
pass = SBUF;
RI = 0;
SBUF = pass; //手机和蓝牙模块通讯时,我们可以打开电脑串口调试工具查看我们的发送值)
while(!TI);
TI = 0;
}
大概率是波特率问题,或者是ascii没用对的问题