做课程设计之时,用到了蓝牙通信,本人使用STC15单片机的最小系统进行主从蓝牙之间的通信。蓝牙配置(配置方法见上一篇文章)好了之后,在串口上可以通信,但到了最小系统就是不能通信,经过多方查找原因,最终发现在串口配的方面出现了问题,原来STC89C52与STC15的串口初始化配置略有不同,在STC15中不能按照STC89C52的方式配置串口,因为15比52在串口配置上多了一个辅助寄存器(AUXR)。
AUXR本人还未深入理解其具体用法,待做完课设之后,再另发文章补充。
程序如下:
主蓝牙程序:
/*蓝牙程序(主)*/
#include "stc15.h"
/*15单片机默认P3^1为TX P3^0为RX*/
void ConfigUART();
char dat=1;
void main()
{
ConfigUART();
while(1)
{
SBUF = dat;
while(!TI);
TI=0;
}
}
void ConfigUART()
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD;