www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀] C語言最大的缺點就是實時性差,我在網(wǎng)上到看了一些關(guān)于延時的討論,其中有篇文章51單片機Keil C延時程序的簡單研究,作者:InfiniteSPACe Studio/isjfk寫得不錯,他是用while(--i);產(chǎn)生DJNZ來實現(xiàn)精確延時,

C語言最大的缺點就是實時性差,我在網(wǎng)上到看了一些關(guān)于延時的討論,其中有篇文章51單片機Keil C延時程序的簡單研究,作者:InfiniteSPACe Studio/isjfk

寫得不錯,他是用while(--i);產(chǎn)生DJNZ來實現(xiàn)精確延時,后來有人說如果while里面不能放其它語句,否則也不行,用do-while就可以,具體怎樣我沒有去試.所有這些都沒有給出具體的實例程序來.還看到一些延時的例子多多少少總有點延時差.為此我用for循環(huán)寫了幾個延時的子程序貼上來,希望能對初學者有所幫助.(晶振12MHz,一個機器周期1us.)

void Delay(uchar i)
{
while(--i);
}

21: void Delay(uchar i)
22: {
23: while(--i);
C:0x001F DFFE DJNZ R7,Delay(C:001F)
24: }

一. 500ms延時子程序

程序:

void delay500ms(void)

{

unsigned char i,j,k;

for(i=15;i>0;i--)

for(j=202;j>0;j--)

for(k=81;k>0;k--);

}

產(chǎn)生的匯編:

C:0x08007F0F MOVR7,#0x0F

C:0x08027ECA MOVR6,#0xCA

C:0x08047D51 MOVR5,#0x51

C:0x0806DDFE DJNZ R5,C:0806

C:0x0808DEFA DJNZ R6,C:0804

C:0x080ADFF6 DJNZ R7,C:0802

C:0x080C22 RET

計算分析:

程序共有三層循環(huán)

一層循環(huán)n:R5*2 = 81*2 = 162usDJNZ2us

二層循環(huán)m:R6*(n+3) = 202*165 = 33330usDJNZ2us + R5賦值1us = 3us

三層循環(huán): R7*(m+3) = 15*33333 = 499995usDJNZ2us + R6賦值1us = 3us

循環(huán)外: 5us子程序調(diào)用2us +子程序返回2us + R7賦值1us= 5us

延時總時間=三層循環(huán)+循環(huán)外= 499995+5 = 500000us =500ms

計算公式:延時時間=[(2*R5+3)*R6+3]*R7+5

二. 200ms延時子程序

程序:

void delay200ms(void)

{

unsigned char i,j,k;

for(i=5;i>0;i--)

for(j=132;j>0;j--)

for(k=150;k>0;k--);

}

產(chǎn)生的匯編

C:0x08007F05 MOVR7,#0x05

C:0x08027E84 MOVR6,#0x84

C:0x08047D96 MOVR5,#0x96

C:0x0806DDFE DJNZ R5,C:0806

C:0x0808DEFA DJNZ R6,C:0804

C:0x080ADFF6 DJNZ R7,C:0802

C:0x080C22 RET

三. 10ms延時子程序

程序:

void delay10ms(void)

{

unsigned char i,j,k;

for(i=5;i>0;i--)

for(j=4;j>0;j--)

for(k=248;k>0;k--);

}

產(chǎn)生的匯編

C:0x08007F05 MOVR7,#0x05

C:0x08027E04 MOVR6,#0x04

C:0x08047DF8 MOVR5,#0xF8

C:0x0806DDFE DJNZ R5,C:0806

C:0x0808DEFA DJNZ R6,C:0804

C:0x080ADFF6 DJNZ R7,C:0802

C:0x080C22 RET

四. 1s延時子程序

程序:

void delay1s(void)

{

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--);

}

產(chǎn)生的匯編

C:0x08007F05 MOVR7,#0x05

C:0x08027E04 MOVR6,#0x04

C:0x08047D74 MOVR5,#0x74

C:0x08067CD6 MOVR4,#0xD6

