程序比较长,估计还会用更好的办法重新写。
编写心得是:单片机编程,不一定要背指令,用时可以查,也不必去默写子程序,用时还是可以查,但是,很关键的就是,你的程序,你自己要清楚整个的执行过程,也就是单片机的执行流程。而在实际的应用中,要注意驱动电路的设计,特别是单片机上电复位输出高电平可能造成的影响。
程序如下:如果网页显示格式错乱可从http://www.51hei.com/f/jtda.rar处下载.
ORG 0000H
START:
MOV R2,#30
SU0: MOV P0,#00H
MOV P1,#00H
MOV P2,#00H
MOV P3,#00111111B
MOV A,R2
MOV R4,A
MOV A,R4
MOV R0,A
MOV B,#5
DIV AB
MOV B,#3
MUL AB
MOV R1,A
SETB P0.4
SETB P0.7
SETB P2.2
SETB P2.5
AJMP KEY
SU1A: DEC R0
DEC R1
SUL5: CJNE R1,#5,SUL6
SETB P2.7
SUL6: CJNE R1,#4,SUL7
SETB P2.7
SUL7: CJNE R1,#3,SUL1
SETB P2.7
SUL1: CJNE R1,#2,SUL2
SETB P2.7
SUL2: CJNE R1,#1,SUL3
SETB P2.7
SUL3: CJNE R1,#0,SUL4
MOV A,R0
MOV R1,A
CLR P2.5
CLR P0.7
SETB P0.5
SETB P2.4
SUL4: CJNE R0,#0,KEY
AJMP SU0B
KEY:
JB P3.5,KEY1
LCALL DELAY
MOV R2,#45
KEY1: JB P3.2,KEY2
LCALL DELAY
MOV R2,#60
KEY2: JB P3.3,KEY3
LCALL DELAY
MOV A,R2
ADD A,#5
MOV R2,A
CJNE R2,#95,DD
MOV R2,#95
KEY3: JB P3.4,DD
LCALL DELAY
MOV A,R2
SUBB A,#5
MOV R2,A
CJNE R2,#0,DD
MOV R2,#0
DD: MOV R3,#50 ;数码1
DD1:
MOV P1,#00H
MOV A,R0
MOV B,#10
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
SETB P0.0
LCALL DELAY1
CLR P0.0
MOV A,B
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
SETB P0.1
LCALL DELAY1
CLR P0.1 ;数码2
MOV A,R1
MOV B,#10
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
SETB P0.2
LCALL DELAY1
CLR P0.2
MOV A,B
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
SETB P0.3
LCALL DELAY1
CLR P0.3 ;数码3
MOV A,R2
MOV B,#10
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
SETB P3.6
LCALL DELAY1
CLR P3.6
MOV A,B
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
SETB P3.7
LCALL DELAY1
CLR P3.7
DEC R3
CJNE R3,#25,SUL11
CLR P2.7[page]
SUL11:
CJNE R3,#0,DD1
AJMP SU1A
SU0B: MOV P2,#00H
CLR P0.4
MOV A,R4
MOV R1,A
MOV B,#5
DIV AB
MOV B,#3
MUL AB
MOV R0,A
SETB P0.6
SETB P2.1
SETB P2.6
AJMP LKEY
SU1B: DEC R0
DEC R1
SUL44: CJNE R0,#5,SUL45
SETB P2.3
SUL45: CJNE R0,#4,SUL46
SETB P2.3
SUL46: CJNE R0,#3,SUL40
SETB P2.3
SUL40: CJNE R0,#2,SUL41
SETB P2.3
SUL41: CJNE R0,#1,SUL42
SETB P2.3
SUL42: CJNE R0,#0,SUL43
CLR P0.6
CLR P2.1
SETB P0.4
SETB P2.0
MOV A,R1
MOV R0,A
SUL43: CJNE R1,#0,LKEY
AJMP SU0
LKEY: ;CLR P2.3
JB P3.5,LKEY1
LCALL DELAY
MOV R2,#45
LKEY1: JB P3.2,LKEY2
LCALL DELAY
MOV R2,#60
LKEY2: JB P3.3,LKEY3
LCALL DELAY
MOV A,R2
ADD A,#5
MOV R2,A
CJNE R2,#95,LDD
MOV R2,#95
LKEY3: JB P3.4,LDD
LCALL DELAY
MOV A,R2
SUBB A,#5
MOV R2,A
CJNE R2,#0,LDD
MOV R2,#0
AJMP LDD
LDD: MOV R3,#50 ;数码1
LDD1: MOV P1,#00H
MOV A,R0
MOV B,#10
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
SETB P0.0
LCALL DELAY1
CLR P0.0
MOV A,B
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
SETB P0.1
LCALL DELAY1
CLR P0.1 ;数码2
MOV A,R1
MOV B,#10
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
SETB P0.2
LCALL DELAY1
CLR P0.2
MOV A,B
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
SETB P0.3
LCALL DELAY1
CLR P0.3 ;数码3
MOV A,R2
MOV B,#10
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
SETB P3.6
LCALL DELAY1
CLR P3.6
MOV A,B
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
SETB P3.7
LCALL DELAY1
CLR P3.7
DEC R3
CJNE R3,#25,SUL10
CLR P2.3
SUL10:
CJNE R3,#0,LDD1
AJMP SU1B
TAB:
DB 0C0H ;"0"
DB 0F9H ;"1"
DB 0A4H ;"2"
DB 0B0H ;"3"
DB 99H ;"4"
DB 92H ;"5"
DB 82H ;"6"
DB 0F8H ;"7"
DB 80H ;"8"
DB 90H ;"9"
DELAY:
MOV R5,#100
L3: MOV R6,#100
L1: MOV R7,#6
L2: DJNZ R7,L2
DJNZ R6,L1
DJNZ R5,L3
RET
DELAY1:
MOV R7,#30
D1: MOV R6,#10
D2: DJNZ R6,D2
DJNZ R7,D1
RET
END
上一篇:单片机32位LED花样流水灯程序+原理图
下一篇:三通道12位模数转换MAX1241串口传输单片机C程序
推荐阅读最新更新时间:2024-03-16 14:04