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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2024|回復: 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| 国产yw851.c免费观看网站 | 国产一区精品 | 一区二区视频在线 | 特级a欧美做爰片毛片 | 久视频在线 | 亚洲一区二区在线 | 91久久精品国产91久久性色tv | 色成人免费网站 | 久久毛片网站 | 久草在线 | 国产精品久久久久久久久久免费看 | 免费看一区二区三区 | 99久久精品免费看国产四区 | 国产久| 亚洲欧美激情四射 | 91夜色在线观看 | 婷婷在线免费 | 国产视频不卡一区 | 在线播放91 | 国产成人av在线 | 精品日韩| 不卡在线一区 | 一区二区三区影院 | 99久久婷婷国产亚洲终合精品 | 日本精品一区二区 | 国产98色在线 | 日韩 | 亚洲精品一区二区三区中文字幕 | 一区二区三区中文字幕 | 九九热精品视频 | 国产视频精品免费 | 亚洲精品18| 亚洲精选一区 | 二区在线视频 | 精品一二三区在线观看 | 黄色片视频免费 | 久久新| 日韩欧美国产一区二区 |