zoukankan      html  css  js  c++  java
  • 基于51单片机的简单交通灯程序

    这是一个比较完整的程序。最近实习要做交通灯,

    写了个程序。比较简单,不过初学者可以参考,呵呵

    ;*************************************
    ;file name:  traffic_light.asm
    ;
    ;FOUCTION : 实现交通灯的交替控制及特殊情况(如急救车等)通过时实现绿灯,通过外中断实现
    ;
    ;WRITER   :     
    ;Finish Time: 2010.6.8
    ;*************************************
           North_South_Red    BIT  P1.0
           North_South_Yellow BIT  P1.1
           North_South_Green BIT  P1.2
           East_West_Red  BIT  P1.3
           East_West_Yellow BIT  P1.4
           East_West_Green  BIT  P1.5


           Scd   EQU  30H ;秒

           ORG  0000H
           JMP  START
            ORG  0003H
            JMP  INIT0
            ORG  000BH
             JMP  TIME0


    ;*************************************
    ;NAME:  交通灯交替工作控制程序
    ;
    ;FOUCTION: 红绿黄交替点亮: 红灯亮33秒钟后绿灯亮27秒,然后闪烁3秒,最后黄灯点亮三秒 ,循环
    ;
    ;WRITER  :      
    ;TIME    : 2010.6.8
    ;*************************************
    TIME0:
            MOV    TH0,#30H
            MOV    TL0,#0B0H
            INC    31H
            MOV    A,31H
    N:     CJNE   A,#20,EXIT         ;判断是否到一秒
             MOV    31H,#0

            INC    Scd
             MOV    A,Scd
             CJNE   A,#27,NEXT1  ;判断绿灯是否到27s
              SETB   F0
              JMP    EXIT

              NEXT1: MOV    A,Scd
              CJNE   A,#30,NEXT2  ;判断绿灯是否亮30s
              CLR    F0
              MOV    P1,#0EEH
             JMP    EXIT
    NEXT2:
            MOV    A,Scd
            CJNE   A,#33,NEXT3
             MOV    P1,#0F3H   ;初始化
    NEXT3:
            MOV    A,Scd
            CJNE   A,#60,NEXT4
            SETB   00H
            JMP    EXIT
    NEXT4: MOV    A,Scd
            CJNE   A,#63,NEXT5
            CLR    00H
            MOV    P1,#0F5H
            JMP    EXIT
    NEXT5:  MOV    A,Scd
            CJNE   A,#66,EXIT
            MOV    P1,#0DEH
            MOV    Scd,#0
    EXIT: RETI

    ;*************************************
    ;NAME:  外中断0
    ;
    ;FOUCTION: 东西方向出现特殊情况      ?
    ;  南北红灯亮,东西绿灯亮,延时10s
    ;WRITER  :      
    ;TIME    : 2010.6.8
    ;*************************************
    INIT0:
            PUSH    PSW
            PUSH    ACC
                  
            CLR EA
            MOV R2,P1 ;保存数据
            MOV     P1,#0F6H
            CALL DELLAY10S
            MOV P1,R2 ;恢复
            SETB    EA
           
            POP     ACC
            POP     PSW
     RETI

    ;*******************主程序初始化部分**************
    START:
            MOV   Scd,  #00H
            MOV   31H,  #00H
            MOV   P1,   #0FFH
            CLR   00H
            CLR   F0
            MOV   TMOD, #01H  ;设定定时器1
            MOV   IE,   #83H  ;设定中断使能  定时器中断0、外部中断0和1
            MOV   SP,   #60H
            MOV   TH0,  #30H
            MOV   TL0,  #0B0H
            SETB  TR0

    LOOP:
            JNB    F0,N0
            CPL    East_West_Green          ;绿灯闪三秒
            CALL   DELAY500MS
            JMP    N1
    N0:
             JNB    00H,N1
             CPL    North_South_Green          ;绿灯闪三秒
             CALL   DELAY500MS
    N1:
             JMP   LOOP
    ;************************************
    ;Name  :  DELAY
    ;
    ;Fouction:  delay 10s
    ;
    ;Time  :  2010.06.09
    ;Writer  :  
    ;*************************************
    DELLAY10S:

            MOV R4,#0BFH
    D1:
         MOV R6,#0BDH
    D0:
         MOV R5,#89H
         DJNZ R5,$
         DJNZ R6,D0
         DJNZ R4,D1
         NOP
         RET
    ;************************************
    ;Name  :  DELAY
    ;
    ;Fouction:  delay 10s
    ;
    ;Time  :  2010.06.17
    ;Writer  :  
    ;*************************************      
    DELAY500MS:   ;Delay 0.5s
        MOV 57H,#17H
    DL1:
        MOV 56H,#98H
    DL0:
        MOV 55H,#46H
        DJNZ 55H,$
        DJNZ 56H,DL0
        DJNZ 57H,DL1
        RET
     END

  • 相关阅读:
    【spring-boot】spring-boot 事物管理——之注解@Transactional
    【spring-boot】Spring-boot学习-helloWorld
    【Maven】failOnMissingWebXml
    【java基础领域】高内聚、低耦合理解
    Pascal's Triangle
    Remove Nth Node From End of List
    Valid Palindrome
    Longest Common Prefix
    Roman to Integer
    Palindrome Number
  • 原文地址:https://www.cnblogs.com/fensnote/p/13436522.html
Copyright © 2011-2022 走看看