找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[求助]帮忙解决一下运行不了的程序

[复制链接]
跳转到指定楼层
楼主
ID:3464 发表于 2008-7-19 11:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SOUTH_RED EQU P1.0
SOUTH_YELLOW EQU P1.1
SOUTH_GREEN EQU P1.2
EAST_RED EQU P1.3
EAST_YELLOW EQU P1.4
EAST_GREEN EQU P1.5
SECOND_FLAG BIT 00H
TIME_COUNT0 DATA 30H
TIME_COUNT1 DATA 31H
STATUS_FLAG DATA 32H
SECOND_COUNT DATA 33H
ORG 000H
LJMP MAIN
ORG 000BH
LJMP T0_INT
ORG 0100H
MAIN:MOV SP,#60H
     LCALL INIT
     LCALL  T0_INT
LOOP:
JNB  SECOND_FLAG,LOOP
LCALL STATUS_CHANGE
CLR  SECOND_FLAG
SJMP LOOP
STATUS_CHANGE:MOV A,STATUS_FLAG
              ADD A,STATUS_FLAG
              MOV DPTR,#STATUS_PROC_TABLE
              JMP @A+DPTR
STATUS_PROC_TABLE:AJMP STATUS1
                  AJMP STATUS2
                  AJMP STATUS3
                  AJMP STATUS4
STATUS1:DJNZ  SECOND_COUNT,STATUS1_EXIT
        MOV  SECOND_COUNT,#10
        MOV  STATUS_FLAG,#01H
STATUS1_EXIT:
RET
STATUS2:DJNZ     SECOND_COUNT,STATUS2_EXIT
        MOV      SECOND_COUNT,#40
        MOV      STATUS_FLAG,#02H
        SETB     SOUTH_RED
        CLR      SOUTH_YELLOW
        SETB     SOUTH_GREEN
        CLR      EAST_RED
        SETB     EAST_YELLOW
        SETB     EAST_GREEN
        RET
STATUS2_EXIT:
     CPL  SOUTH_GREEN
RET
STATUS3:DJNZ     SECOND_COUNT,STATUS3_EXIT
        MOV      SECOND_COUNT,#10
        MOV      STATUS_FLAG,#03H
STATUS3_EXIT:
RET
STATUS4:DJNZ    SECOND_COUNT,STATUS4_EXIT
        MOV     SECOND_COUNT,#60
        MOV     STATUS_FLAG,#00H
        CLR     SOUTH_RED
        SETB    SOUTH_YELLOW
        SETB    SOUTH_GREEN
        SETB    EAST_RED
        CLR     EAST_YELLOW
        SETB    EAST_GREEN
        RET
STATUS4_EXIT:CPL  EAST_GREEN
RET
INIT:SETB SOUTH_RED
     SETB SOUTH_YELLOW
     CLR  SOUTH_GREEN
     CLR EAST_RED
     SETB EAST_YELLOW
     SETB EAST_GREEN
     MOV TIME_COUNT0,#250
     MOV TIME_COUNT1,#8
     MOV SECOND_COUNT,#60
     MOV STATUS_FLAG,#00H
     CLR SECOND_FLAG
     RET
T0_INT:DJNZ TIME_COUNT0,T0_INT_EXIT
       MOV TIME_COUNT0,#250
       DJNZ TIME_COUNT1,T0_INT_EXIT
       MOV     TIME_COUNT1,#8
       SETB SECOND_FLAG
T0_INT_EXIT:
RETI
T0_INT_INIT:
  MOV TMOD,#02H
  MOV TL0,#06H
  MOV TH0,#06H
  MOV TCON,#10H
  SETB EA
  SETB ET0
  RET
END

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

使用道具 举报

沙发
ID:3237 发表于 2008-7-19 22:26 | 只看该作者
汇编~~~~
无能为力~~
我用C的~~~
回复

使用道具 举报

板凳
ID:3058 发表于 2008-7-20 08:19 | 只看该作者
这个程序就真的有点乱哪`````即然设了中断向量``但又不开中断``这有什么意义```
你想用中断```但又 LCALL  T0_INT~~~而最终又RETI``(中断返回)````这是什么意思```你再好好想想```
理清你的思路````再看看中断是怎么设置的````

回复

使用道具 举报

地板
ID:3490 发表于 2008-7-20 08:48 | 只看该作者

顶!!
我建议你现在不要写这么长的程序,先把基本的如中断,定时,流水灯等等!!
加油,我也是初学者!

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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