求问这段汇编语言的延时程序怎么计算延时时间

2025-05-16 17:02:28
推荐回答(2个)
回答(1):

采纳答案,数字,算错了吧?
应该是 500 多毫秒。

51 单片机的指令,执行时间,是一个机器周期或二个机器周期。
只有乘除指令,是四个机器周期。
机器周期,称为T。

正确计算如下:

MOV R2, #10 ;1T
L1: MOV R3, #100 ;1T
L2: MOV R4, #250 ;1T
L3: DJNZ R4, L3 ;2T 2 * 250 = 500T
DJNZ R3, L2 ;2T (1+500+2) * 100 = 50300T
DJNZ R2, L1 ;2T (1+50300+2) * 10 = 503030T
RET ;2T (1+503030+2) = 503033T

总共执行时间是:503033T。

当晶振是 12MHz,T 就是 1us。

那么,延时时间就是 503033us,约等于 500 毫秒。

回答(2):

现在单片机种类太多,即便都是8051内核,系统架构也不完全一样,一个差别就是执行一条指令的时间不尽相同。所以你要根据具体的芯片资料,看看延时程序里用到的各条指令执行时间都是多少,然后计算总延时时间。