单片机精准延时汇编语言

2025-03-17 10:36:14
推荐回答(1个)
回答1:

如果是用汇编语言的话,是可以做到精准延时的。当然首先要有一个精准的时钟,也即是晶振要准确,比如使用精准的12M晶振12T模式的51单片机延时1毫秒,程序如下:
DELAY1MS:
    MOV R3,#249    ;1
    DJNZ R3,$      ;2*249
    MOV R3,#249    ;1
    DJNZ R3,$      ;2*249
    RET            ;2
延时时间为:1+2*249+1+2*249+2=1000T,这里使用12M晶振,T=1微秒,所以总共延时1000微秒也即是1毫秒。如果要延时更多时间,可以采用循环方式来实现。当然在计算延时时间时要考虑到使用的单片机类型和型号,比如STC89C51是6T,DS80320是4T,STC12C5A60S2是12T,这些因数一定要考虑进去才行。