单个数码管显示0,1,2,3要求显示0,2时蜂鸣器响显示1,3事不响

2024-11-19 08:54:06
推荐回答(1个)
回答1:

ORG 0000H
LJMP 0100H
MAIN: MOV 60H,#1 ;给显示缓冲区送显示的初值
MOV 61H,#2
MOV 62H,#3
MOV 63H,#4
LY: LCALL DISP ;调用显示子程序
MOV R3,#15; 延时
LK: LCALL YS1MS
DJNZ R3,LK
MOV 64H,60H
MOV 60H,61H
MOV 61H,62H
MOV 62H,63H
MOV 63H,60H
SJMP LY
DISP: MOV R0,#60H ;指针指向显示缓冲区
MOV R7,#4 ;设循环显示的次数 显示4位数据
CLR C
MOV R6,#00000001B ;从p2.0开始显示 即先显示1
LL: MOV DPTR,#TAB ;数据指针指向显示编码表达首地址
MOV A,@R0
MOVC A , @ A+ DPTR ;取显示编码
MOV P0,A ;送P0口显示
MOV A,R6
MOV P2,A ;控制显示位
RLC A ;修改显示位
MOV R6,A
INC R0 ;指向下一个要显示的数据
LCALL YS1MS ;延时显示时间
DJNZ R7,LL ;4位数据没显示完 则转LL继续显示
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H ;显示编码
DB 92H,82H,0F8H,80H,98H

YS1MS: MOV R5,#45 ;延时子程序
YSLL: MOV R4,#200
YYLL: DJNZ R4,YYLL
DJNZ R5,YSLL
RET