上位機一直在向微控制器傳送資料,串列埠中斷怎麼處理才能不影響其他功能程式的執行啊

2022-09-01 12:20:02 字數 1127 閱讀 2644

1樓:匿名使用者

由於你說的不詳細,也不知道你晶振是多少,微控制器是什麼型號,波特率是多少。也才不清楚你微控制器串列埠的資料是否是一直有用的。我就大概說一下,你可以參考:

第一:如果串列埠的資料是在你需要的時候才有用,這樣你可以在需要的地方開啟串列埠中斷,在中斷中判斷接收的是不是所用串列埠資料的最後乙個位元組,如果是那麼就關閉中斷,如果不是那麼就就會繼續接收。這樣會提高串列埠和微控制器的工作效率。

第二:如果串列埠資料是必須接收的,那麼1樓和2樓所說的就不可以了,其實正常的處理中斷就可以了,只要注意中斷的優先順序就好。串列埠處理佔用的時間其實不是你想的那麼多,我不防給你算一下:

假設波特率是9600b/s,晶振8m,至於微控制器什麼型別就不去假設了,畢竟太多了。

串列埠資料8b乙個位元組,那麼9600的波特率1s傳播的次數也就是9600b/s/8b每次=1200次每秒,這個能理解吧。那麼中斷的時間間隔也就是1s/1200次每秒=0.83ms。

再看微控制器的處理速度,8m晶振(不算大吧),執行每條指令的時間基本上是1s/8m=0.125us,(就算是51微控制器,處理週期是晶振週期的12倍,那每條指令的時間週期也不過是1點幾微秒),通過資料你看,一次中斷微控制器能處理上千條指令,所以不會出現你想的它只是在接收資料,其他什麼也許不幹的情況。你所要做的就是如果有其他中斷,處理好中斷的優先順序,哪些中斷重要,需要優先處理之類的事情即可。

你不會存在誤區吧,認為一直有資料,就一直在中斷中吧,它接收是乙個位元組乙個位元組的。乙個位元組一中斷。

樓上說的定時器你還是不要考慮了,需要多少次數不定,處理定時器中斷後還要在處理串列埠,耽誤的時間會更多。而且可靠性不高,串列埠一直傳輸資料的專案我做過,正常處理就不會出問題

2樓:匿名使用者

用定時器間隔一定的時間才與允許串列埠中斷~

3樓:匿名使用者

不用中斷。只用乙個定時器,時間應當要小於1個位元組的時間,去查詢接收標誌位。然後再做處理。

4樓:匿名使用者

採用輪詢的方式,只在收到有效資料時,才處理該資料,否則繼續輪詢別的功能。

微控制器串列埠通訊只使接收資料才進入串列埠中斷的程式是否這樣?

5樓:匿名使用者

你的程式可行,沒有問題

如何51微控制器的串列埠傳送多個資料和接受多個資料

你傳送時,用迴圈控制,發幾個位元組,迴圈幾次。連續傳送多個資料,都是小意思,也是最基本的了。接收更好辦了,用中斷接收,中斷一次接收一次,你就儲存一次唄,這有什麼難的。51微控制器串列埠通訊傳送多個位元組的問題 你的程式反應你的思路。思路有問題,結果就有問題。顯示就一直放在迴圈 不要加什麼條件判斷避免...

比較喜歡做烘焙,一直在糾結買廚師機還是麵包機,想問下大家家用有必要買廚師機嗎

沒有必要的,家用的話麵包機很實用要不就是烤箱可以烤各種烘焙的麵點,也可以做別的菜使用,家庭用的比較實用的話我覺得還是麵包機和烤箱 廚師機能和麵嗎?和的面夠筋道嗎?你好同學,廚師機我不知道都包括什麼,但是我知道有專門的和麵機,和麵機還可以,不過和完麵還要手工和 揉 一下的。謝謝。你好!我玩烘焙的時間比...

洗衣機洗滌時一直在排水是什麼原因

全自動洗衣機在衣服時一直在排水的原因及處理方法 一,排水封破裂或有東西掉進去頂住了排水閥,比喻銀幣之類等東西,所以合不回來出現漏水。二,修理方法 1,擰開洗衣機後板,把排水閥的膠蓋擰開後拉出來檢查看排水封有沒老化破裂。2,然後用手伸進排水口裡面,看有沒有雜物,可以拿出來。3,如擰開白色膠蓋拉出來就可...