今天在書上看啦個(gè)流水燈的實(shí)驗(yàn) 自己把數(shù)據(jù)改動了下 之后程序只能運(yùn)行一段時(shí)間就跑不動了(自己用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
程序能正常全速運(yùn)行幾毫秒后就一直停在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是無條件轉(zhuǎn)移語句,具體為啥這樣子,我也不清楚。
你的 RL A,執(zhí)行四次循環(huán)后就沒法點(diǎn)亮燈了,因?yàn)锳中一直保持0x00,要編程恢復(fù)0xf0
你的LCALL LOOP LCALL是調(diào)用子程序的,你沒有RET返回,無法跳出循環(huán),中間MOV A,P1 RL A兩條程序只有2納秒,所以看起來只在運(yùn)行DELAY延遲子程序
| 歡迎光臨 (http://m.raoushi.com/bbs/) | Powered by Discuz! X3.1 |