#include<stc12c5a.h>
#include <intrins.h>
#define uchar unsigned char
uchar count=0;
uchar redata;
sbit led_0 = P0^0;
sbit led_1 = P0^1;
sbit led_2 = P0^2;
/********************延时函数*********************/
void delay_us(unsigned int t)
{
while(t--)
{
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
}
//延时函数(24M晶振下延时1ms)
void delay_ms(unsigned int time)
{
for(;time>0;time--)
{
delay_us(1000);
}
}
/*******************************************************/
/*****************串口初始化****************************/
void USART_Init()
{
 CON &= 0x7f;
SCON = 0x50;
AUXR |= 0x40;
TMOD=0X20;
TL1 = 0xB2;
TH1 = 0xB2;
TR1 = 1;
ES = 1;
EA = 1;
}
/******************************************************/
/************************串口接收中断函数*************/
void usart_receive(void) interrupt 4
{
EA = 0;
if(RI)
{
RI = 0;
redata=SBUF;
count++; //(无论接受的是什么信号)每接收一个信号,计数标志加1
if(count==2)
{
count=0;
}
}
EA = 1;
}
/****************************************************/
/*********************服务函数***********************/
void led0()
{
while(1)
{
led_0 = 0;
delay_ms(100);
led_0=1;
delay_ms(100);
}
}
void led1()
{
while(1)
{
led_1 = 0;
delay_ms(100);
led_1=1;
delay_ms(100);
}
}
void led2()
{
while(1)
{
led_2 = 0;
delay_ms(100);
led_2=1;
delay_ms(100);
}
}
/*************************************************/
/*****************函数菜单**************************/
void menu()
{
switch(count)
{
case(0):
led0();
case(1):
led1();
case(2):
led2();
}
}
/**************************************************/
void main()
{
USART_Init();
while(1)
{
menu();
}
}
这是我写的一个程序,功能是用我写的一个手机软件,通过蓝牙,由手机发送信号控制单片机,实现不同led的闪烁。。。。。手机每次发送的信号是‘1’,
不过现在程序都没能实现我想要的功能,调试了好久。。。。。路过的高手不吝赐教吧
|