单片机交通灯实验汇编语言程序
时间:11-30
来源:互联网
点击:
经过几天的整理,终于将网络上得到交通灯仿真文件,用汇编自己编写了一个程序,实验结果完全符合本人的思路,实验成功。
程序比较长,估计还会用更好的办法重新写。
编写心得是:单片机编程,不一定要背指令,用时可以查,也不必去默写子程序,用时还是可以查,但是,很关键的就是,你的程序,你自己要清楚整个的执行过程,也就是单片机的执行流程。而在实际的应用中,要注意驱动电路的设计,特别是单片机上电复位输出高电平可能造成的影响。
程序如下:如果网页显示格式错乱可从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
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:
DB0C0H;"0"
DB0F9H;"1"
DB0A4H;"2"
DB0B0H;"3"
DB 99H;"4"
DB 92H;"5"
DB 82H;"6"
DB0F8H;"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
程序比较长,估计还会用更好的办法重新写。
编写心得是:单片机编程,不一定要背指令,用时可以查,也不必去默写子程序,用时还是可以查,但是,很关键的就是,你的程序,你自己要清楚整个的执行过程,也就是单片机的执行流程。而在实际的应用中,要注意驱动电路的设计,特别是单片机上电复位输出高电平可能造成的影响。
程序如下:如果网页显示格式错乱可从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
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:
DB0C0H;"0"
DB0F9H;"1"
DB0A4H;"2"
DB0B0H;"3"
DB 99H;"4"
DB 92H;"5"
DB 82H;"6"
DB0F8H;"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
单片机交通灯汇编语 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)