3917|3

2

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

高手帮忙看下51单片机的汇编源程序,交通灯控制系统的 [复制链接]

也可以用c编程,呵呵,用的是stc89c52rc单片机,12M晶振,实在调不出来了,急啊,求高手呀

实现功能1.白天和夜间模式(黄灯闪烁)切换 通过p3.3按键 
                2.满足两个工作时序:东西方向红灯亮的时间应等于南北方向黄、
                   绿灯亮的时间之和Tewr=Tnsy+Tnsg;
                   南北方向红灯亮的时间应等于东西方向黄、绿灯亮的时间和 Tnsr=Tewy+Tewg
                   初始设置每个单位时间为3秒,则南北、东西方向的绿、黄、红灯亮的时间分别为15秒、3秒、18秒,一次循环为36秒。
                  其中红灯亮的时间为绿灯、黄灯亮的时间之和。一次总循环的时间为72秒。
                3.可以通过p3.4  p3.5的按键进行时间的加一和减一操作
                4.数码管倒计时和蜂鸣器发声提醒、黄灯闪烁提醒绿灯变为红灯(剩三秒时)

                ;以下程序完成各脚的预定义   p1.0 蜂鸣器 p1.1南北红 p1.2南北黄 p1.3南北绿 p1.4东西红 p1.5东西黄 p1.6 东西绿(东西三颗发光二极管 南北也只有三颗发光二极管) P0.7为发光二极管要求进入夜晚状态时点亮 p0.0为数码管的f p0.1 g p0.2 a p0.3 d p0.4 e p0.5 f p0.6 g  p2.7 数码管个位  P2.6 十位

此帖出自单片机论坛

最新回复

谢谢高手  详情 回复 发表于 2013-12-26 13:47
点赞 关注
 

回复
举报

2

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
这是个参考的汇编程序,不会呢,呜呜呜
                                        FMQ        EQU        P1.0                ;蜂鸣器
                QR        EQU        P1.3                ;前红灯
                QY        EQU        P1.1                ;前黄灯
                QG        EQU        P1.2                ;前绿灯
                HR        EQU        P2.2                ;后红灯
                HY        EQU        P2.0                ;后黄灯
                HG        EQU        P2.1                ;后绿灯       
                ZR        EQU        P1.4                ;左红灯
                ZY        EQU        P1.5                ;左黄灯
                ZG        EQU        P1.6                ;左绿灯               
                YR        EQU        P2.5                ;右红灯
                YY        EQU        P2.4                ;右黄灯               
                YG        EQU        P2.3                ;右绿灯
                SWITCH1        EQU        P2.6                ;               
                SWITCH2        EQU        P2.7                ;
               
                DAT        EQU        60H                ;显存
               
                ORG  0000H
                 LJMP START
                 ORG  0003H
                 LJMP D_X                        ;外部中断0,东西向紧急按键
                 ORG  000BH
                 RETI                                ;
                 ORG  0013H
                 LJMP N_B                        ;外部中断1,南北向紧急按键
                 ORG  001BH
                 RETI
                 ORG  0023H
                 RETI

                 ORG  0040H                        ;定位
START:
               
                MOV        TCON,        #5H                ;外部中断为下降沿触发
                SETB        EX0                        ;
                SETB        EX1                        ;开外部中断
                SETB        EA                        ;开总中断
                ;IO口初始化
                MOV   P0,#0FFH
                MOV   P1,#0FFH                        ;
                MOV   P2,#0FFH                       ;
                MOV   P3,#0FFH                        ;
                MOV        DAT,        #25H                ;
               
               
AUTCLK:
                MOV        P1,        #0FFH                ;
                MOV        P2,        #0FFH                ;  
                MOV        DAT,        #30H                ;写入每一通路的通行时间
                CLR        QG                        ;南北向绿灯亮
                CLR        HG                        ;
                CLR        ZR                        ;东西向红灯亮
                CLR        YR                        ;
                MOV        A,        DAT                ;
                MOV        R2,        #25                ;写入时间值
A1:
                MOV        R1,        #220                ;
