㈠ at89c51单片机怎么用汇编语言写“多个延时程序”
单片机汇编语言中要使一个延时程序可以被不同情况下调用而延时不同的时间,可以通过类似于C语言中传递参数的方式来实现,举例如下:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV P0,#5AH ;P0上的LED灯间隔点亮
MOV R7,#50 ;R7是延时传递参数
LCALL DELAY ;调用延时函数
MOV P0,#0A5H ;P0上LED灯另一半点亮
MOV R7,#100 ;延时时间加长
LCALL DELAY
MOV P0,#00H ;LED等全部点亮
MOV R7,#150 ;延时再次加长
LCALL DELAY
MOV P0,#0FFH ;灯灭
MOV R7,#200 ;延时时间再次加长
LCALL DELAY
SJMP MAIN ;循环
DELAY:
MOV R2,#100
DLY:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DLY
DJNZ R7,DELAY ;R7是调用前赋值的传递参数。
RET
END
㈡ 单片机用汇编写两个数码管显示0到99循环的程序
1、新建项目,做好准备。
㈢ 用单片机汇编一个100ms的延时程序
DELAY:
MOV R3,#100 ;2
DLY0:
MOV R2,#249 ;2*100
DLY1:
DJNZ R2,DLY1 ;249*2*100
MOV R2,#248 ;2*100
DLY2:
DJNZ R2,DLY2 ;248*2*100
DJNZ R3,DLY0 ;2*100
RET ;2
以上假设12M晶振,延时共2+(249*2+2+248*2)*100+2=100004微妙内容=100.004毫秒