找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4187|回复: 2
收起左侧

流水灯实验程序跑飞

[复制链接]
ID:30980 发表于 2011-9-4 00:25 | 显示全部楼层 |阅读模式

今天在书上看啦个流水灯的实验  自己把数据改动了下    之后程序只能运行一段时间就跑不动了(自己用keil仿真的)

源程序如下

           ORG 0000H
            LJMP START     

            ORG 30H
START:  MOV A,#0F0H
LOOP:    MOV P1,A
             RL A
  LCALL  DELAY
  LCALL   LOOP
DELAY:   MOV R7,#255
D1:         MOV R6,#255
D2:         DJNZ R6,D2
              DJNZ R7,D1
              RET
              END

程序能正常全速运行几毫秒后就一直停在DELAY那里     不知怎么搞的   希望各位大侠帮下忙  小弟不胜感激

回复

使用道具 举报

ID:29131 发表于 2011-9-22 21:49 | 显示全部楼层

 ORG 0000H
   AJMP START    

    ORG 30H
START:  MOV A,#0F0H
LOOP:    MOV P1,A
             RL A
  LCALL  DELAY
  SJMP  LOOP
DELAY:   MOV R7,#255
D1:         MOV R6,#255
D2:         DJNZ R6,D2
              DJNZ R7,D1
              RET
              END

貌似我把LCALL LOOP改为 SJMP  LOOP就可以了,SJMP是无条件转移语句,具体为啥这样子,我也不清楚。

回复

使用道具 举报

ID:32572 发表于 2011-10-30 21:59 | 显示全部楼层

 你的  RL  A,执行四次循环后就没法点亮灯了,因为A中一直保持0x00,要编程恢复0xf0

你的LCALL LOOP  LCALL是调用子程序的,你没有RET返回,无法跳出循环,中间MOV A,P1  RL  A两条程序只有2纳秒,所以看起来只在运行DELAY延迟子程序

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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