2615|5

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

自己设计的交通灯汇编程序,运行不成功,请各位帮忙看看 [复制链接]

;-------------------------------------------
;十字路口交通灯控制器
;MADE BY Leo
;-------------------------------------------


;分别用单片的P1.0-P1.5口控制南北和东西方向的直行/左转/右转红绿灯
;P1.6-P1.7为人行横道指示灯
;P0.0-P0.6控制LED显示
;P2.4-P2.5为南北东西直行设置,用来处理突法事件
;直行持续30秒,左转持续20秒,右转始终为绿灯
;-------------------------------------------

GO1          EQU       P1.0
RIGHT1       EQU       P1.1
LEFT1        EQU       P1.2
GO2          EQU       P1.3
RIGHT2       EQU       P1.4
LEFT2        EQU       P1.5
GO_NS        EQU       P2.4
GO_RL        EQU       P2.5
WALK_NS      EQU       P1.6
WALK_EW      EQU       P1.7
SECOND_COUNT DATA      32H

             ORG    0000H    ;主程序入口地址
             LJMP   MAIN
             ORG    0003H    ;外中断0入口地址
             LJMP   PINT0
             ORG    000BH   
                    RETI
             ORG    0013H    ;外中断1入口地址
             LJMP   PINT1
            
MAIN:
  MOV   SP,#60H     ;堆栈指针赋初值
  LCALL P_INIT     ;调用定时器中断初始化子程序


;------------------------------------
;南北方向直行灯为绿灯,南北东西方向右转为绿灯.其余所有灯为红灯
;人行道南北通行
;持续时间30秒,然后转到状态2
;------------------------------------  
STATUS1:  
  MOV  SECOND_COUNT,#60   ;30秒后转到状态2,状态2持续20秒
  SETB GO1
  SETB RIGHT1
  SETB RIGHT2
  CLR  LEFT1
  CLR  GO2
  CLR  LEFT2
  SETB WALK_NS
  CLR  WALK_EW
LOP_S1:
  DJNZ  SECOND_COUNT,M1
  LJMP  STATUS2
M1:
  LCALL WORK
  LCALL DISPLAY
  AJMP  LOP_S1

;-----------------------------------
;南北方向左转灯为绿灯,南北东西方向右转为绿灯.其余所有灯为红灯
;人行道南北通行
;持续时间20秒,然后转到状态3
;-----------------------------------  
STATUS2:
  MOV   SECOND_COUNT,#40   ;20秒后转到状态3,状态3持续30秒
  CLR   GO1
  SETB  LEFT1
  CLR   WALK_NS
  CLR   WALK_EW
LOP_S2:
  DJNZ  SECOND_COUNT,M4
  LJMP  STATUS3
M2:
  LCALL WORK
  LCALL DISPLAY
  AJMP  LOP_S2

  
;-----------------------------------
;东西方向直行灯为绿灯,南北东西方向右转为绿灯.其余所有灯为红灯
;人行道东西通行
;持续时间30秒,然后转到状态4
;------------------------------------
STATUS3:
  MOV  SECOND_COUNT,#60   ;30秒后转为状态4,状态4持续20秒
  CLR  LEFT1
  SETB GO2
  SETB WALK_EW
  CLR  WALK_NS
LOP_S3:
  DJNZ  SECOND_COUNT,M3
  LJMP  STATUS4
M3:
  LCALL WORK
  LCALL DISPLAY
  AJMP  LOP_S3
  
;-----------------------------------
;东西方向左转灯为绿灯,南北东西方向右转为绿灯其余所有灯为红灯
;人行道东西通行
;持续时间20秒,然后转到状态1
;-----------------------------------
STATUS4:
  MOV  SECOND_COUNT,#40   ;20秒后转为状态1,状态1持续30秒
  CLR  GO2
  SETB LEFT2
  CLR  WALK_EW
  CLR  WALK_NS
LOP_S4:
  DJNZ  SECOND_COUNT,M4
  LJMP  STATUS1
