欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
關于藍牙串口通信中自動模式代碼修改
[打印本頁]
作者:
qade
時間:
2024-4-15 16:12
標題:
關于藍牙串口通信中自動模式代碼修改
請大哥們幫看看,我做的是藍牙溫控風扇,下面代碼是一個藍牙串口通信,發送0x05相當于是個自動模式的指令,但是這個自動模式不能實時實現功能,當溫度、設置的最大值Thigh和最小值TLow發生改變時要重新發送指令才能實現發生變化,如果自動模式這個代碼不放在串口通信里面放到main主函數里面又會產生沖突。問一下代碼要怎么修改或者提供下思路,謝謝!!
void UART_Routine() interrupt 4 {
if (RI) {
RI = 0;
x = SBUF;
switch (x) {
case 0x01: Compare = 0, Speed=0; break;
case 0x02: Compare = 50, Speed=1; break;
case 0x03: Compare = 75, Speed=2; break;
case 0x04: Compare = 100, Speed=3; break;
case 0x05: if (T > THigh) {
Compare = 100;
Speed = 3;
}
else if (T <= THigh && T >= (THigh + TLow) / 2) {
Compare = 75;
Speed = 2;
}
else if (T <= (THigh + TLow) / 2 && T > TLow) {
Compare = 50;
Speed = 1;
}
else {
Compare = 0;
Speed = 0;
}
break;
}
}
}
作者:
devcang
時間:
2024-4-16 11:09
代碼不完整,需求不清晰。但建議,最好是接收到一個字符分隔符,在主函數中再處理。
作者:
lkc8210
時間:
2024-4-16 13:06
自動模式要放到主循環那里判斷
void UART_Routine() interrupt 4 {
if (RI) {
RI = 0;
x = SBUF;
switch (x) {
case 0x01: Compare = 0, Speed=0; break;
case 0x02: Compare = 50, Speed=1; break;
case 0x03: Compare = 75, Speed=2; break;
case 0x04: Compare = 100, Speed=3; break;
}
}
}
void main()
{
//...
while(1)
{
//...
if(x == 0x05)
{
if (T > THigh)
{
Compare = 100;
Speed = 3;
}
else if (T <= THigh && T >= (THigh + TLow) / 2)
{
Compare = 75;
Speed = 2;
}
else if (T <= (THigh + TLow) / 2 && T > TLow)
{
Compare = 50;
Speed = 1;
}
else
{
Compare = 0;
Speed = 0;
}
}
}
}
復制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1