
單片機開發者都知道,單片機中執行程序是要耗費時間的。并且被執行的次數通常非常之多,有的多達上萬次,那么如何大致估算出這些程序執行完畢需要多長時間呢?并且執行時間是否在要求的時間之內呢?本文就將通過一些舉例來為大家解答。
舉例來說,學校的鈴聲是學生們上課和下課的重要標志。整個學校就是在鈴聲的統一指揮下,步調一致,統一協調地工作著。這個鈴是按一定的時間安排來響的,可以稱之為“時序:時間的順序”。一個由人組成的單位尚且要有一定的時序,計算機當然更要有嚴格的時序。事實上,計算機更象一個大鐘,什么時候分針動,什么時候秒針動,什么時候時針動,都有嚴格的規定,一點也不能亂。計算機要完成的事更復雜,所以它的時序也更復雜。
在計算機工作時,是一條一條地從ROM中取指令,然后一步一步地執行,按照規定:計算機訪問一次存儲器的時間,稱之為一個機器周期。這是一個時間基準,就好像人用“秒”作為時間基準一樣,但有人會問,為什么不干脆用“秒”,這即符合人們的習慣又方便記憶,但實際上,如果試用秒作為單位反而會出現混亂的情況。
一個機器周期包括12個時鐘周期。下面算一下一個機器周期是多長時間。設一個單片機工作于12M晶振,它的時鐘周期是1/12(微秒)。它的一個機器周期是12*(1/12)也就是1微秒。(請計算一個工作于6M晶振的單片機,它的機器周期是多少)。
MCS-51單片機的所有指令中,有一些完成得比較快,只要一個機器周期即可,有一些完成得比較慢,得要2個機器周期,還有兩條指令要4個機器周期才行。這也不難再解,不是嗎?
為了恒量指令執行時間的長短,又引入一個新的概念:指令周期。所謂指令周期就是指執行一條指令的時間。INTEL對每一條指令都給出了它的指令周期數,這些數據,大部份不需要開發者去記憶,但是有一些指令是需要記住的,如DJNZ指令是雙周期指令。
接下來的計算過程便不困難了,首先要知道晶振的頻率,設所用晶振為12M,則一個機器周期就是1微秒。而DJNZ指令是雙周期指令,所以執行一次要2個微秒。一共執行62500次,正好125000微秒,也就是125毫秒。
通過以上的介紹,大家可以看到單片機時序對于設計來說是非常重要的。時序就像時鐘一樣決定單片機在接下來的一秒將要做什么,因此對于時序的把控就等于對單片機工作效率和進度的把控。本文針對新手,將單片機的時序進行了簡單分析,感興趣的朋友不妨花上幾分鐘來閱讀本文,相信會有意想不到的收獲。
聲明:本內容為作者獨立觀點,不代表電源網。本網站原創內容,如需轉載,請注明出處;本網站轉載的內容(文章、圖片、視頻)等資料版權歸原作者所有。如我們采用了您不宜公開的文章或圖片,未能及時和您確認,避免給雙方造成不必要的經濟損失,請電郵聯系我們,以便迅速采取適當處理措施;歡迎投稿,郵箱∶editor@netbroad.com。
微信關注 | ||
![]() |
技術專題 | 更多>> | |
![]() |
技術專題之EMC |
![]() |
技術專題之PCB |