日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对单片机通信方式(中断和轮询)的理解

發布時間:2023/12/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对单片机通信方式(中断和轮询)的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? 在了解單片機和外設通信的時候,我們不僅要了解通信的協議,我們通信的方式。其中通信協議就像是我們說話的語法,如果語法錯了,那么外設就一個字聽不懂了;如果通信方式錯了,外設就可能就理解不了我們說話的意思了。

? ? ? 在我學習51單片機的時候,一些資料說通信的方式有兩種,分別是中斷和輪詢,并且中斷會占用更少的CPU資源。當時我看的似懂非懂就開始寫(抄)程序。但是這個一定是對的嗎?

??????我們先談談單片機發送一個字節的數據。如果我們要連續每隔一段時間發送一個字節數據,我們首先就要向寄存器內寫入我們想要發送的數據。然后單片機的硬件就會為我們完成數據的發送,并且在發送完成后產生中斷!但是,我們已經發送完了我們想要發送的數據了,再次進入中斷還有什么意義?所以我認為:在這種模式或者說是需求下,我們完全不必使用中斷,只需要每間隔一段時間調用我們的發送函數(發送函數只需要完成寫寄存器的指令就行了)便可以了。

? ? ? ? 我們再來談談單片機接收一個字節的數據。在單片機接收完一個字節的數據后,會產生中斷。如果對面傳來的數據的時間間隔非常小,在我們單片機的處理能力跟不上的時候,我們也可以不必使用中斷,只需要定時調用接收函數(接收函數只需要完成讀取寄存器的值就行了)便可以了。當然這個時候,我們可能會造成一定的數據的丟失。當然我們也可以使用中斷,這樣就可以避免數據的丟失。但是,如果我們接收數據的速度大于我們處理數據的速度時,我們還是會產生丟失數據的情況。

? ? ? ? 我們在來談談單片機發送一個數據包的情況。這就要求我們發送的數據的時間間隔非常小。(我沒有遇到過這種情況,完全靠想象)。如果我們采用輪詢的話,那么就需要完成判斷是否發送完成發送這一個動作,我的理解是這樣就會占用CPU的資源,這個動作也會消耗一定的時間,但是我認為這個時間應該是可以忽略的。所以我們如果采用中斷的話,我們就可以完成一次發送一個數據包的需求了。

? ? ? ? 最后,我們來談談單片機接收一個數據包的情況。如果一個數據包內的數據發送時間間隔是非常非常小的話,采用輪詢的方式必然會產生一個判斷的時間。如果判斷的時間大于發送時間間隔的話,那么就很可能產生下一幀數據接收不成功的情況,這個是屬于寄存器里沒有寫入數據,我們無法在后續的程序里來彌補這個錯誤。所以當然是中斷方式比較好啊。當然還用一種叫做FIFO的結構,應該對這種情況有所幫助,但是我沒有接觸了解使用過,也就整不明白了。

? ? ? ? 以上都是我自己個人的理解或者說是猜想吧,也沒有得到過驗證,也都是從我少的可憐的、失敗的嘗試中總結出來的。不夠準確,不夠專業,但也是我“智慧”的結晶啊,不寫出來總覺得對不起每天脖子上面頂著的那個玩意。

? ? ? ??

總結

以上是生活随笔為你收集整理的对单片机通信方式(中断和轮询)的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。