今天在書上看啦個流水燈的實驗 自己把數據改動了下 之后程序只能運行一段時間就跑不動了(自己用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.raoushi.com/bbs/) | Powered by Discuz! X3.1 |