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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

串口問題求解

  [復制鏈接]
跳轉到指定樓層
樓主
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P2^0;
uchar flag=0,a=0;
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xf9;
TR1=1;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;
}
void main()//&Ouml;÷&sup3;&Igrave;&ETH;ò
{
init();
while(1)
{
  if(flag==1)
  {
   ES=0;
   if(a==0x01)
   {
    led=0;
   }
   if(a==0x02)
   {
    led=1;
   }
   flag=0;
   ES=1;
  }

}  
}
void chuan() interrupt 4
{
RI=0;
a=SBUF;
flag=1;

}


為什么我把主函數里的0x02改成0x11之類的就無法實現led亮滅的效果

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:151348 發表于 2017-4-7 21:47 | 只看該作者
你發送端發送的是什么
回復

使用道具 舉報

板凳
ID:187200 發表于 2017-4-8 08:36 | 只看該作者
0X02二進制是0X00000010改成0X11就是0X00000011了,位不同
回復

使用道具 舉報

地板
ID:187200 發表于 2017-4-8 08:37 | 只看該作者
0x02改成0x11的二進制位不同

評分

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

查看全部評分

回復

使用道具 舉報

5#
ID:171584 發表于 2017-4-8 11:42 來自手機 | 只看該作者
我把0x02改成0x11就不行了
回復

使用道具 舉報

6#
ID:171584 發表于 2017-4-8 11:43 來自手機 | 只看該作者
imxuheng 發表于 2017-4-7 21:47
你發送端發送的是什么

我把0x02改成0x11或0x3f之類的就不行了,這是為什么?
回復

使用道具 舉報

7#
ID:171584 發表于 2017-4-8 13:12 | 只看該作者
imxuheng 發表于 2017-4-7 21:47
你發送端發送的是什么

我把0x02改成0x11和0x3f之類的就不行了,這是為什么
回復

使用道具 舉報

8#
ID:187428 發表于 2017-4-8 14:44 | 只看該作者
我也想知道·····同求
回復

使用道具 舉報

9#
ID:151348 發表于 2017-4-8 19:33 | 只看該作者
xcj 發表于 2017-4-8 11:43
我把0x02改成0x11或0x3f之類的就不行了,這是為什么?

沒問啊,我試了,可以
回復

使用道具 舉報

10#
ID:171584 發表于 2017-4-8 21:52 | 只看該作者
你就修改了
if(a==0x02)    if(a==0x3f)
這個地方嗎?
回復

使用道具 舉報

11#
ID:171584 發表于 2017-4-8 21:53 | 只看該作者
imxuheng 發表于 2017-4-8 19:33
沒問啊,我試了,可以

你就修改了
if(a==0x02)    if(a==0x3f)
這個地方嗎?
回復

使用道具 舉報

12#
ID:171584 發表于 2017-4-8 21:54 | 只看該作者
我把這個改了再下載程序串口輸入0x01可以電燈但是輸入0x3f等卻不滅
回復

使用道具 舉報

13#
ID:47286 發表于 2017-4-9 02:39 | 只看該作者
xcj 發表于 2017-4-8 21:54
我把這個改了再下載程序串口輸入0x01可以電燈但是輸入0x3f等卻不滅

只修改 if(a==0x02)  成  if(a==0x3f)沒問題 你發0x3f就可以

這個程序 先初始化串口  然后主程序不斷掃描接收標記是否置1 接收標記由串口服務在接收到數據后置1 每次接收到數據 服務程序把標記置1表示有數據需要處理 主程序發現有要處理的就去比較是什么 如果和if后邊的一樣 就動作 然后把標記清零 否則丟棄

你改成什么 就要給它發什么 比如02改3f 就得發3f

評分

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

查看全部評分

回復

使用道具 舉報

14#
ID:187614 發表于 2017-4-9 08:54 | 只看該作者
串口初始化有點小問題,燈亮與滅受控于串口接收數據

評分

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

查看全部評分

回復

使用道具 舉報

