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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5499|回復: 8
打印 上一主題 下一主題
收起左側

匯編延時程序如何編寫

[復制鏈接]
跳轉到指定樓層
樓主
ID:223571 發表于 2017-8-16 11:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
設計一個延時100毫秒的延時程序?匯編怎么寫呀
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:111634 發表于 2017-8-16 20:26 | 只看該作者
本帖最后由 zl2168 于 2017-8-17 21:10 編輯

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


解:⑴ 延時1msfOSC =6MHz,一個機器周期為2msDJNZ指令為2個機器周期。


DY1ms:     MOV      R7,#250          ;置循環次數(指令為1個機器周期)


LOP:       DJNZ      R7,LOP           ;250×2機周=500機周


RET       ;子程序返回(單獨Keil調試時,需用END替代RET


上述子程序實際延時(500 +1)機周×2ms/機周=1002ms


延時10msfOSC =12MHz,一個機器周期為1ms


DY10ms:    MOV      R6,#20           ;置外循環次數


DY1:       MOV      R7,#250          ;置內循環次數


DY2:       DJNZ      R7,DY2          ;250×2機周=500機周


DJNZ      R6,DY1           ;500機周×20=10000機周


RET                         ;子程序返回(單獨Keil調試時,需用END替代RET


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


延時0.5sfOSC=12MHz,一個機器周期為1ms


DY05s:     MOV      R5,#5            ;置外循環次數


DY0:       MOV      R6,#200          ;置中循環次數


DY1:       MOV      R7,#250          ;置內循環次數


DY2:       DJNZ      R7,DY2          ;250×2機周=500機周


DJNZ      R6,DY1           ;500機周×200 =100000機周


DJNZ      R5,DY0           ;100000機周×5=500000機周


RET                       ;子程序返回(單獨Keil調試時,需用END替代RET


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


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

回復

使用道具 舉報

板凳
ID:123289 發表于 2017-8-16 20:50 | 只看該作者
看手冊中,查指令執行所占用的時鐘同期數,你就一目了然了。
回復

使用道具 舉報

地板
ID:227393 發表于 2017-8-16 21:02 | 只看該作者
DL1MS:  MOV            27H,#10                                 ;2MS(10*200)us
DL2:        MOV            28H,#200
        DJNZ           28H,$
                DJNZ           27H,DL2
                RET
你可以再改一下就可以了
回復

使用道具 舉報

5#
ID:7485 發表于 2017-8-16 21:52 | 只看該作者
DLY_L:
       MOV   R6,#200
D10:
       MOV   R7,#247
       DJNZ  R7,$
           nop
           nop
           nop
       DJNZ  R6,D10
       RET建議你100ms的延時,最好用定時器。循環延時,將會使mcu停在這里100ms,按鍵、顯示都會受影響。
回復

使用道具 舉報

6#
ID:7485 發表于 2017-8-16 21:53 | 只看該作者
本帖最后由 ahshmj 于 2017-8-17 08:05 編輯

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

回復

使用道具 舉報

7#
ID:7485 發表于 2017-8-16 21:54 | 只看該作者
“回復需要審核,請等待通過”真的挺麻煩的,沒法編輯。
回復

使用道具 舉報

8#
ID:1 發表于 2017-8-16 22:31 | 只看該作者
ahshmj 發表于 2017-8-16 21:54
“回復需要審核,請等待通過”真的挺麻煩的,沒法編輯。

這個問題,正在解決中,估計快了。主要是有非常多的機器人發廣告.
回復

使用道具 舉報

9#
ID:770227 發表于 2020-7-15 11:44 來自觸屏版 | 只看該作者
24MHZ頻率,1ms延時怎么算,需要可以自定義時間的那種
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久躁日日躁aaaaxxxx | 久久免费视频网 | 久久久www成人免费精品 | 久久www免费人成看片高清 | 欧美午夜精品 | 久久精品国产一区二区 | 精品国产18久久久久久二百 | 久久久精品网 | 免费一区二区三区 | 国产亚洲欧美在线 | 欧美中文字幕一区 | 国产精品美女久久久av超清 | 九九免费在线视频 | 国产精品一区二区在线免费观看 | 久久国产婷婷国产香蕉 | 亚洲一区在线播放 | av毛片| 色综合一区二区 | 亚洲精品白浆高清久久久久久 | 91免费入口 | 精品国产免费人成在线观看 | 亚洲第一黄色网 | 伊人网伊人 | 日本天堂一区 | 毛片国产 | 久久久久国产一区二区三区四区 | 综合中文字幕 | 丁香五月网久久综合 | 青青草原精品99久久精品66 | 日韩欧美在线一区 | 国产a区| 精品免费国产一区二区三区四区 | 久久综合久色欧美综合狠狠 | 2019天天干天天操 | 国产成人99久久亚洲综合精品 | www.日韩欧美 | 久久久久久久久久一区二区 | 国产福利资源在线 | 国产精品中文字幕在线 | 精品一区二区三区四区五区 | 国产免费播放视频 |