久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3068|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)C語(yǔ)言精確延時(shí)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:65439 發(fā)表于 2016-1-8 10:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

51單片機(jī) Keil C 延時(shí)程序的簡(jiǎn)單研究

(晶振12MHz,一個(gè)機(jī)器周期1us.)

一. 500ms延時(shí)子程序

程序:

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:0x0800 7F0F MOV R7,#0x0F

C:0x0802 7ECA MOV R6,#0xCA

C:0x0804 7D51 MOV R5,#0x51

C:0x0806 DDFE DJNZ R5,C:0806

C:0x0808 DEFA DJNZ R6,C:0804

C:0x080A DFF6 DJNZ R7,C:0802

C:0x080C 22 RET

計(jì)算分析:

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

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

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

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

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

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

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

二. 200ms延時(shí)子程序

程序:

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:0x0800 7F05 MOV R7,#0x05

C:0x0802 7E84 MOV R6,#0x84

C:0x0804 7D96 MOV R5,#0x96

C:0x0806 DDFE DJNZ R5,C:0806

C:0x0808 DEFA DJNZ R6,C:0804

C:0x080A DFF6 DJNZ R7,C:0802

C:0x080C 22 RET

三. 10ms延時(shí)子程序

程序:

voiddelay10ms(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:0x0800 7F05 MOV R7,#0x05

C:0x0802 7E04 MOV R6,#0x04

C:0x0804 7DF8 MOV R5,#0xF8

C:0x0806 DDFE DJNZ R5,C:0806

C:0x0808 DEFA DJNZ R6,C:0804

C:0x080A DFF6 DJNZ R7,C:0802

C:0x080C 22 RET

四. 1s延時(shí)子程序

程序:

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

}

對(duì)1s延時(shí)的驗(yàn)證:

1. 設(shè)置仿真的晶振為12MHz

2.

2. 在延時(shí)函數(shù)設(shè)置斷點(diǎn)

3. 單步運(yùn)行程序,到達(dá)延時(shí)函數(shù)的入口

4. 先記下進(jìn)入延時(shí)函數(shù)的時(shí)間


5. step out 跳出函數(shù),記下此時(shí)時(shí)間,兩個(gè)時(shí)間相減即為延時(shí)函數(shù)運(yùn)行時(shí)間


函數(shù)運(yùn)行時(shí)間=1.00041400-0.00041600≈1s

產(chǎn)生的匯編

C:0x0800 7F05 MOV R7,#0x05

C:0x0802 7E04 MOV R6,#0x04

C:0x0804 7D74 MOV R5,#0x74

C:0x0806 7CD6 MOV R4,#0xD6

C:0x0808 DCFE DJNZ R4,C:0808

C:0x080A DDFA DJNZ R5,C:0806

C:0x080C DEF6 DJNZ R6,C:0804

C:0x080E DFF2 DJNZ R7,C:0802

C:0x0810 22 RET

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

void mDelay(unsigned int Delay) //Delay = 1000 時(shí)間為1S
{
unsigned int i;
for(;Delay>0;Delay--)
{
for(i=0;i<124;i )
{;}

}
}

void waitms(int i)
{
char m;

for( ; i ;i--)
{
for(m = 203; m ; m--)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}

延時(shí)1ms的函數(shù)
時(shí)鐘頻率12MHz

unsigned int sleepTime;
unsinged char inSleep = 0;

void sleepService(void)
{
if (inSleep) sleepTime--;
if (sleepTime == 0) inSleep = 0;
}

void isr_timer(void) //假定定時(shí)器中斷1ms 中斷一次。
{
...
sleepService();
...
}

void sleep(unsigned int ms) //延時(shí)子程序
{
sleepTime = ms;
inSleep = 1;
while(inSleep);
}

void main(void)
{
....
sleep(1000); //延時(shí) 1秒
...
}


評(píng)分

參與人數(shù) 2黑幣 +60 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!
紅塵有你 + 10 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:102073 發(fā)表于 2016-1-8 10:55 | 只看該作者
代碼延時(shí)還要考慮代碼執(zhí)行的時(shí)間開(kāi)銷,需要精確的延時(shí)我還是喜歡用定時(shí)器
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕国产精品 | 一区二区三区四区不卡 | 久综合 | 国产精品精品久久久 | 日日干日日操 | 日韩免费视频一区二区 | 久久国产精品免费一区二区三区 | 中文字幕亚洲视频 | 亚洲欧美日韩国产综合 | 中文字幕成人av | 九色视频网 | 亚洲看片| 日韩三级在线 | 中文天堂在线一区 | 精品欧美一区二区精品久久久 | av免费网站在线观看 | 成人精品视频在线观看 | 久久综合欧美 | 99reav| 欧区一欧区二欧区三免费 | 91精品国产91| 自拍偷拍中文字幕 | 在线观看日韩 | 久久久久久久久久久久91 | 午夜精品一区二区三区在线播放 | 欧美成人一级 | 久久精品亚洲 | 久久精品二区亚洲w码 | 中文字幕在线观看第一页 | 伊人激情综合网 | 日韩免费在线视频 | 国产精品久久久久永久免费观看 | 国产激情偷乱视频一区二区三区 | 91久久婷婷 | 亚洲一区视频在线播放 | 国产成人jvid在线播放 | 91成人在线视频 | 色小姐综合网 | 丝袜一区二区三区 | 天堂一区二区三区 | 91黄色片免费看 |