找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

關(guān)于串口傳輸?shù)囊恍﹩栴}

查看數(shù): 2303 | 評論數(shù): 3 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2017-4-15 11:49

正文摘要:

在使用串口調(diào)試軟件時,發(fā)送數(shù)據(jù)后會不斷重復(fù)數(shù)據(jù)的最后一個字符,如下圖。波特率一致,為4800bps,程序如下,我檢查了很多次也不知道什么原因,故發(fā)帖專心請教。 程序: #include<reg51.h> void comsetting( ...

回復(fù)

ID:500065 發(fā)表于 2019-3-28 17:47
poseidon 發(fā)表于 2017-4-15 12:22
應(yīng)該是TH1=0xf3;TL1=0xf3

TH1=0xf3;TL1=0xf3和TH1=0xf4;TL1=0xf4有什么差別嗎!
ID:123289 發(fā)表于 2017-4-16 06:56
每次串口中斷后,你都會從SBUF中取一個數(shù)字發(fā)出;
收到最后一個時SBUF讀到“o”,你發(fā)“o”。
注意:串口中斷響應(yīng)是不管收還是發(fā),都會發(fā)生中斷,所以發(fā)完最后一個“o”后,也會生產(chǎn)中斷,當(dāng)然你取到的SBUF一定是上次的SBUF也就是“o”,所以你又發(fā)一次“o”,發(fā)生后還會再中斷(發(fā)送中斷)……
實(shí)際上,當(dāng)你收到“h”時,在發(fā)出“h”后也會產(chǎn)生發(fā)送中斷,但這個中斷不會被立即響應(yīng),因?yàn)檫@時程序還在中斷服務(wù)程序中尚未返回,當(dāng)你中斷返回后,響應(yīng)發(fā)送中斷時,接收中斷也收到了,新發(fā)來了下一個“e”(接收中斷與發(fā)送中斷幾乎同時到達(dá)),所以你并未再發(fā)一次“h”,而是新收到的“e”。也就是說你已丟了一次中斷,但丟掉的洽洽是重復(fù)的那一個!
讀懂以上后,程序修改一下就好了,應(yīng)當(dāng)很簡單了!

評分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

ID:128697 發(fā)表于 2017-4-15 12:22
應(yīng)該是TH1=0xf3;TL1=0xf3

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

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

快速回復(fù) 返回頂部 返回列表