找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2552|回复: 1
打印 上一主题 下一主题
收起左侧

基于51单片机的交通灯程序设计(汇编语言)

[复制链接]
跳转到指定楼层
楼主
原理图如下:

代码如下:
采用汇编语言
ORG 0000H;伪指令、程序开始、中断入口地址
LJMP MAIN
ORG 0003H
LJMP A1
ORG 000BH
LJMP A2
ORG 0013H
LJMP A3
ORG 1000H
;主程序
MAIN:MOV TMOD,#01H;设工作方式
         MOV TL0,#0F0H;设初值,单片机晶振12M,定时10ms        
         MOV TH0,#0D8H
         SETB EA;开放总中断        
         SETB ET0;开放T0中断         
         SETB TR0;启动T0定时        
          SETB EX0;开放外中断0        
         SETB EX1;开放外中断1        
          SETB IT0;设外中断0为边沿触发        
         CLR IT1;设外中断1为低电平有效        
         SETB PT0
CYCLE: MOV R0,#60;南北方向绿灯显示时间
       MOV R1,#65;东西方向红灯显示时间
       MOV R2,#25;为延时1秒而用
;东西红灯南北绿灯
LOOP1:SETB P3.4
          MOV P1,#01H        
          SETB P1.7;点亮红灯        
          SETB P1.4;点亮绿灯        
          LCALL DISPLAY;调用显示程序        
          DJNZ R2,LOOP1
          MOV R2,#25
          DEC R1        
          DJNZ R0,LOOP1        
          MOV R0,#3;南北方向黄灯显示时间
;东西红灯南北黄灯
LOOP2:MOV P1,#01H
          SETB P1.7;点亮红灯        
          SETB P1.3;点亮黄灯
LJ: LCALL DISPLAY;调用显示程序
         CPL P1.3        
         DJNZ R2,LJ        
         DEC R1        
         MOV R2,#25        
          DJNZ R0,LOOP2        
         MOV R0,#40;南北方向红灯显示时间
;东西红灯南北红灯
LOOP3:MOV P1, #01H
          SETB P1.7;点亮红灯
          SETB P1.2;点亮红灯
          LCALL DISPLAY;调用显示程序
          DJNZ R2,LOOP3
          MOV R2,#25
          DEC R0
          DJNZ R1,LOOP3        
            MOV R1,#35;东西方向绿灯显示时间
;东西绿灯南北红灯  
LOOP4:MOV P1,#01H
          SETB P1.5;点亮绿灯        
          SETB P1.2;点亮红灯         
          LCALL DISPLAY ;调用显示程序        
          DJNZ R2,LOOP4         
          MOV R2,#25        
          DEC R0        
          DJNZ R1,LOOP4        
          MOV R1,#3;东西方向黄灯显示时间
;东西黄灯南北红灯
LOOP5:MOV P1,#01H
          SETB P1.6;点亮黄灯         
          SETB P1.2;点亮红灯
LJ1:LCALL DISPLAY;调用显示程序
         CPL P1.6        
         DJNZ R2,LJ1        
         MOV R2,#25        
         DEC R0        
         DJNZ R1,LOOP5        
         LJMP CYCLE
;键盘中断程序
A1:LCALL DISPLAY
         JB P3.6,Q2        
         INC R1        
         INC R0        
          CJNE R1,#99,JIAO2        
          MOV R1,#00H
JIAO2:CJNE R0,#99,JIAO3
          MOV R0,#00H
JIAO3:LCALL DISPLAY        
          JNB P1.0, Z2
Q2: JB P3.7,WAIT1        
        DEC R1        
        DEC R0        
        CJNE R1,#00H, JIAO        
        MOV R1,#99
JIAO: CJNE R0,#00H, JIAO1
      MOV R0, #99
JIAO1:LCALL DISPLAY        
WAIT1:JNB P1.0, Z2         
WAIT: LJMP A1
Z2:RETI
;时间中断程序
A2:MOV TL0,#0F0H;重新赋值
     MOV TH0,#0D8H         
         CLR P3.4        
         RETI
;应急通道中断程序        
A3:MOV P1,#85H
         MOV P0,#30H        
         MOV P2,#35H        
         JNB P3.3,A3        
          RETI
;数显显示
DISPLAY:MOV A,R0;东西方向时间的显示
            MOV B,#10        
            DIV AB;把要显示的数的十位存放在A中,个位存放在B中
            ADD A,#10H;位选通十位
            MOV P0,A;显示十位数字
TI0:JNB P3.4,TT
    SJMP TI0
TT: SETB P3.4
    MOV A,B
        ADD A,#20H;位选通个位        
    MOV P0,A;显示个位数字
TI1:JNB P3.4, TT1
    SJMP TI1
TT1:SETB P3.4;南北方向的显示         
        MOV A,R1;南北方向时间的显示        
        MOV B,#10        
        DIV AB        
        ADD A,#10H;位选通十位        
        MOV P2,A;显示十位数字
TI2:JNB P3.4, TT2
    SJMP TI2  
TT2:SETB P3.4        
        MOV A,B        
        ADD A,#20H;位选通个位        
        MOV P2,A;显示个位数字
TI3:JNB P3.4, TT3
    SJMP TI3
TT3:SETB P3.4
RET
END





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:526721 发表于 2020-12-2 20:39 来自手机 | 只看该作者
楼主可以吧仿真文件分享出来吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表