15#
ID:151348 發表于 2017-4-9 09:05 | 只看該作者
xcj 發表于 2017-4-8 21:53
你就修改了
if(a==0x02)    if(a==0x3f)
這個地方嗎?

是的,改成什么數,就發什么數,發送模式是16進制模式
回復

使用道具 舉報

16#
ID:171584 發表于 2017-4-9 10:08 | 只看該作者
dzbj 發表于 2017-4-9 02:39
只修改 if(a==0x02)  成  if(a==0x3f)沒問題 你發0x3f就可以

這個程序 先初始化串口  然后主程序不 ...

但我試了下好像只能00到0f可以實現功能
超過了15就無效
回復

使用道具 舉報

17#
ID:171584 發表于 2017-4-9 10:11 | 只看該作者
dzbj 發表于 2017-4-9 02:39
只修改 if(a==0x02)  成  if(a==0x3f)沒問題 你發0x3f就可以

這個程序 先初始化串口  然后主程序不 ...

但我這里好像只能實現16進制的0-15
超了就無法實現了
回復

使用道具 舉報

18#
ID:171584 發表于 2017-4-9 10:16 | 只看該作者
dzbj 發表于 2017-4-9 02:39
只修改 if(a==0x02)  成  if(a==0x3f)沒問題 你發0x3f就可以

這個程序 先初始化串口  然后主程序不 ...

我只有16進制0到15實現功能超過了就不行想0x10就沒反應了這是為什么
回復

使用道具 舉報

19#
ID:18297 發表于 2017-4-9 10:26 | 只看該作者
估計串口上位機設置不對,沒有發送對應的碼,如選擇十六進制數還是ascii碼,這個接收到的數據就不一樣的。
最直接的方法是不要考慮燈是否亮滅,直接將單片機接收到的數據輸出到端口,看是否接收正確。

評分

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

查看全部評分

回復

使用道具 舉報

20#
ID:171584 發表于 2017-4-9 10:52 | 只看該作者
qinyike51 發表于 2017-4-8 08:37
0x02改成0x11的二進制位不同

那要怎么才能發送超過16的16進制才能有效
回復

使用道具 舉報

21#
ID:171584 發表于 2017-4-9 11:40 | 只看該作者
qinyike51 發表于 2017-4-8 08:36
0X02二進制是0X00000010改成0X11就是0X00000011了,位不同

0x11不是00010001嗎?
回復

使用道具 舉報

22#
ID:187674 發表于 2017-4-9 12:53 來自手機 | 只看該作者
0x是十六進制,后面兩個數字是十六進制,你可以寫成二進制一位一位的對比一下喃!

評分

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

查看全部評分

回復

使用道具 舉報

23#
ID:47286 發表于 2017-4-9 13:12 | 只看該作者
xcj 發表于 2017-4-8 21:54
我把這個改了再下載程序串口輸入0x01可以電燈但是輸入0x3f等卻不滅

我實測了 沒問題(為了降低工作時的功耗 我把led調的特暗 陽光下不太明顯)
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit led=P1^4;                        //端口改成我的模塊上電源燈口了
uchar flag=0,a=0;

void init()        //這孩紙寫程序怎么不標注呢
{
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xf9;
        TR1=1;
        SM0=0;
        SM1=1;
        REN=1;
        EA=1;
        ES=1;
}

void main()
{
        init();                //串口初始化

        while(1)        //循環
        {
                if(flag==1)                //如果 接收標記為1
                {
                        ES=0;                        //關串口中斷
                        if(a==0x01)                //如果接受位是0x01
                        {
                                led=0;                        //開led
                        }
                        if(a==0x3f)                //如果接受位是0x3f
                        {
                                led=1;                        //關led
                        }
                        flag=0;                        //接收標記清零
                        ES=1;                        //開串口中斷
                }
        }  
}

void chuan() interrupt 4        //中斷服務
{
        RI=0;                //RI位清零
        a=SBUF;                //負值 變量a值為接收緩沖區
        flag=1;                //接收標記置1
}


