单片机交通灯实验汇编语言程序
          
            时间:04-21 15:23 阅读:1951次
*温馨提示:点击图片可以放大观看高清大图
                
         
        
		  
               简介: 经过几天的整理,终于将网络上得到交通灯仿真文件,用汇编自己编写了一个程序,实验结果完全符合本人的思路,实验成功。程序比较长,估计还会用更好的办法重新写。
               
                        
          
            编写心得是:单片机编程,不一定要背指令,用时可以查,也不必去默写子程序,用时还是可以查,但是,很关键的就是,你的程序,你自己要清楚整个的执行过程,也就是单片机的执行流程。而在实际的应用中,要注意驱动电路的设计,特别是单片机上电复位输出高电平可能造成的影响。

程序如下:
 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