標(biāo)題:
關(guān)于MCU SUBF串口發(fā)送的問題求大佬解釋
[打印本頁]
作者:
hch0086
時(shí)間:
2019-4-16 15:31
標(biāo)題:
關(guān)于MCU SUBF串口發(fā)送的問題求大佬解釋
如圖所示,用pcf8591通過AD轉(zhuǎn)換獲取數(shù)值并通過串口返回,圖為樣例程序現(xiàn)在不懂的點(diǎn)在于連寫了四個(gè)SUBF,在第一個(gè)SUBF操作完成后,發(fā)送中斷不就置1了嗎,這個(gè)程序是如何執(zhí)行的。
此外,如果我只想通過串口返回D0光敏電阻值,此程序應(yīng)該如何改寫。
小白虛心求教,感激不盡。
qq_pic_merged_1555397767402.jpg
(42.88 KB, 下載次數(shù): 23)
下載附件
2019-4-16 15:27 上傳
作者:
笨笨兔
時(shí)間:
2019-4-16 16:38
沒看全你的程序:估計(jì)程序不管發(fā)送中斷,就靠延時(shí)來發(fā)送;
延時(shí)發(fā)送不可取,應(yīng)該用中斷發(fā)送,寫好發(fā)送中斷即可;這里面有好多工作要做。
作者:
yzwzfyz
時(shí)間:
2019-4-16 16:56
在第一個(gè)SUBF操作完成后,需要等一段時(shí)間(串行發(fā)送需要時(shí)間的),串行完數(shù)據(jù)后,才將發(fā)送標(biāo)記置1!然而,中斷是否發(fā)生還取決于,你讓不讓它中斷(中斷允許位是否已被你置1)。
程序中DELAY(200),就是等待它串行完成,而后再發(fā)第二個(gè)。可以猜到,“中斷允許位是被清0的,即不允許中斷”。
作者:
wulin
時(shí)間:
2019-4-16 17:04
/**********串口發(fā)送函數(shù)*************/
void SendOneByte(unsigned char c)
{
SBUF = c; //發(fā)送數(shù)據(jù)
while(!TI); //等待發(fā)送完成
TI = 0; //發(fā)送中斷請(qǐng)求標(biāo)志位清0
}
//發(fā)送字符串(這里4個(gè)字節(jié):D[0]~D[3])
void xxxx()
{
unsigned char i;
//其它語句
//........
ES=0; //關(guān)串口中斷(如果使用了串口中斷)
for(i=0;i<4;i++)
{
SendOneByte(D[i]);//調(diào)用串口發(fā)送函數(shù)
}
ES=1; //開串口中斷(如果使用了串口中斷)
}
作者:
xuyaqi
時(shí)間:
2019-4-16 17:18
程序不全不好判斷。
作者:
hch0086
時(shí)間:
2019-4-22 21:43
非常感謝以上大佬,問題已經(jīng)解決了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1