用汇编语言编写一个定时程序,并显示在数码管上,用proteus模拟,结果数码管显示地顺序有问题

2025-03-09 20:54:17
推荐回答(2个)
回答1:

你拷贝丢了秒个位显示,只要把显示顺序颠倒一下就可以了。
DISP:
MOV A,30H
MOV B,#10
DIV AB
MOV 20H,B ;余数(秒个位数)
MOV 21H,A ;商(秒十位数)
MOV A,31H
MOV B,#10
DIV AB
MOV 22H,B ;余数(分个位数)
MOV 23H,A ;商(分十位数)
MOV A,32H
MOV B,#10
DIV AB
MOV 24H,B ;余数(时个位数)
MOV 25H,A ;商(时十位数)

MOV A,20H ;秒个位
ACALL SEG7
SETB P2.6
MOV P0,A
CLR P2.6
MOV P0,00H
ACALL DLY
SETB P2.7
SETB P0.5
CLR P2.7

MOV A,21H ;秒十位
ACALL SEG7
SETB P2.6
MOV P0,A
CLR P2.6
MOV P0,00H
ACALL DLY
SETB P2.7
SETB P0.4
CLR P2.7

MOV A,22H ;分个位
ACALL SEG7
SETB P2.6
MOV P0,A
CLR P2.6
MOV P0,00H
ACALL DLY
SETB P2.7
SETB P0.3
CLR P2.7

MOV A,23H ;分十位
ACALL SEG7
SETB P2.6
MOV P0,A
CLR P2.6
MOV P0,00H
ACALL DLY
SETB P2.7
SETB P0.2
CLR P2.7

MOV A,24H ;时个位
ACALL SEG7
SETB P2.6
MOV P0,A
CLR P2.6
MOV P0,00H
ACALL DLY
SETB P2.7
SETB P0.1
CLR P2.7

MOV A,25H ;时十位
ACALL SEG7
SETB P2.6
MOV P0,A
CLR P2.6
MOV P0,00H
ACALL DLY
SETB P2.7
SETB P0.0
CLR P2.7
MOV P0,00H
AJMP DISP

SEG7: INC A
MOVC A,@A+PC
RET

DB 0C0H ;0 共阴
DB 0F9H ;1
DB 0A4H ;2
DB 0B0H ;3
DB 099H ;4
DB 092H ;5
DB 082H ;6
DB 0F8H ;7
DB 080H ;8
DB 090H ;9
END

回答2:

仅仅是想要改变数字的显示位置?

程序,不用变。

你把数码管引脚上的标号:1、2、3、456,重新安排一下,即可。
--------------------
但是,程序,还是有瑕疵的。

比如这句:
MOV P0, 00H

你能说一下,这句是干什么的吗?

应该是这样吧:
MOV P0, #00H