第43節(jié):通過串口用計數(shù)延時方式發(fā)送一串數(shù)據(jù)
從業(yè)近十年!手把手教你單片機程序框架 第43講
開場白:
上一節(jié)講了通過串口用delay延時方式發(fā)送一串數(shù)據(jù),這種方式要求發(fā)送一串數(shù)據(jù)的時候一氣呵成,期間不能執(zhí)行其它任務,由于delay(400)這個時間還不算很長,所以可以應用在很多簡單任務的系統(tǒng)中。但是在某些任務量很多的系統(tǒng)中,實時運行的主任務不允許被長時間和經(jīng)常性地中斷,這個時候就需要用計數(shù)延時來替代delay延時。本節(jié)要教會大家兩個知識點:
第一個:用計數(shù)延時方式發(fā)送一串數(shù)據(jù)的程序框架。
第二個:環(huán)形消息隊列的程序框架。
具體內容,請看源代碼講解。
(1)硬件平臺:
基于朱兆祺51單片機學習板。
(2)實現(xiàn)功能:
波特率是:9600.
用朱兆祺51單片機學習板中的S1,S5,S9,S13作為獨立按鍵。
按一次按鍵S1,發(fā)送EB 00 55 01 00 00 00 00 41
按一次按鍵S5,發(fā)送EB 00 55 02 00 00 00 00 42
按一次按鍵S9,發(fā)送EB 00 55 03 00 00 00 00 43
按一次按鍵S13,發(fā)送EB 00 55 04 00 00 00 00 44
(3)源代碼講解如下:
總結陳詞:
前面幾個章節(jié)中,每個章節(jié)要么獨立地講解串口收數(shù)據(jù),要么獨立地講解發(fā)數(shù)據(jù),實際上在大部分的項目中,串口都需要“一收一應答”的握手協(xié)議,上位機作為主機,單片機作為從機,主機先發(fā)一串數(shù)據(jù),從機收到數(shù)據(jù)后進行校驗判斷,如果校驗正確則返回正確應答指令,如果校驗錯誤則返回錯誤應答指令,主機收到應答指令后,如果發(fā)現(xiàn)是正確應答指令則繼續(xù)發(fā)送其它的新數(shù)據(jù),如果發(fā)現(xiàn)是錯誤應答指令,或者超時沒有接收到任何應答指令,則繼續(xù)重發(fā),如果連續(xù)重發(fā)三次都是錯誤應答或者無應答,主機就進行報錯處理。讀者只要把我的串口收發(fā)程序結合起來,就很容易實現(xiàn)這樣的功能,我就不再詳細講解了。從下一節(jié)開始我講解單片機掉電后數(shù)據(jù)保存的內容,欲知詳情,請聽下回分解-----利用AT24C02進行掉電后的數(shù)據(jù)保存。





