51单片机汇编 数码管动态显示问题
程序如下 我想将中间部分 用一组有规律的语句表示出来 哪个高手会呢
SMG_1 EQU P1.0 ;P1为位选
SMG_2 EQU P1.1
SMG_3 EQU P1.2
SMG_4 EQU P1.3
ORG 0100H
JMP MAIN
ORG 0200H
MAIN:
MOV DPTR,#TMP
CLR A ;千位显示0
CLR SMG_1
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
CPL SMG_1
INC DPTR
CLR A ;百位显示1
CLR SMG_2
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
CPL SMG_2
INC DPTR
CLR A ;十位显示2
CLR SMG_3
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
CPL SMG_3
INC DPTR
CLR A ; 个位显示3
CLR SMG_4
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
CPL SMG_4
LJMP MAIN
DELAY:
MOV R5,#25
M1: MOV R6,#30
DJNZ R6,$
DJNZ R5,M1
RET
TMP:
DB 0C0H,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H
END
SMG_1 EQU P1.0 ;P1为位选
SMG_2 EQU P1.1
SMG_3 EQU P1.2
SMG_4 EQU P1.3
ORG 0100H
JMP MAIN
ORG 0200H
MAIN:
call disp ;调用子程高行序
LJMP MAIN
DELAY:
MOV R5,#25
M1: MOV R6,#30
DJNZ R6,$
DJNZ R5,M1
RET
TMP:
DB 0C0H,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H
disp: ;原来中间的部分,现在,是一个子程序
MOV DPTR,#TMP
CLR A ;千位羡伍显示0
CLR SMG_1
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
CPL SMG_1
INC DPTR
CLR A ;百位显示1
CLR SMG_2
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
CPL SMG_2
INC DPTR
CLR A ;十戚派哗位显示2
CLR SMG_3
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
CPL SMG_3
INC DPTR
CLR A ; 个位显示3
CLR SMG_4
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
CPL SMG_4
ret ;后面,要加上这句
END
用c写吧,很方便的。而且也大众化,遇到问题好解决。汇编看着有点头晕。