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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1727|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

小白求助 關(guān)于51單片機(jī)串口數(shù)據(jù)處理

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
判斷從串口接收到的兩個(gè)字節(jié),即4位16進(jìn)制的數(shù)據(jù),如果第一個(gè)字節(jié)對(duì)了led1亮然后判斷第二個(gè),第二個(gè)字節(jié)對(duì)了led3亮。
但是令我很好奇的是某些數(shù)據(jù)是對(duì)的,另一些卻不能正確判斷
如fafb, e1d1 ,等,燈可以正常亮起。f開頭的字節(jié)都可以
但是數(shù)字開頭的字節(jié),比如5a7b,1111等就不行。


正常

以下是我的單片機(jī)程序(初學(xué)者,很拉,不同的地方很多)
#include <reg51.h>

#define uchar unsigned char
#define uint  unsigned int

sbit led0 = P0^0; //接收到數(shù)據(jù)時(shí)閃爍
sbit led1 = P0^1;
sbit led2 = P0^2;
sbit led3 = P0^3;
sbit led4 = P0^4;

uchar num1,num2;//讀取SBUF
void UART_init(){        TR1=0;
        TMOD =0x20;          //T1工作模式2  8位自動(dòng)重裝
        TH1 = 0xfd;
        TL1 = 0xfd;         //0xfd波特率9600。
        ET1 = 0;
        TR1 = 1;                //啟動(dòng)T1定時(shí)器
         
        PCON =0x00;         //若0x80 SMOD置1,波特率加倍
        REN=1;                 //看似無用實(shí)則不可缺失
        SCON = 0x50;                //串口允許接收
        EA  = 1;                //開總中斷
        ES  = 1;                //串口中斷打開
}
void main()
{        
        UART_init(); //串口初始化
        while(1)
        {
        }        
}


void UART() interrupt 4
{         
        while(!RI);        //檢測是否接收完成
                RI = 0;
                led0 = ~led0;
                num1 = SBUF;        
                P1 = ~num1;
        
                if(num1==0x5A)
                {   led1=0;  //第一個(gè)字節(jié)對(duì)了之后led1亮
                        while(!RI);
                        led2=0;
                        RI=0;
                        num2=SBUF;
                        if(num2==0xA5)
                        led3=0;                 //第二個(gè)字節(jié)對(duì)了之后led3亮
                }
                else {led1=1;led2=1;led3=1;}
        
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:94031 發(fā)表于 2023-6-7 18:27 | 只看該作者
在串口中斷里應(yīng)該只處理數(shù)據(jù)接收,LED處理放在main循環(huán)里,不要因?yàn)長ED處理影響數(shù)據(jù)接收。
回復(fù)

使用道具 舉報(bào)

板凳
ID:1082596 發(fā)表于 2023-6-7 20:06 | 只看該作者
xuyaqi 發(fā)表于 2023-6-7 18:27
在串口中斷里應(yīng)該只處理數(shù)據(jù)接收,LED處理放在main循環(huán)里,不要因?yàn)長ED處理影響數(shù)據(jù)接收。

判斷和LED處理已放進(jìn)主循環(huán),并且僅判斷一個(gè)字節(jié)。
仍只有部分?jǐn)?shù)據(jù)led1可正常亮起,如ff.fb等
請(qǐng)問這是什么原因呢?我該如何解決嘞。求大佬指點(diǎn)
這是修改后的程序
void main()
{       
        UART_init(); //串口初始化
        while(1)
        {  
                if(num1==0x5A)
                {   led1=0;  //第一個(gè)字節(jié)對(duì)了之后led1亮
                }
                else led1=1;
       
        }       
}

void UART() interrupt 4
{         
        while(!RI);        //檢測是否接收完成
                RI = 0;       
                num1 = SBUF;
                       
}
回復(fù)

使用道具 舉報(bào)

地板
ID:1082659 發(fā)表于 2023-6-7 21:04 | 只看該作者
串口中斷函數(shù)接收第一個(gè)字節(jié)之后,開啟定時(shí)器計(jì)數(shù)。接受下一個(gè)字節(jié)的時(shí)候清空定時(shí)器計(jì)數(shù)。如此,當(dāng)沒有數(shù)據(jù)接收后,計(jì)時(shí)器無法清零,當(dāng)計(jì)時(shí)器計(jì)數(shù)超過設(shè)定的數(shù)值之后,觸發(fā)定時(shí)器溢出中斷,此時(shí)數(shù)據(jù)即接收完畢
回復(fù)

使用道具 舉報(bào)

5#
ID:1082596 發(fā)表于 2023-6-7 21:53 | 只看該作者
我把接收到的字節(jié)數(shù)據(jù)賦給了P2,P2接了8個(gè)LED燈。注意到一個(gè)現(xiàn)象,從串口接收到的數(shù)據(jù),最高位會(huì)被莫名其妙地置1。比如5A(01011010),會(huì)被認(rèn)為是DA(11011010)。其他的數(shù)據(jù)也是如此。這可能就是為什么部分?jǐn)?shù)據(jù)可以成功識(shí)別(最高位已經(jīng)是1的,如fa,e1等),而剩下的不能成功(最高位不是1的,如5A)
可是我沒寫讓最高位 置一的程序
???
如下圖所示。接收到的是5A(01011010),顯示的卻是DA(11011010)
感謝各位大佬的解答

1.png (14.96 KB, 下載次數(shù): 44)

1.png
回復(fù)

使用道具 舉報(bào)

6#
ID:1082596 發(fā)表于 2023-6-7 21:54 | 只看該作者
劉宇杰找實(shí)訓(xùn) 發(fā)表于 2023-6-7 21:04
串口中斷函數(shù)接收第一個(gè)字節(jié)之后,開啟定時(shí)器計(jì)數(shù)。接受下一個(gè)字節(jié)的時(shí)候清空定時(shí)器計(jì)數(shù)。如此,當(dāng)沒有數(shù)據(jù) ...

謝謝解答
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产黄色av | 日韩视频在线免费观看 | 99久久精品国产毛片 | 99久久久99久久国产片鸭王 | 国产精品一二区 | 久久成人人人人精品欧 | 国产电影一区 | 久久国产精品视频免费看 | 国内久久| 精品久久久久久久久亚洲 | 国产欧美一区二区三区久久手机版 | 在线看av网址 | 久久精品国产久精国产 | 久久爱综合 | 青青久草 | 亚洲性视频 | 国产精品爱久久久久久久 | 成人一区二区在线 | 久久久网 | 午夜视频在线免费观看 | 国产网站在线免费观看 | 国产一区在线视频 | 国产欧美一区二区三区久久手机版 | 免费能直接在线观看黄的视频 | 亚洲高清三级 | 男插女下体视频 | 麻豆视频在线免费看 | 先锋资源亚洲 | 日韩精品一区二区三区视频播放 | 欧美一区二区大片 | 91麻豆精品国产91久久久久久 | 午夜婷婷激情 | 国产国语精品 | 黄视频免费| 国产情侣一区 | 成人久草 | 久久69精品久久久久久国产越南 | 色黄爽| 久久久精彩视频 | 手机av在线 | 欧美一区二区三区在线观看视频 |