十字路交通灯控制系统设计-交通灯控制电路 第7页

十字路交通灯控制系统设计-交通灯控制电路 第7页
    图9  程序流程图
7.5.2 程序源代码
     
       ORG 0000H         ;主程序的入口地址
       LJMP MAIN         ;跳转到主程序的开始处
       ORG 0003H         ;外部中断0的中断程序入口地址         
       ORG 000BH         ;定时器0的中断程序入口地址
       LJMP T0_INT        ;跳转到中断服务程序处
       ORG 0013H         ;外部中断1的中断程序入口地址     
MAIN : MOV SP,#50H
       MOV IE,#8EH       ;CPU开中断,允许T0中断,T1中断和外部中断1中断
       MOV TMOD,#51H     ;设置T1为计数方式,T0为定时方式,且都工作于模式1
       MOV TH1,#00H      ;T1计数器清零
       MOV TL1,#00H
       SETB TR1          ;启动T1计时器
       SETB EX1          ;允许INT1中断
       SETB IT1          ;选择边沿触发方式
       MOV DPTR ,#0003H
       MOV A, #80H      ;给8255赋初值,8255工作于方式0
       MOVX @DPTR, A
AGAIN: JB P3.1,N0       ;判断是否要设定东西方向红绿灯时间的初值,若P3.1为1 则跳转
       MOV A,P1    
       JB P1.7,RED      ;判断P1.7是否为1,若为1则设定红灯时间,否则设定绿灯时间   
       MOV R0,#00H      ;R0清零
       MOV R0,A         ;存入东西方向绿灯初始时间
       MOV R3,A
       LCALL DISP1
       LCALL DELAY
       AJMP AGAIN
RED:   MOV A,P1
       ANL A,#7FH      ;P1.7置0
       MOV R7,#00H     ;R7清零
       MOV R7,A        ;存入东西方向红灯初始时间
       MOV R3,A
       LCALL DISP1
       LCALL DELAY
       AJMP AGAIN
;-------------------------------------------
www.751com.cn
       MOV DPTR,#0000H  ;置8255A口,东西方向红灯亮,南北方向绿灯亮
       MOV A,#0DDH
       MOVX @DPTR, A
N01:   JB P2.0,B0
N02:   SETB P3.0
       CJNE R3,#00H,N01  ;比较R3中的值是否为0,不为0转到当前指令处执行
;------黄灯闪烁5秒程序------
N1:    SETB P3.0
       MOV R3,#05H
       MOV DPTR,#0000H  ;置8255A口,东西,南北方向黄灯亮
       MOV A,#0D4H
       MOVX @DPTR,A
N11:   MOV R4,#00H
N12:   CJNE R4,#7DH,$    ;黄灯持续亮0.5秒
N13:   MOV DPTR,#0000H   ; 置8255A口,南北方向黄灯灭
       MOV A,#0DDH
       MOVX @DPTR,A
N14:   MOV R4,#00H
       CJNE R4,#7DH,$    ;黄灯持续灭0.5秒
       CJNE R3,#00H,N1   ;闪烁时间达5秒则退出
;------------------------------------------------------------
N2:    MOV R7,#00H
       MOV A,R0   ;东西通行,南北禁止
       MOV R3,A
       MOV DPTR,#0000H ; 置8255A口,东西方向绿灯亮,南北方向红灯亮
       MOV A,#0EBH
       MOVX @DPTR,A
N21:   JB P2.0,T03
      
N22:   CJNE R3,#00H,N21
;------黄灯闪烁5秒程序------
N3:    MOV R3,#05H
       MOV DPTR,#0000H    ;置8255A口,东西,南北方向黄灯亮
       MOV A,#0E2H
       MOVX @DPTR,A
N31:   MOV R4,#00H
       CJNE R4,#7DH,$     ;黄灯持续亮0.5秒
N32:   MOV DPTR,#0000H  ; 置8255A口,南北方向黄灯灭
       MOV A,#0EBH
       MOVX @DPTR,A
N33:   MOV R4,#00H
       CJNE R4,#7DH,$     ;黄灯持续灭0.5秒
       CJNE R3,#00H,N3   ;闪烁时间达5秒则退出
       SJMP N00
;------闯红灯报警程序------
B0:    MOV R2,#03H        ;报警持续时间3秒
B01:   MOV A,R3
       JZ N1              ;若倒计时完毕,不再报警
       CLR P3.0           ;报警
       CJNE R2,#00H,B01   ;判断3秒是否结束
       SJMP  N02
;------1秒延时子程序-------
N7:    RETI
T0_INT:MOV TL0,#9AH       ;给定时器T0送定时10ms的初值
       MOV TH0,#0F1H  
       INC R4
       INC R5
       CJNE R5,#0FAH,T01  ;判断延时是否够一秒,不够则调用显示子程序
       MOV R5,#00H        ;R5清零
       DEC R3             ;倒计时初值减一
       DEC R2             ;报警初值减一
T01:   ACALL DISP         ;调用显示子程序
       RETI               ;中断返回
;------显示子程序------
DISP:  JNB P2.4,T02
DISP1: MOV B,#0AH
       MOV A,R3            ;R3中值二转十显示转换
       DIV AB
       MOV 79H,A
       MOV 7AH,B
DIS:   MOV A,79H           ;显示十位
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV DPTR,#0002H
       MOVX @DPTR,A
       MOV DPTR,#0001H
       MOV A,#0F7H
       MOVX @DPTR,A
       LCALL  DELAY
DS2:   MOV A,7AH           ;显示个位
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV DPTR,#0002H
       MOVX @DPTR,A
       MOV DPTR,#0001H
       MOV A,#0FBH

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有