C:0x0808DCFE DJNZ R4,C:0808

C:0x080ADDFA DJNZ R5,C:0806

C:0x080CDEF6 DJNZ R6,C:0804

C:0x080EDFF2 DJNZ R7,C:0802

C:0x081022 RET

在精確延時的計算當中,最容易讓人忽略的是計算循環(huán)外的那部分延時,在對時間要求不高的場合,這部分對程序不會造成影響.


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

嵌入式系統(tǒng)是一種專用的計算機系統(tǒng),作為裝置或設(shè)備的一部分,通常嵌入式系統(tǒng)是一個控制程序存儲在ROM中的嵌入式處理器控制板,事實上所有帶有數(shù)字接口的設(shè)備,有些嵌入式系統(tǒng)還包含操作系統(tǒng),但大多數(shù)嵌入式系統(tǒng)都是由單個程序?qū)崿F(xiàn)整...

關(guān)鍵字: 嵌入式 語言 技術(shù)

語音編碼器的主要功能就是把用戶語音的PCM(脈沖編碼調(diào)制)樣值編碼成少量的比特(幀)。這種方法使得語音在連路產(chǎn)生誤碼、網(wǎng)絡(luò)抖動和突發(fā)傳輸時具有健壯性(Robustness)。在接收端,語音幀先被誤碼為PCM語音樣值,然后...

關(guān)鍵字: 語音編碼器 PCM 語言

模糊控制算法(理論知識)

關(guān)鍵字: 模糊控制 語言

任何一種“語言”,都是各種“語言特性”的組合。

關(guān)鍵字: 程序 語言 嵌入式

由于新冠疫情,口罩已經(jīng)成為了一種日常用品。而日本似乎十分熱衷于研究不同類型的口罩,例如為了應(yīng)對夏季的“冰鎮(zhèn)口罩”和帶微型電扇的口罩,還有為了女性美觀研發(fā)的“小臉美口罩”。 8月4日,據(jù)媒體報道,日本一

關(guān)鍵字: 口罩 日本 智能 翻譯 語言

研究表明,人在老年時學習第二語言也可以改善認知功能。 雖然我們大多數(shù)人都容易學會技術(shù),但學習語言從未如此簡單。

關(guān)鍵字: Android 語言 verbling

航科院民用無人機檢驗中心在湖北武漢對易瓦特科技股份公司的EWZ-S8八旋翼無人機進行了無人機系統(tǒng)安全能力二級圍欄檢驗。本次檢驗耗時3個多小時。檢驗中心檢驗員針對EWZ-S8八旋翼無人機進行了無人

關(guān)鍵字: 無人機 語言

什么是51單片機?它有什么注意事項?編程也好設(shè)計也罷,都要有遵循的規(guī)則。可以發(fā)揮自己的創(chuàng)新但是要顧全大局,不能隨意的編程。下面分享關(guān)于51單片機編程的一些規(guī)則,希望能幫到大家,避免大家四處碰壁。

關(guān)鍵字: 51單片機 編程 語言

1月15日,打著中科院計算所出品、完全自主開發(fā)旗號的國產(chǎn)編程語言“木蘭”引發(fā)廣泛關(guān)注,但很快被發(fā)現(xiàn)是基于Python語言套殼、換皮而來的產(chǎn)物。 面對質(zhì)疑,中科院計算所編譯實驗室員工、“木蘭”語言研發(fā)團

關(guān)鍵字: 中科院 國產(chǎn) 木蘭 編程 語言 劉雷 計算所 重罰

國產(chǎn)編程語言“木蘭”橫空出世,后續(xù)結(jié)果反轉(zhuǎn)令人不齒。 近日,一則關(guān)于國產(chǎn)編程語言“木蘭”出世的消息讓人眼前一亮。據(jù)悉,“木蘭”是面向智能物聯(lián)應(yīng)用的編程語言,由我國科研人員自主設(shè)計、開發(fā)和實現(xiàn),與之配套

關(guān)鍵字: 中科院 木蘭 漢芯 編程 語言
關(guān)閉