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

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

QQ登錄

只需一步,快速開(kāi)始

搜索

請(qǐng)教關(guān)于單片機(jī)串口程序調(diào)試的問(wèn)題

查看數(shù): 1409 | 評(píng)論數(shù): 6 | 收藏 0
關(guān)燈 | 提示:支持鍵盤(pán)翻頁(yè)<-左 右->
    組圖打開(kāi)中,請(qǐng)稍候......
發(fā)布時(shí)間: 2021-11-12 11:05

正文摘要:

程序小白請(qǐng)教大佬,串口發(fā)送指令只執(zhí)行一次功能,后面發(fā)送的指令串口助手能正常發(fā)送接收,但功能沒(méi)出來(lái),程序怎么修改? 主要是我想發(fā)送不同長(zhǎng)度的指令,指令長(zhǎng)度一樣的話程序是沒(méi)問(wèn)題的

回復(fù)

ID:963748 發(fā)表于 2021-11-13 09:11
Y_G_G 發(fā)表于 2021-11-12 16:53
//串口接收上位機(jī),可以用strstr函數(shù)查找,比如,上位機(jī)發(fā)送  數(shù)據(jù):255
//單片機(jī)可以先查找"數(shù)據(jù):",查找到之 ...

學(xué)習(xí)了謝謝
ID:401564 發(fā)表于 2021-11-12 16:53
//串口接收上位機(jī),可以用strstr函數(shù)查找,比如,上位機(jī)發(fā)送  數(shù)據(jù):255
//單片機(jī)可以先查找"數(shù)據(jù):",查找到之后再處理后面的255,這樣的代碼可以簡(jiǎn)單明了很多
void Uart2_Isr() interrupt 8                                                                         //串口2中斷
{
        char *p,Uart_S[15];
        static unsigned char RX_Count;
        unsigned a;
        if(S2CON&0x02)
                {
                   S2CON&=~0x02;                                                                                //清除中斷發(fā)送標(biāo)示位
                   Busy=0;                                                                                                   //
                   return;
                }
        //────────────────────────────────────────────────────────────────────────────       
        if(S2CON&0x01)
                {
                   S2CON&=~0x01;                                                                                //清除中斷接收標(biāo)示位                                                 
                        Uart_S[RX_Count]=S2BUF;
                        RX_Count++;
                        p=strstr(Uart_S,"數(shù)據(jù):");                                                                //查找指令結(jié)束符"數(shù)據(jù):"
                        if(NULL!=p)                                                                                   //如果沒(méi)有查找到"數(shù)據(jù):",指針?lè)祷刂禐榭?br />                                  {  
                                 //指針?lè)祷刂挡粸榭?就表示串口接收到"數(shù)據(jù):",處理.........
                                }               
                }
        //──────────────────────────────────────────────────────────────────────────────
}
ID:963748 發(fā)表于 2021-11-12 15:52
188610329 發(fā)表于 2021-11-12 15:43
用for 循環(huán) 假定你的 dat 長(zhǎng)度為64
for(j=0, j

好的謝謝
ID:624769 發(fā)表于 2021-11-12 15:43
用for 循環(huán) 假定你的 dat 長(zhǎng)度為64
for(j=0, j<63,j++)    //循環(huán)63次
{
    dat[j] = dat[j+1];
}
然后再去對(duì)比指令。
ID:963748 發(fā)表于 2021-11-12 14:56
188610329 發(fā)表于 2021-11-12 14:30
首先需要確認(rèn),你的 i 是全局變量,
然后,
你即使 sflag == FALSE 也要 i=0

利用 dat[j] = dat[j+1]; 具體怎么實(shí)現(xiàn)的呢?
ID:624769 發(fā)表于 2021-11-12 14:30
首先需要確認(rèn),你的 i 是全局變量,
然后,
你即使 sflag == FALSE 也要 i=0
不然,只要有一個(gè)錯(cuò)誤指令,后面你的指令位置都不會(huì)從0開(kāi)始,永遠(yuǎn)指令都是錯(cuò)誤的。

通常有兩個(gè)方案,
1)按照波特率的 105倍計(jì)時(shí),超過(guò)后,判斷超時(shí)(表示所有指令都已經(jīng)接受完畢),開(kāi)始驗(yàn)證指令,驗(yàn)證完畢后,不管指令對(duì)不對(duì),都把 i=0 準(zhǔn)備接受下一個(gè)指令。

2)利用 dat[j] = dat[j+1]; 進(jìn)行移位,多次反復(fù)比較指令,那么就不在乎 i 有沒(méi)有歸零了。

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区网站 | jav成人av免费播放 | 在线观看免费av网 | 色久伊人| 亚洲黄色在线免费观看 | 精精国产xxxx视频在线播放 | 国产在线播放av | 一区二区三区久久久 | 欧美在线a| 罗宾被扒开腿做同人网站 | 超碰av人人 | 亚洲成人一区 | 亚洲精品成人在线 | 中文字幕免费视频 | 麻豆av在线 | 国产美女在线精品免费 | 亚洲欧美视频 | 亚洲字幕在线观看 | 欧美一级黄| av性色全交蜜桃成熟时 | 在线免费观看黄色 | 亚洲精品日本 | 五月婷婷激情 | 日本三级网站在线观看 | 精品www| 一区二区三区日本 | 国产一区二区三区四区三区四 | 国产精品久久久久久妇女 | 国产一区二区毛片 | 日韩中文字幕久久 | 91在线观看| 国产午夜精品一区二区三区四区 | 免费看一区二区三区 | 成人三区四区 | 亚洲韩国精品 | 久久国产成人 | 台湾a级理论片在线观看 | 精品久久久久久国产 | 成人免费大片黄在线播放 | 午夜一级大片 | 欧美日韩一|