蓝牙模块,和串口通讯基本一致
使用步骤
- 串口的操作步骤:
- 先设置波特率:
- 设置定时器T1为工作方式2(设置TMOD寄存器)
- 给计数器赋初值(工作方式2会自动重装)
- 设置串口工作方式:
- 设置SCON(如果允许)
- 如果使用中断方式,那么打开相应的中断和总中断。
- 打开定时器T1,开始产生波特率。
- 设置TRx
- 先设置波特率:
经常使用的是工作方式1
蓝牙控制灯的点亮
#include <reg52.h> //头文件调用,写程序时都要加上
#define uint unsigned int //宏定义,为了后面定义变量书写简便
#define uchar unsigned char
sbit LED0=P1^0;
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;
void main (void)
{
SCON = 0x50; // SCON: 模式1, 8-bit UART, 使能接收
TMOD |= 0x20;
TH1=0xfd; //波特率9600 初值
TL1=0xfd;
TR1= 1;
EA= 1; //打开总中断
ES= 1; //打开串口中断
while (1) //主循环不做任何动作
{
}
}
/******************************************************************/
/* 串口中断程序*/
/******************************************************************/
void UART_SER () interrupt 4
{
uchar n; //定义临时变量
if(RI) //判断是接收中断产生
{
RI=0; //标志位清零
n=SBUF; //读入缓冲区的值
if(n=='1')
{
LED0=1;LED1=1;LED2=1;LED3=1;
}
if(n=='2')
{
LED0=0;LED1=0;LED2=0;LED3=0;
}
if(n=='3')
{
LED4=1;LED5=1;LED6=1;LED7=1;
}
if(n=='4')
{
LED4=0;LED5=0;LED6=0;LED7=0;
}
}
}