M4:
  LCALL WORK
  LCALL DISPLAY
  AJMP  LOP_S4
  
;*********************************
;外中断初始化子程序
;*********************************
P_INIT:
  MOV   TCON,#0AH    ;外中断INT0和INT1使能
  SETB  EA           ;中断允许总控制使能
  SETB  EX0          ;外中断0使能
  SETB  EX1          ;外中断1使能
  RET
  
;******************************
;INT0中断服务程序
;******************************
;遇到紧急情况1,南北方向直行灯为绿灯,南北东西方向右转为绿灯.
;其余所有灯为红灯.人行道南北通行
PINT0:
  SETB GO1
  SETB RIGHT1
  CLR  LEFT1
  CLR  GO2
  SETB RIGHT2
  CLR  LEFT2
  CLR  WALK_NS
  CLR  WALK_EW
  MOV  R3,#50
  DJNZ R3,PINT0_EXIT
PINT0_EXIT:
  RETI
;******************************
;INT1中断服务程序
;******************************
;遇到紧急情况1,东西方向直行灯为绿灯,南北东西方向右转为绿灯.
;其余所有灯为红灯.人行道南北通行
PINT1:
  CLR  GO1
  SETB RIGHT1  
  CLR  LEFT1
  SETB GO2
  SETB RIGHT2
  CLR  LEFT2
  CLR  WALK_EW
  CLR  WALK_NS
  MOV  R3,#50
  DJNZ R3,PINT1_EXIT
PINT1_EXIT:
  RETI
           
;****************************************************
;*                    显示程序                      *
;****************************************************
; 40H为最高位,41H为最低位,先扫描高位
DISPLAY:MOV   R1,#40H
        MOV   R5,#7fH
  PLAY: MOV   A,R5
        MOV   P0,#0FFH
        MOV   P2,A
        MOV   A,@R1
        MOV   DPTR,#TAB
        MOVC  A,@A+DPTR
        MOV   P0,A
        LCALL DL1MS
        INC   R1
        MOV   A,R5
        JNB   ACC.6,ENDOUT
        RR    A
        MOV   R5,A
        AJMP  PLAY
ENDOUT: MOV   P2,#0FFH
        MOV   P0,#0FFH
        RET

;****************************************************
;*                    延时程序                      *
;****************************************************
DL1MS:
        PUSH   06H
        PUSH   07H
        MOV    R6,#14H
DL1:   MOV    R7,#19H
DL2:   DJNZ   R7,DL2
        DJNZ   R6,DL1
        POP    07H
        POP    06H
        RET
        
;***********************************************
;辅助显示,将要显示时间的十位赋给40H,个位赋给41H
;***********************************************
WORK:
    PUSH   ACC
    MOV    A,SECOND_COUNT
    MOV    B,#10
    DIV    AB
    MOV    40H,A
    MOV    41H,B
    POP    ACC
    RET
   
;------字符表(共阳)------
            TAB:   DB  0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H, 0FFH
;共阳段码表            "0"   "1"   "2"   "3"   "4"  "5"  "6"  "7"   "8"  "9"  "不亮"

END

最新回复

没看到#include XXXX 如果STATUS4是最后个状态这里好像没回头 检查下电路板,看看晶振(有些仿真器需要外面接晶振),然后检查下LED的驱动电路一般51机要接上拉不然来不动LED的  详情 回复 发表于 2009-6-10 22:30
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
运行不成功?
是什么现象?编译不通过?运行没有到达预期目标?
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
正在自己调试,汇编的东西,估计也没人愿意看.我自己慢慢整吧.谢谢了!
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
将调试信息贴出来看看
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

5
 
没有错误啊,连警告都没有啊!
 
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

6
 
没看到#include XXXX
如果STATUS4是最后个状态这里好像没回头

检查下电路板,看看晶振(有些仿真器需要外面接晶振),然后检查下LED的驱动电路一般51机要接上拉不然来不动LED的
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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