用的stc89c52RC整段程序如下:
MOV R0,#0
START:MOV A,R0
MOV DPTR,#TAB2
MOVC A,@A+DPTR
MOV P3,A
INC R0
ACALL DELAY
CJNE R0,#00BH,START
MOV R0,#0
SJMP START
DELAY:
MOV R2,#10
L1: MOV R3,#200
L2: MOV R4,#450
L3: DJNZ R4,L3
DJNZ R3,L2
DJNZ R2,L1
ret
单片机编程时延时程序其实就是一些循环指令组成的集合。比如:
DELAY:MOV R2,#248 ;本条指令1T执行1次
DJNZ R2,$ ;本条指令2T执行248次
NOP ;本条指令1T执行1次
RET ;本条指令2T执行1次
所以延时时间为:1+2482+1+2=500T,如果晶振是12M的话,延时500us
时间精确的延时程序要用汇编语言来编写。
计算延迟时间要查询每一条程序的执行周期数,然后加起来就是了。
在12m晶振的系统中,每个机器周期是1微秒
借用一下:
举例来说明吧:
delay:
mov r0,#10 ;1(周期)
delay1:
mov r1,#100 ;1
djnz r1,$ ;2
djnz r0,delay1 ;2
ret ;2
周期数=1+((1+(2100)+2)10)+2=2033
延迟时间=2033周期1微秒=2033微秒
从到这个程序开始到返回到调用的那个程序用了2033微秒
以上就是关于延时程序 汇编全部的内容,包括:延时程序 汇编、单片机汇编程序怎么计算延时、51单片机使用汇编语言循环延迟时间怎么算等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)