ORG 00H
JMP START
START:MOV DPTR,#TABLE ;取地址
CLR A ;清零
MOV P2,A ;清零
MOV P3,A ;清零
MOVC A,@A+DPTR ;取数值
LOOP:
MOV P1,#11111110B;P1口左移一位
MOV P0,# 0FCH ;输出0
CALL DELAY ;延迟
MOV R0,#20 ;循环20次
LOOP1:MOV P1,#11111110B;P1口左移一位
MOV P0,#60H ;1
CALL delay1 ;延迟
MOV P1,#11111101B;P1口左移一位
MOV P0,#0FCH ;0
CALL delay1 ;延迟
DJNZ R0,LOOP1 ;跳转
MOV R0,#20 ;循环20次
LOOP2:MOV P1,#11111110B;P1口左移一位
MOV P0,#0DAH ;2
CALL delay1 ;延迟
MOV P1,#11111101B;P1口左移一位
MOV P0,#60H ;1
CALL delay1 ;延迟
MOV P1,#11111011B;P1口左移一位
MOV P0,#0FCH ;0
CALL DELAY1 ;延迟
DJNZ R0,LOOP2 ;跳转
MOV R0,#20 ;循环20次
LOOP3:MOV P1,#11110111B;P1口左移一位
MOV P0,# 0FCH ;0
CALL delay1 ;延迟
MOV P1,#11111011B;P1口左移一位
MOV P0,#60H ;1
CALL delay1 ;延迟
MOV P1,#11111101B;P1口左移一位
MOV P0,#0DAH ;2
CALL delay1 ;延迟
MOV P1,#11111110B;P1口左移一位
MOV P0,#0F2H ;3
CALL DELAY1 ;延迟
DJNZ R0,LOOP3 ;跳转
MOV R0,#20 ;循环20次
LOOP4:MOV P1,#11110111B;P1口左移一位
MOV P0,# 60H ;1
CALL delay1 ;延迟
MOV P1,#11111011B;P1口左移一位
MOV P0,#0DAH ;2
CALL delay1 ;延迟
MOV P1,#11111101B;P1口左移一位
MOV P0,#0F2H ;3
CALL delay1 ;延迟
MOV P1,#11111110B;P1口左移一位
MOV P0,#66H ;4
CALL DELAY1 ;延迟
DJNZ R0,LOOP4 ;跳转
MOV R0,#20 ;循环20次
LOOP5:MOV P1,#11110111B;P1口左移一位
MOV P0,# 0DAH ;2
CALL delay1 ;延迟
MOV P1,#11111011B;P1口左移一位
MOV P0,#0F2H ;3
CALL delay1 ;延迟
MOV P1,#11111101B;P1口左移一位
MOV P0,#66H ;4
CALL delay1 ;延迟
MOV P1,#11111110B;P1口左移一位
MOV P0,#0B6H ;5
CALL DELAY1 ;延迟
DJNZ R0,LOOP5 ;跳转
MOV R0,#20 ;循环20次
LOOP6:MOV P1,#11110111B;P1口左移一位
MOV P0,#0F2H ;3
CALL delay1 ;延迟
MOV P1,#11111011B;P1口左移一位
MOV P0,#66H ;4
CALL delay1 ;延迟
MOV P1,#11111101B;P1口左移一位
MOV P0,#0B6H ;5
CALL delay1 ;延迟
MOV P1,#11111110B;P1口左移一位
MOV P0,#0BEH ;6
CALL DELAY1 ;延迟
DJNZ R0,LOOP6 ;跳转
MOV R0,#20 ;循环20次
LOOP7:MOV P1,#11110111B;P1口左移一位
MOV P0,#66H ;4
CALL delay1 ;延迟
MOV P1,#11111011B;P1口左移一位
MOV P0,#0B6H ;5
CALL delay1 ;延迟
MOV P1,#11111101B;P1口左移一位
MOV P0,#0BEH ;6
CALL delay1 ;延迟
MOV P1,#11111110B;P1口左移一位
MOV P0,#0E0H ;7
CALL DELAY1 ;延迟
DJNZ R0,LOOP7 ;跳转
MOV R0,#20 ;循环20次
LOOP8:MOV P1,#11110111B;P1口左移一位
MOV P0,#0B6H ;5
CALL delay1 ;延迟
MOV P1,#11111011B;P1口左移一位
MOV P0,#0BEH ;6
CALL delay1 ;延迟
MOV P1,#11111101B;P1口左移一位
MOV P0,#0E0H ;7
CALL delay1 ;延迟
MOV P1,#11111110B;P1口左移一位
MOV P0,#0FEH ;8
CALL DELAY1 ;延迟
DJNZ R0,LOOP8 ;跳转
MOV R0,#20 ;循环20次
LOOP9:MOV P1,#11110111B;P1口左移一位
MOV P0,#0BEH ;6
CALL delay1 ;延迟
MOV P1,#11111011B;P1口左移一位
MOV P0,#0E0H ;7
CALL delay1 ;延迟
MOV P1,#11111101B;P1口左移一位
MOV P0,#0FEH ;8
CALL delay1 ;延迟
MOV P1,#11111110B;P1口左移一位
MOV P0,#0F6H ;9
CALL DELAY1 ;延迟
DJNZ R0,LOOP9 ;跳转
MOV R0,#20 ;循环20次
LOOP10:MOV P1,#11110111B;P1口左移一位
MOV P0,#0E0H ;7
CALL delay1 ;延迟
MOV P1,#11111011B ;P1口左移一位
MOV P0,#0FEH ;8
CALL delay1 ;延迟
MOV P1,#11111101B;P1口左移一位
MOV P0,#0F6H ;9
CALL delay1 ;延迟
DJNZ R0,LOOP10
MOV R0,#20 ;循环20次
LOOP11:MOV P1,#11110111B;P1口左移一位
MOV P0,#0FEH ;8
CALL delay1 ;延迟
MOV P1,#11111011B;P1口左移一位
MOV P0,#0F6H ;9
CALL delay1 ;延迟
DJNZ R0,LOOP11 ;
MOV R0,#20 ;循环20次
LOOP12:MOV P1,#11110111B;P1口左移一位
MOV P0,#0F6H ;9
CALL delay1 ;延迟
DJNZ R0,LOOP12
INC DPTR ;指针加1
CLR A ;清零
MOVC A,@A+DPTR ;取数值
CJNE A,#00H,LOOPP ;判断是否为最后一个
JMP START ;重新开始循环
LOOPP:LJMP LOOP ;跳转返回
;长延迟
DELAY: MOV R5,#20
D2: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,D2
RET
;短延时
delay1:MOV R6,#5
D3: MOV R5,#248
DJNZ R5,$
DJNZ R6,D3
ret
TABLE:
DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H
DB 00 ;结束标志
END
因篇幅问题不能全部显示,请点此查看更多更全内容