通用办法,可以类推:
DELAY1s:MOV R5,#08H ; ∵ 1s=1000000us
MOV R6,#0A2H ; ∴ 1000000/2=500000
MOV R7,#20H ; 500000用16进制表示为: 07A120
; 所以 R5=07H+1=08H
; R6=0A1H+1=0A2H
; R7=20H
loop: DJNZ R7,$ ; 延时时间≈2×[(R5-1)×256+R6-1]×256+R7
DJNZ R6,loop ; 当R5、R6等于0,相当于256参与运算
DJNZ R5,loop ; 当R5、R6等于0,相当于256参与运算
RET
;
MOV AL, 1000 0000B ;控制字
OUT 0D6H, AL ;初始化
MOV AL, 00H ;全零
OUT 0D0H, AL ;开始时全灭
CALL DELAY1
MOV AH, 10
LP0:
MOV AL, 01H ;有一位是高电平
MOV CX, 8
LP1:
OUT 0D0H, AL ;输出到PA
CALL DELAY1 ;延时
SHL AL ;左移一位
LOOP LP1 ;循环8次
MOV AL, 00H
OUT 0D0H, AL ;全灭
CALL DELAY1
DEC AH
CMP AH, 0
JNE LP0 ;不到10遍则循环
HLT ;停止
END
以上就是关于单片机编写一个能延时1秒的子程序全部的内容,包括:单片机编写一个能延时1秒的子程序、一个关于微机原理8255A的题,在线等答案!!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)