欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

只需一步,快速開始

搜索
查看: 6100|回復(fù): 8
收起左側(cè)

匯編延時(shí)程序如何編寫

[復(fù)制鏈接]
ID:223571 發(fā)表于 2017-8-16 11:35 | 顯示全部樓層 |閱讀模式
設(shè)計(jì)一個(gè)延時(shí)100毫秒的延時(shí)程序?匯編怎么寫呀
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2017-8-16 20:26 | 顯示全部樓層
本帖最后由 zl2168 于 2017-8-17 21:10 編輯

【例3-24】 延時(shí)程序是單片機(jī)應(yīng)用系統(tǒng)常用的模塊程序。試按下列要求編寫延時(shí)子程序:
⑴ 延時(shí)1ms,fOSC=6MHz;
⑵ 延時(shí)10ms,fOSC=12MHz;
⑶ 延時(shí)0.5s,fOSC=12MHz。


解:⑴ 延時(shí)1msfOSC =6MHz,一個(gè)機(jī)器周期為2msDJNZ指令為2個(gè)機(jī)器周期。


DY1ms:     MOV      R7,#250          ;置循環(huán)次數(shù)(指令為1個(gè)機(jī)器周期)


LOP:       DJNZ      R7,LOP           ;250×2機(jī)周=500機(jī)周


RET       ;子程序返回(單獨(dú)Keil調(diào)試時(shí),需用END替代RET


上述子程序?qū)嶋H延時(shí)(500 +1)機(jī)周×2ms/機(jī)周=1002ms


延時(shí)10msfOSC =12MHz,一個(gè)機(jī)器周期為1ms


DY10ms:    MOV      R6,#20           ;置外循環(huán)次數(shù)


DY1:       MOV      R7,#250          ;置內(nèi)循環(huán)次數(shù)


DY2:       DJNZ      R7,DY2          ;250×2機(jī)周=500機(jī)周


DJNZ      R6,DY1           ;500機(jī)周×20=10000機(jī)周


RET                         ;子程序返回(單獨(dú)Keil調(diào)試時(shí),需用END替代RET


實(shí)際延時(shí)[(500+2+1)×20+1]機(jī)周×1ms /機(jī)周=10061ms


延時(shí)0.5sfOSC=12MHz,一個(gè)機(jī)器周期為1ms


DY05s:     MOV      R5,#5            ;置外循環(huán)次數(shù)


DY0:       MOV      R6,#200          ;置中循環(huán)次數(shù)


DY1:       MOV      R7,#250          ;置內(nèi)循環(huán)次數(shù)


DY2:       DJNZ      R7,DY2          ;250×2機(jī)周=500機(jī)周


DJNZ      R6,DY1           ;500機(jī)周×200 =100000機(jī)周


DJNZ      R5,DY0           ;100000機(jī)周×5=500000機(jī)周


RET                       ;子程序返回(單獨(dú)Keil調(diào)試時(shí),需用END替代RET


實(shí)際延時(shí){[(2×250+2+1)×200+2+1]×5+1}機(jī)周×1ms/機(jī)周=503016ms


說明: RET(返回)指令需與子程序調(diào)用指令成對(duì)出現(xiàn),單獨(dú)執(zhí)行時(shí)會(huì)出錯(cuò)。因此,Keil調(diào)試時(shí),需去除RET指令,用END替代RET,才能得到正確的延時(shí)時(shí)間。但實(shí)際調(diào)用時(shí),仍需加上RET指令,延時(shí)時(shí)間增加2機(jī)周。
以上摘自張志良編著《80C51單片機(jī)實(shí)用教程——基于Keil C和Proteus》高等教育出版社ISBN 978-7-04-044532-9, 用于學(xué)習(xí)51單片機(jī)原理,程序(雙解c和匯編)語(yǔ)句條條有注解,便于閱讀理解,便于自學(xué)。

回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-8-16 20:50 | 顯示全部樓層
看手冊(cè)中,查指令執(zhí)行所占用的時(shí)鐘同期數(shù),你就一目了然了。
回復(fù)

使用道具 舉報(bào)

ID:227393 發(fā)表于 2017-8-16 21:02 | 顯示全部樓層
DL1MS:  MOV            27H,#10                                 ;2MS(10*200)us
DL2:        MOV            28H,#200
        DJNZ           28H,$
                DJNZ           27H,DL2
                RET
你可以再改一下就可以了
回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2017-8-16 21:52 | 顯示全部樓層
DLY_L:
       MOV   R6,#200
D10:
       MOV   R7,#247
       DJNZ  R7,$
           nop
           nop
           nop
       DJNZ  R6,D10
       RET建議你100ms的延時(shí),最好用定時(shí)器。循環(huán)延時(shí),將會(huì)使mcu停在這里100ms,按鍵、顯示都會(huì)受影響。
回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2017-8-16 21:53 | 顯示全部樓層
本帖最后由 ahshmj 于 2017-8-17 08:05 編輯

基于12m晶振。現(xiàn)在的誤差約0.02ms,如果要求的精度高,可以用“NOP”指令配合小循環(huán)調(diào)整到理論上的零誤差。如下:
DLY_L:
       MOV   R6,#200
D10:
       MOV   R7,#247
       DJNZ  R7,$
;      nop
       nop
       nop
       DJNZ  R6,D10
       mov  r6, #99
       djnz r6,$
       RET

回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2017-8-16 21:54 | 顯示全部樓層
“回復(fù)需要審核,請(qǐng)等待通過”真的挺麻煩的,沒法編輯。
回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2017-8-16 22:31 | 顯示全部樓層
ahshmj 發(fā)表于 2017-8-16 21:54
“回復(fù)需要審核,請(qǐng)等待通過”真的挺麻煩的,沒法編輯。

這個(gè)問題,正在解決中,估計(jì)快了。主要是有非常多的機(jī)器人發(fā)廣告.
回復(fù)

使用道具 舉報(bào)

ID:770227 發(fā)表于 2020-7-15 11:44 來自觸屏版 | 顯示全部樓層
24MHZ頻率,1ms延時(shí)怎么算,需要可以自定義時(shí)間的那種
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表