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

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

QQ登錄

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

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

51單片機(jī)串口中斷函數(shù)中SBUF的值能存在多久?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:482935 發(fā)表于 2020-5-8 07:29 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
如題,請(qǐng)問(wèn)51單片機(jī)接收數(shù)據(jù)的SBUF能存活多久呢? 比如下面這個(gè)串口中斷復(fù)函函數(shù)(片段),我將接收中斷標(biāo)志RI清0之后,SBUF的值多久會(huì)消失呢?

unsigned char data = 0;
void Uartinterrpt(void) interrupt 4  
{
        if(RI == 1)  
        {
                RI = 0;      
                          // 假設(shè)這里過(guò)很久我才把SBUF接收的值拿出來(lái), 使用delay ();
                data = SBUF;   
        }                                             
}

另外如果發(fā)送函數(shù)如下,SBUF拿發(fā)送值的時(shí)候 SBUF = c; 恰巧有接收數(shù)據(jù)被中斷了,執(zhí)行串口中斷函數(shù)了,那么SBUF拿的值會(huì)不全(比如8位整個(gè)字節(jié)拿不全,拿了3位),造成發(fā)送亂碼嗎?
void SendByte(unsigned char c)
{
  SBUF = c;
  while(TI==0);
  TI = 0;
}


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

使用道具 舉報(bào)

沙發(fā)
ID:282850 發(fā)表于 2020-5-8 09:26 | 只看該作者
SBUF在下一次串口中斷來(lái)之前是不變的,但中斷內(nèi)不應(yīng)加延時(shí),并且要盡快取走數(shù)據(jù)為好。
回復(fù)

使用道具 舉報(bào)

板凳
ID:452950 發(fā)表于 2020-5-8 09:42 | 只看該作者
SBUF是特殊寄存器,只要不寫入新的數(shù)據(jù)就不會(huì)消失,寫入新的數(shù)據(jù)就會(huì)覆蓋之前的,單片機(jī)復(fù)位后初始值為不確定值。
中斷處理完后會(huì)回到中斷點(diǎn)繼續(xù)執(zhí)行,不存在接收到一半就發(fā)送出去。另外8位單片機(jī)賦值寫入8bit數(shù)據(jù)應(yīng)該是同時(shí)進(jìn)行的,應(yīng)該不會(huì)傳到一部分就進(jìn)入中斷。
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2020-5-8 10:30 | 只看該作者
51單片機(jī)的串行口緩沖寄存器(SBUF)的地址是99H,實(shí)際是2個(gè)緩沖器,寫SBUF的操作完成待發(fā)送數(shù)據(jù)的加載,讀SBUF的操作可獲得已接收到的數(shù)據(jù)。兩個(gè)操作分別對(duì)應(yīng)兩個(gè)不同的寄存器,1個(gè)是只寫寄存器,1個(gè)是只讀寄存器。
SBUF中的數(shù)據(jù)在不被新數(shù)據(jù)覆蓋和不斷電的情況下永久不變,也不會(huì)因?yàn)楸蛔x取而消失。CPU是通過(guò)并行總線讀取寄存器,是一次讀取8位即1個(gè)字節(jié),不存在“8位整個(gè)字節(jié)拿不全”的說(shuō)法。
回復(fù)

使用道具 舉報(bào)

5#
ID:440553 發(fā)表于 2020-5-8 10:53 | 只看該作者
直到單片機(jī)斷電、重啟,或者再次接收到串口中斷
回復(fù)

使用道具 舉報(bào)

6#
ID:910171 發(fā)表于 2021-4-28 11:47 | 只看該作者
wulin 發(fā)表于 2020-5-8 10:30
51單片機(jī)的串行口緩沖寄存器(SBUF)的地址是99H,實(shí)際是2個(gè)緩沖器,寫SBUF的操作完成待發(fā)送數(shù)據(jù)的加載,讀SB ...

請(qǐng)問(wèn)老師,假如我用程序檢測(cè)到RI變成1了,然后我用Rdata=SBUF讀取數(shù)據(jù),但是不對(duì)RI操作,也就是RI不清零。而串口還有新的數(shù)據(jù)源源不斷的進(jìn)來(lái),這種情況下,SBUF里面的數(shù)據(jù)會(huì)更新嗎?會(huì)跟隨串口新進(jìn)來(lái)的數(shù)據(jù)變化么?還是只要不清零RI就一直保持不變?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产xxx在线观看 | 黄色av网站在线观看 | www.日韩 | 精品久久久久久亚洲综合网 | 亚洲一区免费 | 成人国产精品 | 龙珠z在线观看 | 99pao成人国产永久免费视频 | 美女一区 | 国产精品黄视频 | 国产成人亚洲精品 | 中文av在线播放 | 老熟女毛片 | 精品日本久久久久久久久久 | 韩三级在线观看 | 久久精品视频一区二区三区 | 久久99精品久久久久久 | 亚洲天堂影院 | 久久天堂| 欧美在线一区二区三区 | 精品毛片 | 国产三区av | 欧美三级久久久 | 日韩一区二区免费视频 | 国产成人精品亚洲日本在线观看 | 最近中文字幕免费 | 伊人伊人网| 四虎影院免费在线播放 | 久久一| 激情av | 最新av中文字幕 | 欧美网址在线观看 | 国产精品网页 | 欧美一区二区黄 | 在线免费国产视频 | www.4虎影院| 亚洲视频一区在线观看 | 日韩一区二区三区四区五区 | a成人| 青青草国产在线观看 | 欧美亚洲国产一区二区三区 |