A2:
                ACALL        BCD                        ;BCD调整
                ACALL        DISPCLK                        ;显示
                ACALL        DEL1MS                        ;延时
                ACALL        DEL1MS                        ;
                ACALL        DEL1MS                        ;
                DJNZ        R1,        A2                ;
                SETB        FMQ                        ;       
                MOV        A,        DAT                ;完成数字的减1操作
                ADD        A,        #99H                ;
                DA        A                        ;
                MOV        DAT,        A                ;调整好的数字送显存
                DJNZ        R2,        A1                ;
                ;最后5秒黄灯闪
                MOV        P1,        #0FFH                ;
                MOV        P2,        #0FFH                ;关所有灯
                CLR        ZY                        ;黄灯亮
                CLR        YY                        ;
                CLR        QY                        ;
                CLR        HY                        ;
                MOV        R2,        #5                ;
A3:
                MOV        R1,        #220                ;
A4:
                ACALL        BCD                        ;
                ACALL        DISPCLK                        ;
                ACALL        DEL1MS                        ;
                ACALL        DEL1MS                        ;
                ACALL        DEL1MS                        ;
                DJNZ        R1,        A4                ;
                CPL        QY                        ;南北向绿灯亮
                CPL        HY                        ;
                CPL        ZY                        ;东西向红灯亮
                CPL        YY                        ;       
                CPL        FMQ                        ;黄灯时蜂鸣器叫一声
                MOV        A,        DAT                ;
                ADD        A,        #99H                ;
                DA        A                        ;
                MOV        DAT,        A                ;
                DJNZ        R2,        A3                ;
                ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                MOV        P1,        #0FFH                ;
                MOV        P2,        #0FFH                ;
                MOV        DAT,        #20H                ;
                CLR        ZG                        ;东西向绿灯亮
                CLR        YG                        ;
                CLR        QR                        ;南北向红灯亮
                CLR        HR                        ;
                MOV        A,        DAT                ;
                MOV        R2,        #15                ;执行15秒
A5:
                MOV        R1,        #220                ;
A6:
                ACALL        BCD                        ;BCD调整
                ACALL        DISPCLK                        ;显示
                ACALL        DEL1MS                        ;
                ACALL        DEL1MS                        ;
                ACALL        DEL1MS                        ;
                DJNZ        R1,        A6                ;
                SETB        FMQ                        ;       
                MOV        A,        DAT                ;
                ADD        A,        #99H                ;减1操作
                DA        A                        ;
                MOV        DAT,        A                ;
                DJNZ        R2,        A5                ;
                ;最后5秒黄灯闪
                MOV        P1,        #0FFH                ;
                MOV        P2,        #0FFH                ;关所有灯
                CLR        ZY                        ;黄灯亮
                CLR        YY                        ;
                CLR        QY                        ;
                CLR        HY                        ;
                MOV        R2,        #5                ;
A7:
                MOV        R1,        #220                ;
A8:
                ACALL        BCD                        ;
                ACALL        DISPCLK                        ;
                ACALL        DEL1MS                        ;
                ACALL        DEL1MS                        ;
                ACALL        DEL1MS                        ;
                DJNZ        R1,        A8                ;
                CPL        QY                        ;南北向绿灯亮
                CPL        HY                        ;
                CPL        ZY                        ;东西向红灯亮
                CPL        YY                        ;       
                CPL        FMQ                        ;黄灯时蜂鸣器叫一声
                MOV        A,        DAT                ;
                ADD        A,        #99H                ;
                DA        A                        ;
                MOV        DAT,        A                ;
                DJNZ        R2,        A7                ;
                AJMP        AUTCLK                        ;
                NOP                                ;
                NOP                                ;
                NOP                                ;
                LJMP START
;;*********************************
;;显示子程序
;;**********************************
DISPCLK:
        MOV        DPTR,        #TAB        ;定入表头
        ;显示个位
        MOV        A,        50H        ;
        MOVC        A,        @A+DPTR        ;
               MOV        P0,        A        ;
               CLR        SWITCH2                ;
               LCALL        DEL1MS                ;
               SETB        SWITCH2                ;
               ;显示十位
               MOV        A,        51H        ;
               MOVC        A,        @A+DPTR        ;
               MOV        P0,        A        ;
               CLR        SWITCH1                ;
               LCALL        DEL1MS                ;
               SETB        SWITCH1                ;
               RET                        ;
               NOP                        ;
               NOP                        ;
               NOP                        ;
               LJMP  START
;************************************************************
;横向道路紧急中断程序
;************************************************************
D_X:
                CLR        EA                        ;关总中断
                JNB        P3.2,        $                ;
                MOV        A,        DAT                ;保存显示数据
                MOV        20H,        A                ;
                MOV        DAT,        #50H                ;
                MOV        21H,        P1                ;
                MOV        22H,        P2                ;
                MOV        P1,        #0FFH                ;
                MOV        P2,        #0FFH                ;
                CLR        ZG                        ;东西向绿灯亮
                CLR        YG                        ;
                CLR        QR                        ;南北向红灯亮
                CLR        HR                        ;
                MOV        R4,        #50                ;
