找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于MCU SUBF串口發(fā)送的問題求大佬解釋

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:513688 發(fā)表于 2019-4-16 15:31 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
如圖所示,用pcf8591通過AD轉(zhuǎn)換獲取數(shù)值并通過串口返回,圖為樣例程序現(xiàn)在不懂的點在于連寫了四個SUBF,在第一個SUBF操作完成后,發(fā)送中斷不就置1了嗎,這個程序是如何執(zhí)行的。
此外,如果我只想通過串口返回D0光敏電阻值,此程序應該如何改寫。
小白虛心求教,感激不盡。

qq_pic_merged_1555397767402.jpg (42.88 KB, 下載次數(shù): 23)

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

使用道具 舉報

沙發(fā)
ID:158375 發(fā)表于 2019-4-16 16:38 | 只看該作者
沒看全你的程序:估計程序不管發(fā)送中斷,就靠延時來發(fā)送;
延時發(fā)送不可取,應該用中斷發(fā)送,寫好發(fā)送中斷即可;這里面有好多工作要做。
回復

使用道具 舉報

板凳
ID:123289 發(fā)表于 2019-4-16 16:56 | 只看該作者
在第一個SUBF操作完成后,需要等一段時間(串行發(fā)送需要時間的),串行完數(shù)據(jù)后,才將發(fā)送標記置1!然而,中斷是否發(fā)生還取決于,你讓不讓它中斷(中斷允許位是否已被你置1)。
程序中DELAY(200),就是等待它串行完成,而后再發(fā)第二個?梢圆碌剑爸袛嘣试S位是被清0的,即不允許中斷”。
回復

使用道具 舉報

地板
ID:213173 發(fā)表于 2019-4-16 17:04 | 只看該作者
/**********串口發(fā)送函數(shù)*************/
void SendOneByte(unsigned char c)
{
    SBUF = c;                //發(fā)送數(shù)據(jù)
    while(!TI);        //等待發(fā)送完成
    TI = 0;                        //發(fā)送中斷請求標志位清0
}
//發(fā)送字符串(這里4個字節(jié):D[0]~D[3])
void xxxx()
{
        unsigned char i;
        //其它語句
        //........
        ES=0;                        //關串口中斷(如果使用了串口中斷)
        for(i=0;i<4;i++)
        {
                SendOneByte(D[i]);//調(diào)用串口發(fā)送函數(shù)
        }
        ES=1;                //開串口中斷(如果使用了串口中斷)
}
回復

使用道具 舉報

5#
ID:94031 發(fā)表于 2019-4-16 17:18 | 只看該作者
程序不全不好判斷。
回復

使用道具 舉報

6#
ID:513688 發(fā)表于 2019-4-22 21:43 來自觸屏版 | 只看該作者
非常感謝以上大佬,問題已經(jīng)解決了
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表