51單片機延時函數

指令週期 :幾個機器週期能完成一項基本操作,但一條指令常常是需要多項基本操作結合才能完成,完成一條指令所需的時間就是指令週期,當然不同的指令,其指令週期就不一樣。通常含一個機器週期的指令稱爲單週期指令,包含兩個機器週期的指令稱爲雙週期指令。
機器週期:8051系列單片機的機器週期=12*時鐘週期,之所以這樣分是因爲單個時鐘週期根本幹不了一件完整的事情(如取指令、寫寄存器、讀寄存器等),而12個時鐘週期就能基本完成一項基本操作了。
時鐘週期:時鐘週期=振盪週期,名稱不同而已,都是等於單片機晶振頻率的倒數,如常見的外接12M晶振,那它的時鐘週期=1/12M。
機器週期=12個時鐘週期。
下面是三者關係圖
在這裏插入圖片描述
一、軟件延時
1.1 普通軟件延時函數是這樣的,在晶振頻率在11.0592Mhz的時候,內層 i=114.爲什麼是114呢?因爲程序經過在keil中運行,計算出一次自減時間約爲8.7us。
所以在1ms自減運算的次數爲: 1000/8.7=114
在這裏插入圖片描述
1.2自動 適應主時鐘 的延時函數。

在這裏插入圖片描述
時鐘頻率:1秒鐘CPU震動的次數;STC89C52是11.0592MHZ 也就是 11059200HZ;在1秒內有11059200個時鐘週期。
//96T per loop :每一條自減語句需要96個時鐘週期,需要96個脈衝
在這裏插入圖片描述
所以 i=MAIN_Fosc/9600;

發佈了8 篇原創文章 · 獲贊 11 · 訪問量 5394
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章