D1:
                MOV        R3,        #220                ;
D2:
                ACALL        BCD                        ;
                ACALL        DISPCLK                        ;
                ACALL        DEL1MS                        ;
                ACALL        DEL1MS                        ;
                ACALL        DEL1MS                        ;
                DJNZ        R3,        D2                ;       
                MOV        A,        DAT                ;
                ADD        A,        #99H                ;
                DA        A                        ;
                MOV        DAT,        A                ;
                DJNZ        R4,        D1                ;
                MOV        A,        20H                ;恢复显示数据
                MOV        DAT,        A                ;
                MOV        P2,        22H                ;
                MOV        P1,        21H                ;
                CLR        IE0                        ;
                CLR        IE1                        ;
                SETB        EA                        ;开总中断
                RETI                                ;中断返回
               
;************************************************************
;纵向道路紧急中断程序
;************************************************************
N_B:
                CLR        EA                        ;关总中断
                JNB        P3.3,        $                ;
                MOV        A,        DAT                ;保存显示数据
                MOV        20H,        A                ;
                MOV        DAT,        #50H                ;
                MOV        21H,        P1                ;
                MOV        22H,        P2                ;
                MOV        P1,        #0FFH                ;
                MOV        P2,        #0FFH                ;
                CLR        QG                        ;南北向绿灯亮
                CLR        HG                        ;
                CLR        ZR                        ;东西向红灯亮
                CLR        YR                        ;
                MOV        R4,        #50                ;
N1:
                MOV        R3,        #220                ;
N2:
                ACALL        BCD                        ;
                ACALL        DISPCLK                        ;
                ACALL        DEL1MS                        ;
                ACALL        DEL1MS                        ;
                ACALL        DEL1MS                        ;
                DJNZ        R3,        N2                ;       
                MOV        A,        DAT                ;
                ADD        A,        #99H                ;
                DA        A                        ;
                MOV        DAT,        A                ;
                DJNZ        R4,        N1                ;
                MOV        A,        20H                ;恢复显示数据
                MOV        DAT,        A                ;
                MOV        P2,        22H                ;
                MOV        P1,        21H                ;
                CLR        IE0                        ;
                CLR        IE1                        ;
                SETB        EA                        ;开总中断
                RETI                                ;中断返回
               
;********************************************************
BCD:
                ;将显存中的数字分分两个BCD码存于50H和51H单元中,用于显示十位和个位
                MOV A,        DAT                ;
        MOV B,#10H
        DIV AB
        MOV 51H,A                ;写入分十位
        MOV A,B
        MOV 50H,A                ;写入分个位
        RET
        NOP
        NOP
        NOP
        LJMP  START
;数码表
TAB:    DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
        RET
        NOP
        NOP
        NOP
        LJMP  START


;*****************************
;延时子程序
;12M晶振
;*****************************

DEL1MS: MOV   R6,#28
DEL1MS1:MOV   R7,#19
DEL1MS2:DJNZ  R7,DEL1MS2
        DJNZ  R6,DEL1MS1
        RET
        NOP
        NOP
        NOP
        LJMP   START

DEL5MS: MOV   R7,#90
DEL5MS1:MOV   R6,#54
DEL5MS2:
        DJNZ  R6,DEL5MS2
        DJNZ  R7,DEL5MS1
        RET
        NOP
        NOP
        NOP
        LJMP  START
DEL250MS: MOV   R5,#50
DEL250MS1:LCALL DEL5MS
          DJNZ  R5,DEL250MS1
          RET
          NOP
          NOP
          NOP
          LJMP  START

DEL500MS: MOV   R4,#100
DEL500MS1:LCALL DEL5MS
          DJNZ  R4,DEL500MS1
          RET     ;
          NOP
          NOP
          NOP
          LJMP  START
          END
此帖出自单片机论坛
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
原帖由 huerry 于 2012-5-30 12:18 发表 也可以用c编程,呵呵,用的是stc89c52rc单片机,12M晶振,实在调不出来了,急啊,求高手呀 88331 实现功能1.白天和夜间模式(黄灯闪烁)切换 通过p3.3按键         & ...
给你个c的参考程序

交通灯.rar

119.66 KB, 下载次数: 37

此帖出自单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

4
 
谢谢高手
此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表