|
|
使用hc-06藍(lán)牙+stc15w204s串口控制p3.3口上的燈。藍(lán)牙串口連接電腦串口助手和單片機(jī)連接電腦串口都能正常發(fā)送接收。藍(lán)牙連接單片機(jī)就不行,沒(méi)有接收反饋。求大師幫我看看程序哪里有問(wèn)題。附程序。
#include <STC15W204S.h>
// 定義引腳
sbit LED = P3^3; // P3.3連接LED
// 串口初始化函數(shù),波特率9600(11.0592MHz晶振)
void UART_Init() {
SCON = 0x50; // 8位數(shù)據(jù),允許接收
TMOD &= 0x0F; // 清除定時(shí)器1配置
TMOD |= 0x20; // 定時(shí)器1工作在方式2
TH1 = 0xFD; // 9600波特率初值
TL1 = 0xFD;
TR1 = 1; // 啟動(dòng)定時(shí)器1
ES = 1; // 允許串口中斷
EA = 1; // 允許總中斷
}
// 串口發(fā)送一個(gè)字節(jié)
void UART_SendByte(unsigned char dat) {
SBUF = dat;
while (!TI); // 等待發(fā)送完成
TI = 0; // 清除發(fā)送標(biāo)志
}
// 主函數(shù)
void main() {
UART_Init(); // 初始化串口
LED = 0; // 初始LED滅
while (1) {
// 主循環(huán)空轉(zhuǎn),等待中斷處理
}
}
// 串口中斷服務(wù)函數(shù)
void UART_ISR() interrupt 4 {
unsigned char rec_dat;
if (RI) { // 接收中斷標(biāo)志
RI = 0; // 清除接收標(biāo)志
rec_dat = SBUF; // 讀取接收數(shù)據(jù)
// 根據(jù)接收數(shù)據(jù)控制LED
if (rec_dat == '1') {
LED = 1; // 燈亮
} else if (rec_dat == '0') {
LED = 0; // 燈滅
}
// 將接收的控制指令回傳(發(fā)送到藍(lán)牙)
UART_SendByte(rec_dat);
}
}
|
評(píng)分
-
查看全部評(píng)分
|