我是初学单片机的学员只懂汇编语言编的程序是否合理请各位老师指正,使用的学习板是在论坛买的。
ORG 0000H ;晶振6,数码显示8051右移程序
AJMP START
START: MOV SP,#60H
MOV R0,#250
aaa1: MOV R1,#250 ;上电延时
DJNZ R1,$
DJNZ R0,aaa1
KKK: CLR P1.4
MOV R2,#0FFH ;循环次数
KK: MOV A,#7FH ;数码显示8
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11111110B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#3FH ;数码显示0
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11111101B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#6DH ;数码显示5
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11111011B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#06H ;数码显示1
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11110111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
DEC R2
CJNE R2,#0H,KK
MOV R3,#1
DEC R3
CJNE R3,#0H,KK
KK1: MOV A,#7FH ;数码显示8
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11111101B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#3FH ;数码显示0
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11111011B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#6DH ;数码显示5
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11110111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#06H ;数码显示1
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11101111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
DEC R2
CJNE R2,#0H,KK1
MOV R3,#1
DEC R3
CJNE R3,#0H,KK1
KK2: MOV A,#7FH ;数码显示8
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11111011B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#3FH ;数码显示0
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11110111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#6DH ;数码显示5
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11101111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#06H ;数码显示1
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11011111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
DEC R2
CJNE R2,#0H,KK2
MOV R3,#1
DEC R3
CJNE R3,#0H,KK2
KK3: MOV A,#7FH ;数码显示8
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11110111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#3FH ;数码显示0
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11101111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#6DH ;数码显示5
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11011111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#06H ;数码显示1
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#10111111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
DEC R2
CJNE R2,#0H,KK3
MOV R3,#1
DEC R3
CJNE R3,#0H,KK3
KK4: MOV A,#7FH ;数码显示8
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11101111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#3FH ;数码显示0
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#11011111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#6DH ;数码显示5
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#10111111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
MOV A,#06H ;数码显示1
MOV P0,A
SETB P2.6
CLR P2.6
MOV A,#01111111B ;数码显示位置
MOV P0,A
SETB P2.7
CLR P2.7
LCALL DELAY1
DEC R2
CJNE R2,#0H,KK4
MOV R3,#1
DEC R3
CJNE R3,#0H,KK4
MOV P0,#11111111B ;数码显示关闭
SETB P2.7
CLR P2.7
LCALL DELAY
LCALL DELAY
LCALL DELAY
LJMP KKK
DELAY: MOV R0,#0A5H ;100毫秒延时子程序
DL0: MOV R1,#96H
DJNZ R1,$
DJNZ R0, DL0
RET
DELAY1: MOV R0,#31H ;500微秒延时子程序
DL1: MOV R1,#01H
DJNZ R1,$
DJNZ R0,DL1
RET
END
|