用汇编语言编写一个定时程序,并显示在数码管上,用proteus模拟,结果数码管显示地顺序有问题 20
汇编语言编的一个定时程序,程序设定的秒的个位数应该是最上面的那个数码管,结果仿真后变成了最下面的数码管显示秒的个位数,求大神指教。代码如下:DISP:MOVA,30HMO...
汇编语言编的一个定时程序,程序设定的秒的个位数应该是最上面的那个数码管,结果仿真后变成了最下面的数码管显示秒的个位数,求大神指教。代码如下:
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,21H ;秒十位
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,22H ;分个位
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,23H ;分十位
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,24H ;时个位
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,25H ;时十位
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 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
END 展开
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,21H ;秒十位
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,22H ;分个位
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,23H ;分十位
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,24H ;时个位
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,25H ;时十位
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 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
END 展开
2个回答
展开全部
你拷贝丢了秒个位显示,只要把显示顺序颠倒一下就可以了。
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
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
追问
没有用的,程序总是从时的十位开始加一,而不是从秒的个位开始
追答
汇编语言编的一个定时程序,程序设定的秒的个位数应该是最上面的那个数码管,结果仿真后变成了最下面的数码管显示秒的个位数,求大神指教。
你先是要解决这个问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
仅仅是想要改变数字的显示位置?
程序,不用变。
你把数码管引脚上的标号:1、2、3、456,重新安排一下,即可。
--------------------
但是,程序,还是有瑕疵的。
比如这句:
MOV P0, 00H
你能说一下,这句是干什么的吗?
应该是这样吧:
MOV P0, #00H
程序,不用变。
你把数码管引脚上的标号:1、2、3、456,重新安排一下,即可。
--------------------
但是,程序,还是有瑕疵的。
比如这句:
MOV P0, 00H
你能说一下,这句是干什么的吗?
应该是这样吧:
MOV P0, #00H
更多追问追答
追问
MOV P0,00H应该是MOV P0, #00H,在proteus中为什么会出现这种情况呢,我明明引脚标号都是对的呀
追答
你的问题,根源,确实,是在程序里面。
但是,如果一时难以查找,那么,改变引脚编号,就是最简单的方法。
-------------------------
你的程序,关键是延时程序,放错了地方。
延时,其用意,就是让人观察一小段时间。
之前,应该把需要显示的东西,都显示出来,再延时。
……
MOV A,21H ;秒十位
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,22H ;分个位
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
……
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询