#include
sbit P1_0 = P1^0;
void Delay(); // 下面引用時(shí)一定要和這里的大小寫一致否則會(huì)有警告或錯(cuò)誤
void Main()
{
while (1) // 開始一直循環(huán)
{
P1_0 = 0;
Delay(); // 沒有參數(shù)也要加 () 否則會(huì)有Warning
P1_0 = 1;
Delay();
}
}
void Delay() // 12M晶振1s延時(shí)
{
unsigned char h, i, j, k;
for (h = 5; h 》 0; h--)
for (i = 4; i 》 0; i--)
for (j = 116; j 》 0; j--)
for (k = 214; k 》 0; k--); // 最后個(gè)要有 ; 號(hào)
}
//=======以下非代碼==========//
原理,利用h,i,j,k循環(huán)指令消耗掉一定時(shí)間來達(dá)到延時(shí),為什么利用循環(huán)延時(shí)的做法,在12M晶振延時(shí)1秒中需要h,i,j,k四個(gè)變量,且各變量的值是上面代碼中那樣呢?這要從單片機(jī)的周期說起,單片機(jī)有指令周期,機(jī)器周期,狀態(tài)周期,時(shí)鐘周期;
時(shí)鐘周期:也就晶振的振蕩周期,以12MHz為例,時(shí)鐘周期為 1/ 12000000 = 1/12us;
機(jī)器周期:1個(gè)機(jī)器周期=6個(gè)狀態(tài)周期=12個(gè)時(shí)鐘周期=1us;
指令周期:單片機(jī)執(zhí)行一條指令所需要的時(shí)間稱為指令周期,指令周期是以機(jī)器周期為單位的,不同的指令所需要的機(jī)器周期不一定相同(1-4個(gè)),單片機(jī)執(zhí)行一條單周期指令需要1us,執(zhí)行一條雙周期指令需要2us,for循環(huán)需要8個(gè)指令周期;
具體執(zhí)行for循環(huán)消耗的時(shí)間,可以在Keil里通過代碼測量:
#include
sbit P1_0 = P1^0;
void Delay();
void Main()
{
while (1)// 開始一直循環(huán)
{
P1_0 = 0;
Delay();
P1_0 = 1;
Delay();
}
}
void Delay()
{
unsigned char h;
for (h = 1000; h 》 0; h--); // 此處下斷點(diǎn)
}
循環(huán)1000次執(zhí)行完后的時(shí)間點(diǎn)
1000次循環(huán)耗時(shí) 0.00042850s - 0.00019600s = 0.00023250s = 232.5us;1次循環(huán)耗時(shí)約 0.2us,
1s = 1000000us,1000000us / 0.2us = 500000次,而5 * 4 * 116 * 214 = 496480;因?yàn)闊o符號(hào)字符型unsigned char 大小為1 byte,范圍為0~255,所以只能通過循環(huán)嵌套,近似的得到一個(gè)1s延時(shí)。
-
晶振
+關(guān)注
關(guān)注
34文章
2902瀏覽量
68347 -
51單片機(jī)
+關(guān)注
關(guān)注
274文章
5705瀏覽量
124370 -
程序
+關(guān)注
關(guān)注
117文章
3797瀏覽量
81450
原文標(biāo)題:51單片機(jī)1s延時(shí)程序設(shè)計(jì)
文章出處:【微信號(hào):changxuemcu,微信公眾號(hào):暢學(xué)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
單片機(jī)C語言程序設(shè)計(jì)的20例基礎(chǔ)程序設(shè)計(jì)詳細(xì)資料概述
![<b class='flag-5'>單片機(jī)</b>C語言<b class='flag-5'>程序設(shè)計(jì)</b>的20例基礎(chǔ)<b class='flag-5'>程序設(shè)計(jì)</b><b class='flag-5'>詳細(xì)資料</b>概述](https://file.elecfans.com/web1/M00/53/03/pIYBAFsZ62GAUpoNAADLp5fEgWg956.png)
51單片機(jī)教程之指令系統(tǒng)及程序設(shè)計(jì)的詳細(xì)資料概述
![<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>教程之指令系統(tǒng)及<b class='flag-5'>程序設(shè)計(jì)</b>的<b class='flag-5'>詳細(xì)資料</b>概述](https://file.elecfans.com/web1/M00/68/FA/pIYBAFvOj1eAW550AAd4LtDZFm0701.png)
51單片機(jī)教程之51單片機(jī)IO端口應(yīng)用的詳細(xì)資料概述
![<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>教程之<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>IO端口應(yīng)用的<b class='flag-5'>詳細(xì)資料</b>概述](https://file.elecfans.com/web1/M00/69/17/pIYBAFvQME6AUXKKAAG3yxJiqTA781.png)
51單片機(jī)教程之MCS51單片機(jī)C程序設(shè)計(jì)的詳細(xì)資料概述
![<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>教程之MCS<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>C<b class='flag-5'>程序設(shè)計(jì)</b>的<b class='flag-5'>詳細(xì)資料</b>概述](https://file.elecfans.com/web1/M00/68/FD/o4YBAFvQMUyAAJmnAADI5vys9l4381.png)
51單片機(jī)經(jīng)典項(xiàng)目及仿真程序及原理的詳細(xì)資料詳解
單片機(jī)基礎(chǔ)教程之匯編語言程序設(shè)計(jì)知識(shí)的詳細(xì)資料說明
![<b class='flag-5'>單片機(jī)</b>基礎(chǔ)教程之匯編語言<b class='flag-5'>程序設(shè)計(jì)</b>知識(shí)的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>](https://file.elecfans.com/web1/M00/84/85/pIYBAFxOxxuAMX-2AABKqDOvI70077.png)
多個(gè)51單片機(jī)C語言程序設(shè)計(jì)源代碼的詳細(xì)資料合集
![多個(gè)<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>C語言<b class='flag-5'>程序設(shè)計(jì)</b>源代碼的<b class='flag-5'>詳細(xì)資料</b>合集](https://file.elecfans.com/web1/M00/87/CC/pIYBAFyGGraACew5AATlcEf7zNs024.png)
51單片機(jī)延時(shí)函數(shù)計(jì)算問題以及如何準(zhǔn)確延時(shí)的詳細(xì)資料說明
![<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>延時(shí)</b>函數(shù)計(jì)算問題以及如何準(zhǔn)確<b class='flag-5'>延時(shí)</b>的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>](https://file.elecfans.com/web1/M00/8E/28/o4YBAFyz8KiAAkWhAAW7j-qqzyg219.png)
51單片機(jī)的匯編指令詳細(xì)資料說明
![<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的匯編指令<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>](https://file.elecfans.com/web1/M00/A5/28/pIYBAF1omBSAYoaKAAA8sIn1VC8699.png)
51單片機(jī)例函數(shù)的詳細(xì)資料說明
![<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>例函數(shù)的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>](https://file.elecfans.com/web1/M00/A4/EC/pIYBAF1mOnaAL_wKAATYgBHl60w795.png)
51單片機(jī)的中斷系統(tǒng)詳細(xì)資料說明
![<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的中斷系統(tǒng)<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>](https://file.elecfans.com/web1/M00/96/48/o4YBAF0DEiCAQGvwAALsXkZH_KY951.png)
51單片機(jī)匯編語言教程之單片機(jī)鍵盤接口程序設(shè)計(jì)的詳細(xì)資料說明
![<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>匯編語言教程之<b class='flag-5'>單片機(jī)</b>鍵盤接口<b class='flag-5'>程序設(shè)計(jì)</b>的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>](https://file.elecfans.com/web1/M00/95/19/o4YBAFz3gYaAKAUKAANau4O3q7A584.png)
單片機(jī)原理及應(yīng)用的詳細(xì)資料說明
![<b class='flag-5'>單片機(jī)</b>原理及應(yīng)用的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>](https://file.elecfans.com/web1/M00/B1/CC/o4YBAF4EH6aATTQ8AAEKJj8MdFM534.png)
51單片機(jī)1s延時(shí)程序設(shè)計(jì)資料下載
![<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>1s</b><b class='flag-5'>延時(shí)</b><b class='flag-5'>程序設(shè)計(jì)</b><b class='flag-5'>資料</b>下載](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論