分享

关于延时程序

 yaozerui 2011-05-12
汇编程序的延时可以直接根据指令计算
在12M晶振的条件下,1个机器周期的指令为1微妙
单片机的指令分为单字节、双字节、三字节三种,其机器周期分别为1us、2us、3us [12M晶振]

对上述程序,分三部分计算:
push  06h  ;1周期 1us
push  07h  ;1周期 1us
MOV  R6,#14H ;2周期 2us

;下面做一个整体计算 (2+19*2+2)*14 us
DL1:MOV  R7,#19H ;2周期 
DL2:DJNZ R7,DL2 ;2周期 
DJNZ R6,DL1 ;2周期
 
pop    07h;1周期 1us
pop    06h;1周期 1us
RET;1周期 1us

然后累加即可得答案
-----------------------------------------------------------------------------------------------------------------------------------------------
TIME1MS:
MOV R6, #2
TIME1:
;延时498uS
MOV R7, #249
DJNZ R7, $ ;R7的为0时,程序向下运行,否则继续减
;
DJNZ R6, TIME1 ;加上此命令后,每个小周期时间为500uS
;运行两周为1MS,再加上最前面的MOV R6那条指令,就是1.002MS
RET

此程序实现的是1.002MS的定时,当然这当中不算主程序调用此延时程序时现场保护的时间,即压栈和出栈的时间

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多