久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2125|回復: 2
打印 上一主題 下一主題
收起左側

求教,關于單片機與藍牙hc05通訊程序的問題

[復制鏈接]
跳轉到指定樓層
樓主
單片機是stc89c52,晶振是11.0592M,用的是藍牙hc05,硬件連好后發送命令,問題在于發送前兩次命令正常,但第三次收到消息不對,并且之后發命令像死機一樣無反應怎么解決,已測任何命令發送都成功過,大部分都在第三次時候出現,順便問下hc05模塊en腳和state腳要接么,我沒接懸空了。代碼如下:
#include<reg52.h>
#include "intrins.h"
#include "stdio.h"
#define uchar unsigned char
#define uint unsigned int

uchar date;        
uint cmd;
sbit a=P2^0;
sbit b=P2^1;
sbit c=P2^2;
sbit d=P2^3;
uchar code at[]="get a";
uchar code bt[]="get b";
uchar code ct[]="get c";
uchar code dt[]="get d";

//------------------------------BLE---------------------------------------
void UartConfiguration() //串口初始化
{
        TMOD=0x20;           //定時器工作在模式2,8位自動重裝模式
        TH1=0xfd;           
        TL1=0xfd;
        PCON=0x00;           //串口波特率,SMOD=0
        SCON=0x50;           //串口工作在模式1     10uart
        EA=1;                   //總開關開
        ES=1;
        TR1=1;                   //計數器開

}

void sendDate(uchar buf)                //發送字符
{
          SBUF=buf;
         while(!TI);
         TI=0;
}
void SendString(uchar *p)                //發送字符串
{        
        while(*p)
        {
         sendDate(*p);
         p++;
        }
}
void Iscmd()
{
        if(date=='a'||date=='b'||date=='c'||date=='d')cmd=1;           //判斷是否為命令
}

void Uart() interrupt 4                           //串口判斷是否有收到或發送完畢
{
        if(RI==1){date=SBUF;RI=0;Iscmd();}         //獲取收到數據,RI置0,判斷是否是命令
        if(TI==1){TI=0;}                           //發送完畢置0
}
//----------------------------------------------------------------


void main()
{
  UartConfiguration(); //藍牙初始化
  while(1)
  {        
        if(cmd)                  //命令判斷
        {
                switch(date){                   //根據命令選擇
                           case 'a':SendString(at);a=0;break;
                           case 'b':SendString(bt);b=0;break;
                           case 'c':SendString(ct);c=0;break;
                           case 'd':SendString(dt);d=0;break;
                           default:break;
                                  }
                cmd=0;         //命令標志置0
        }
  }
}

Screenshot_2021-03-18-10-33-21-15.png (124.8 KB, 下載次數: 71)

Screenshot_2021-03-18-10-33-21-15.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:570264 發表于 2021-3-18 10:44 | 只看該作者
電腦上sscom5仿真成功過,一切沒問題,是硬件原因嗎?
回復

使用道具 舉報

板凳
ID:570264 發表于 2021-3-18 10:55 | 只看該作者
啊,解決了,我把main函數里的switch判斷語句放到 Iscmd函數里就不會有問題了,哪位大神能告訴我原因嗎?

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 草樱av | 成人免费在线视频 | 琪琪午夜伦伦电影福利片 | 欧美不卡一区二区 | 亚洲网址在线观看 | 日韩第一页| 久久久久一区二区 | 日韩网站在线 | 精品一区二区久久久久久久网站 | 在线欧美亚洲 | jlzzxxxx18hd护士| 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 天天看天天干 | 欧洲一区二区三区 | 欧美性成人 | 色婷婷久久综合 | www.一级毛片 | 国产天堂 | 国产精品a久久久久 | 日韩高清一区二区 | 欧美综合在线观看 | 国产91久久久久 | 国产精品观看 | 日本亚洲精品成人欧美一区 | 午夜成人在线视频 | 精品av| 欧美成人a∨高清免费观看 色999日韩 | 国产欧美在线 | 久久人操 | 成人网在线观看 | 精品欧美一区二区三区久久久 | 激情欧美一区二区三区中文字幕 | 中文字幕精品视频 | 国产91九色 | 欧美日本韩国一区二区 | 又爽又黄axxx片免费观看 | 亚洲高清电影 | 国产成人免费视频网站视频社区 | 精品久久99 | 国产福利91精品一区二区三区 | 亚洲成人福利 |