欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1690|回復: 5
收起左側

大家好,單片機初學者一直有個定時器疑問望能給指點

[復制鏈接]
ID:493146 發表于 2020-7-19 21:22 | 顯示全部樓層 |閱讀模式
初學單片機,在學定時器中斷的時候有一個疑惑的地方,就是假如我要用定時器中斷產生一個比較長的時間,需要定時器每隔10毫秒產生一次中斷,但是在定時器運行的期間還要實時檢測一個io口,有沒有這種可能,就是在定時器產生中斷的時候正好io口也來了一個信號,這個時候信號應該是檢測不到的,不知道我分析的對不對,這種情況有什么好的解決方法嗎?謝謝
回復

使用道具 舉報

ID:362076 發表于 2020-7-19 22:56 | 顯示全部樓層
是對的,所以設計程序的時候需要將中斷服務函數設計的盡量短。而且對于IO的信號,如果想要在循環內容較多的情況下盡快響應,還是應該采用中斷的方式代替查詢。否則就要保證程序循環時間小于信號有效時間。
回復

使用道具 舉報

ID:332444 發表于 2020-7-20 06:01 | 顯示全部樓層
分析很對,因此設計中斷執行指令必須盡可能少,有些不需要中斷去執行的就不用放中斷中,采取措施就是設定中斷優先級,最高外部中斷0,次計數器0,外1,定1,串口。
回復

使用道具 舉報

ID:801957 發表于 2020-7-20 16:38 | 顯示全部樓層
分析沒錯,中斷服務的程序設計應該短一些,有的沒必要就不用寫
回復

使用道具 舉報

ID:388929 發表于 2020-7-20 17:21 | 顯示全部樓層
用優先級解決,應該是可以這樣的
回復

使用道具 舉報

ID:451718 發表于 2020-7-20 17:30 | 顯示全部樓層
要看你對這個IO檢測對象是什么,還有這個對象產生IO變化的時長是什么級別,毫秒級還是10毫秒級,或是更長。 一般來說,
1:毫秒級以下的IO變化,都應該采用外部中斷來處理。
2:毫秒以上的到10毫秒以內,我一般是在毫秒的定時中斷函數里面,做一個標志位檢測,在主程序或者其它地方判斷這個標志位。
3 : 10毫秒到200毫秒的級別,放在10ms的定時器中就好了。
4:大于200毫秒的級別,直接放主程序中就行。
剛做單片機的時候,也有你同樣的問題,假如定義了2個定時器,分別是定時器0和定時器1,定時器0是1ms的,定時器1是10ms的。在系統時鐘運行到第10ms時候,到底是先觸發第10個定時器0,還是第一個定時器1?按照優先級,應該是理解為先觸發定時器0,再觸發定時器1。其實是同時觸發的,只是硬件會先執行定時器0里面的程序,再執行定時器1里面的程序。 那么值得注意的問題來了,如果定時器0執行的時間消耗了900ns會怎么樣呢?那么留給定時器1的資源時長就只有1ms了。這樣,很容易就會跑飛。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表