用51单片机汇编语言,数码管静态轮流显示1~F
请问这个程序有什么问题?数码管显示代码没问题,我用的数码管是这么编码的ORG0000HTT:MOVR4,#0FH;循环16次MOVA,#0HKK:MOVDPTR,#TAB...
请问这个程序有什么问题?数码管显示代码没问题,我用的数码管是这么编码的
ORG 0000H
TT: MOV R4,#0FH ;循环16次
MOV A,#0H
KK: MOV DPTR,#TABLE ;存入表的起始地址
MOVC A,@A+DPTR ;按地址取代码并存入A
MOV P0,A ;将代码送P0转变为数字显示
INC A
LCALL DELAY
DJNZ R4,KK
AJMP TT
TABLE: DB 0FCH,60H,0DAH,0F2H ;代码表
DB 66H,0B6H,0BEH,0E0H
DB 0FEH,0F6H,0AAH,3EH
DB 9CH,7AH,9EH,8EH
DELAY: MOV R1,#25 ;延时
L1: MOV R2,#50
L2: MOV R3,#250
L3: DJNZ R3,L3
DJNZ R2,L2
DJNZ R1,L1
RET
END 展开
ORG 0000H
TT: MOV R4,#0FH ;循环16次
MOV A,#0H
KK: MOV DPTR,#TABLE ;存入表的起始地址
MOVC A,@A+DPTR ;按地址取代码并存入A
MOV P0,A ;将代码送P0转变为数字显示
INC A
LCALL DELAY
DJNZ R4,KK
AJMP TT
TABLE: DB 0FCH,60H,0DAH,0F2H ;代码表
DB 66H,0B6H,0BEH,0E0H
DB 0FEH,0F6H,0AAH,3EH
DB 9CH,7AH,9EH,8EH
DELAY: MOV R1,#25 ;延时
L1: MOV R2,#50
L2: MOV R3,#250
L3: DJNZ R3,L3
DJNZ R2,L2
DJNZ R1,L1
RET
END 展开
3个回答
展开全部
错误给你找到了,由于在查显示编码表时 要不断地使用累加器A, 累加器A不能用来保存要轮流要显示的数据,可以改用R4.
ORG 0000H
TT: MOV R4,#0 ;循环16次
KK: MOV A,R4
MOV DPTR,#TABLE ;存入表的起始地址
MOVC A,@A+DPTR ;按地址取代码并存入A
MOV P0,A ;将代码送P0转变为数字显示
INC R4
LCALL DELAY
CJNE R4,#16,KK
AJMP TT
TABLE: DB 0FCH,60H,0DAH,0F2H ;代码表
DB 66H,0B6H,0BEH,0E0H
DB 0FEH,0F6H,0AAH,3EH
DB 9CH,7AH,9EH,8EH
DELAY: MOV R1,#25 ;延时
L1: MOV R2,#50
L2: MOV R3,#250
L3: DJNZ R3,L3
DJNZ R2,L2
DJNZ R1,L1
RET
ORG 0000H
TT: MOV R4,#0 ;循环16次
KK: MOV A,R4
MOV DPTR,#TABLE ;存入表的起始地址
MOVC A,@A+DPTR ;按地址取代码并存入A
MOV P0,A ;将代码送P0转变为数字显示
INC R4
LCALL DELAY
CJNE R4,#16,KK
AJMP TT
TABLE: DB 0FCH,60H,0DAH,0F2H ;代码表
DB 66H,0B6H,0BEH,0E0H
DB 0FEH,0F6H,0AAH,3EH
DB 9CH,7AH,9EH,8EH
DELAY: MOV R1,#25 ;延时
L1: MOV R2,#50
L2: MOV R3,#250
L3: DJNZ R3,L3
DJNZ R2,L2
DJNZ R1,L1
RET
展开全部
改成下面这样就可以了
ORG 0000H
TT: MOV R4,#16 ;循环16次
MOV DPTR,#TABLE ;存入表的起始地址
KK: MOV A,#0H
MOVC A,@A+DPTR ;按地址取代码并存入A
MOV P0,A ;将代码送P0转变为数字显示
INC DPTR
LCALL DELAY
DJNZ R4,KK
AJMP TT
TABLE: DB 0FCH,60H,0DAH,0F2H ;代码表
DB 66H,0B6H,0BEH,0E0H
DB 0FEH,0F6H,0AAH,3EH
DB 9CH,7AH,9EH,8EH
DELAY: MOV R1,#25 ;延时
L1: MOV R2,#50
L2: MOV R3,#250
L3: DJNZ R3,L3
DJNZ R2,L2
DJNZ R1,L1
RET
END
ORG 0000H
TT: MOV R4,#16 ;循环16次
MOV DPTR,#TABLE ;存入表的起始地址
KK: MOV A,#0H
MOVC A,@A+DPTR ;按地址取代码并存入A
MOV P0,A ;将代码送P0转变为数字显示
INC DPTR
LCALL DELAY
DJNZ R4,KK
AJMP TT
TABLE: DB 0FCH,60H,0DAH,0F2H ;代码表
DB 66H,0B6H,0BEH,0E0H
DB 0FEH,0F6H,0AAH,3EH
DB 9CH,7AH,9EH,8EH
DELAY: MOV R1,#25 ;延时
L1: MOV R2,#50
L2: MOV R3,#250
L3: DJNZ R3,L3
DJNZ R2,L2
DJNZ R1,L1
RET
END
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编写相应程序,对应数码管顺序,点亮时间等效果要求,最后执行程序段循环命令即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询