發01開



發02關



發01再開我沒截圖 反正都一樣

發3f關


評分

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

查看全部評分

回復

使用道具 舉報

24#
ID:171584 發表于 2017-4-9 13:37 | 只看該作者
dzbj 發表于 2017-4-9 13:12
我實測了 沒問題(為了降低工作時的功耗 我把led調的特暗 陽光下不太明顯)
#include
#define uchar unsi ...

難道我板子問題?
那藍牙模塊我把tx,rx,gnd,vcc連上后與手機連接怎么操控這段代碼
是直接輸就可以實現還是要做其他的步奏
回復

使用道具 舉報

25#
ID:187691 發表于 2017-4-9 13:51 | 只看該作者
你的位設置不同
回復

使用道具 舉報

26#
ID:171584 發表于 2017-4-9 14:03 | 只看該作者



哪里不對?
回復

使用道具 舉報

27#
ID:171584 發表于 2017-4-9 14:25 | 只看該作者
zjjhtony 發表于 2017-4-9 10:26
估計串口上位機設置不對,沒有發送對應的碼,如選擇十六進制數還是ascii碼,這個接收到的數據就不一樣的。
...

那程序要怎么寫,剛學搞不清楚
回復

使用道具 舉報

28#
ID:18297 發表于 2017-4-9 16:15 | 只看該作者

void chuan() interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
改成void chuan() interrupt 4
{
RI=0;
P1=SBUF;
flag=1;
}
1)這樣每次串口調試軟件發送后,就能看到你的芯片接收到啊的數據是否正常;
看proteus的芯片的P1輸出是多少,就是你的接收到的;
2)串口調試軟件有設置如文本模式,hex模式,一定要設置清楚,不同的設置接收到的數值會不同的。
回復

使用道具 舉報

29#
ID:187758 發表于 2017-4-9 16:33 | 只看該作者
xcj 發表于 2017-4-8 11:43
我把0x02改成0x11或0x3f之類的就不行了,這是為什么?

百度一下?
回復

使用道具 舉報

30#
ID:171584 發表于 2017-4-9 19:00 | 只看該作者
zjjhtony 發表于 2017-4-9 16:15

void chuan() interrupt 4
{

像這樣是不是led只會閃一下
回復

使用道具 舉報

31#
ID:171584 發表于 2017-4-9 19:29 | 只看該作者
zjjhtony 發表于 2017-4-9 16:15

void chuan() interrupt 4
{

還有我想問下HC-05藍牙模塊與手機連接后是不是直接可以發送指令
需要別的什么操作嗎?

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 狠狠狠干| 国产欧美日韩精品一区二区三区 | 成人久久久 | 在线观看av免费 | 日日夜夜91| 国产精品一区二区三区在线 | 伊人久久大香线 | 黄色免费在线观看网址 | 不卡一区二区在线观看 | 欧美日韩成人影院 | 日韩一区二区三区av | 99精品国产一区二区三区 | 国产视频中文字幕 | 一区在线播放 | 日韩在线观看一区二区三区 | 国产精品海角社区在线观看 | 国产精品免费一区二区三区四区 | 精品国产精品一区二区夜夜嗨 | 亚洲欧美中文日韩在线v日本 | 免费一级做a爰片久久毛片潮喷 | 亚洲二区视频 | 日本不卡一区 | 亚洲自拍偷拍免费视频 | 午夜精品一区二区三区在线观看 | 亚洲成人综合社区 | 天天插天天狠天天透 | 天天看天天操 | 一级国产精品一级国产精品片 | 欧洲成人 | 三级av在线 | 国产精品一区二区不卡 | 成人h视频在线 | 日本电影一区二区 | 视频羞羞| 久久精品无码一区二区三区 | 精品国产免费人成在线观看 | 精品美女视频在线观看免费软件 | 国产97视频在线观看 | 美日韩免费 | 欧美性大战xxxxx久久久 | 成人天堂噜噜噜 |