51单片机 HC05串口通信写好了 不知道怎么加进去 大神救救孩子吧
写了个独立的串口通信程序,是能正常收发的,可是怎么加进整个程序,没有思路啊。。。整了两天,都不对
波特率9600 晶振12M
单独的串口通信程序:
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
void UsartInit()
{
SCON=0X50;
TMOD=0X20;
PCON=0X80;
TH1 = (65535-1000)/256;
TL1 = (65535-1000)%256;
EA=1;
ES=1;
TR1=1;
}
void main()
{
UsartInit();
while(1);
}
void Usart() interrupt 4
{
u8 rec;
rec=SBUF;
RI = 0;
SBUF=rec;
while(!TI);
TI=0;
}
整个程序:
void main(void)
{
Delay_1ms(100);
LCD_Init();
TimerInit();
PageInit();
DataLoad();
while(1)
{
ModeDisplay(); //模式切换
Delay_1ms(100);
DS1302_Read(); //时间读取
PageDisplay(); //写入
Delay_1ms(500); //页面显示
GetTemp(); //温度读取
GetLight(); //获取光强
TimeControl(); //时间控制
TempLightControl(); //温度光强控制
LanControl();
Delay_1ms(20);
WrToROM(CloseTime,5,3);
Delay_1ms(20);
WrToROM(OpenTime,0,3);
Delay_1ms(20);
LCD_Refresh();
Delay_1ms(20); //延时
}
}
void Timer_ISR(void) interrupt 1
{
TH0 = (65536-21000)/256;
TL0 = (65536-21000)%256;
KEY_Scan();
if(AlarmCon>0)
{
AlarmCon++;
if(AlarmCon>=5)
{
AlarmCon=0;
BUZZER=1;
}
}
/*-------------------------------------*/
if(Mode==1)
{
if(IR_Delay>0)
{
IR_Delay--;
}
else
{
Y_RunFlag=0;
}
if(Mode==1&&KEY2==0)
{Delay_1ms(10);
Y_RunFlag=1;
Delay_1ms(10);
KEY2=1;}
else if (Mode==1&&KEY3==0)
{Delay_1ms(10);
Y_RunFlag=2;
Delay_1ms(10);
KEY3=1;}
}
}
void Timer1_ISR(void) interrupt 3
{
static uchar ycon=0;
TH1 =(65535-1100)/256;
TL1 =(65535-1100)%256;
if(Y_RunFlag==1)
{
if(Step<SetStep)
{
Step++;
P2= P2&0xf0 | Zheng[ycon];
ycon++;
if(ycon>7)
ycon=0;
}
else
{
Y_RunFlag=0;
BUZZER=0;
AlarmCon=1;
}
}
else if(Y_RunFlag==2)
{
if(Step>0)
{
Step--;
P2= P2&0xf0 | Fan[ycon];
ycon++;
if(ycon>7)
ycon=0;
}
else
{
Y_RunFlag=0;
BUZZER=0;
AlarmCon=1;
}
}
else
{
P2= P2&0xf0;
}
}
void LanControl(void) //蓝牙控制程序
{
if(Mode==1) {
switch (rec)
{
case '1': Y_RunFlag=1;break; //正转
case '2': Y_RunFlag=2;break; //反转
case '3': Y_RunFlag=0;break; //停止
default:break;
}
Delay_1ms(100);
}
}
void LanControl_Int(void) interrupt 0 //接收串口中断
{
u8 rec;
rec=SBUF;
RI = 0; //清除接收中断标志位
SBUF=rec; //将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}
void TimerInit(void)
{
TMOD = 0x11;
TH0 = (65535-50000)/256;
TL0 = (65535-50000)%256;
ET0 = 1;
TR0 = 1;
TH1 = (65535-1000)/256;
TL1 = (65535-1000)%256;
ET1 = 1;
TR1 = 1;
EA = 1;
}
大神,该怎么改才合适