专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机交通灯实验汇编语言程序

作者:佚名   来源:本站原创   点击数:  更新时间:2013年11月13日   【字体:

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


程序如下:如果网页显示格式错乱可从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:
    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
 

关闭窗口

相关文章