今天在书上看啦个流水灯的实验 自己把数据改动了下 之后程序只能运行一段时间就跑不动了(自己用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那里 不知怎么搞的 希望各位大侠帮下忙 小弟不胜感激
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是无条件转移语句,具体为啥这样子,我也不清楚。
你的 RL A,执行四次循环后就没法点亮灯了,因为A中一直保持0x00,要编程恢复0xf0
你的LCALL LOOP LCALL是调用子程序的,你没有RET返回,无法跳出循环,中间MOV A,P1 RL A两条程序只有2纳秒,所以看起来只在运行DELAY延迟子程序
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |