DJNZ 語法問題? |
答題得分者是:㊣
|
小強
一般會員 ![]() ![]() 發表:36 回覆:39 積分:15 註冊:2005-03-14 發送簡訊給我 |
我寫這樣做起來燈都一直亮不熄.....請問高手DJNZ之用法....要放哪裡要怎麼用.......請教教小第..
ORG 00H MOV A,#00H MOV R3,#03 MOV R4,#04 LOOP: MOV A,#00H MOV P1,A MOV R5,#10 CALL DELAY MOV A,#FFH MOV P1,A MOV R5,#10 CALL DELAY DJNZ R3,LOOP MOV A,#0FH MOV P1,A MOV R5,#05 CALL DELAY MOV A,#F0H MOV P1,A MOV R5,#05 CALL DELAY DJNZ R3,LOOP JMP LOOP DELAY: MOV R6,#250 S1: MOV R7,#200 DJNZ R7,$ DJNZ R6,S1 DJNZ R5,DELAY RET END 編輯記錄
㊣ 重新編輯於 2007-04-24 15:22:30, 註解 無‧
|
㊣
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
EX.
DELAY: DJNZ R7,DELAY; ==>R7=R7-1,R7不等於0便跳到DELAY處
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
㊣
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
我不知道你R4用來幹麻,假設要左右閃4次,可改為:
RPT: MOV R3,#03 MOV R4,#04 LOOP: MOV A,#00H MOV P1,A MOV R5,#10 CALL DELAY MOV A,#FFH MOV P1,A MOV R5,#10 CALL DELAY DJNZ R3,LOOP LOOP1: MOV A,#0FH MOV P1,A MOV R5,#05 CALL DELAY MOV A,#F0H MOV P1,A MOV R5,#05 CALL DELAY DJNZ R4,LOOP1 JMP RPT DELAY: MOV R6,#250 S1: MOV R7,#200 DJNZ R7,$ DJNZ R6,S1 DJNZ R5,DELAY RET END你的問題不在DJNZ.而是R3,R4.程式執行一次後R3.R4已經為0. 改成上述試試吧!
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
小強
一般會員 ![]() ![]() 發表:36 回覆:39 積分:15 註冊:2005-03-14 發送簡訊給我 |
|
小強
一般會員 ![]() ![]() 發表:36 回覆:39 積分:15 註冊:2005-03-14 發送簡訊給我 |
以下我把MOV R3,#03和MOV R4,#04放路loop1和loop2內就一直亮
ORG 00H MOV A,#00H LOOP1: MOV R3,#03 MOV A,#00H MOV P1,A MOV R5,#10 CALL DELAY MOV A,#FFH MOV P1,A MOV R5,#10 CALL DELAY DJNZ R3,LOOP1 LOOP2: MOV R4,#04 MOV A,#0FH MOV P1,A MOV R5,#05 CALL DELAY MOV A,#F0H MOV P1,A MOV R5,#05 CALL DELAY DJNZ R4,LOOP2 JMP LOOP1 DELAY: MOV R6,#250 S1: MOV R7,#200 DJNZ R7,$ DJNZ R6,S1 DJNZ R5,DELAY RET END如果把MOV R3,#03和MOV R4,#04放在ORG 00H 和MOV A,#00H 功能就ok....請問是不是R3,#03和MOV R4,#04不能放入loop內還有 R1 R2 R3 R4 R5 R6 R7 是占存器?~~請資深大大幫解疑惑.......課本沒教阿.. |
㊣
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
請改為這樣試試:
ORG 00H JMP START ORG 30H START: MOV A,#00H LOOP1: MOV R3,#03 MOV A,#00H MOV P1,A MOV R5,#10 CALL DELAY MOV A,#FFH MOV P1,A MOV R5,#10 CALL DELAY DJNZ R3,LOOP1 LOOP2: MOV R4,#04 MOV A,#0FH MOV P1,A MOV R5,#05 CALL DELAY MOV A,#F0H MOV P1,A MOV R5,#05 CALL DELAY DJNZ R4,LOOP2 JMP LOOP1 DELAY: MOV R6,#250 S1: MOV R7,#200 DJNZ R7,$ DJNZ R6,S1 DJNZ R5,DELAY RET ENDR1 R2 R3 R4 R5 R6 R7 是輔助暫存器沒錯
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
小強
一般會員 ![]() ![]() 發表:36 回覆:39 積分:15 註冊:2005-03-14 發送簡訊給我 |
正兄你太強....我問你都知道....我是有寫出來...如果不佳你那段
ORG 30H.....就不能把寫成那這樣ㄌ喔
LOOP1: MOV R3,#03 MOV A,#00H MOV P1,A MOV R5,#10 CALL DELAY MOV A,#FFH MOV P1,A MOV R5,#10 CALL DELAY DJNZ R3,LOOP1 LOOP2: MOV R4,#04 MOV A,#0FH MOV P1,A MOV R5,#05 CALL DELAY MOV A,#F0H MOV P1,A MOV R5,#05 CALL DELAY DJNZ R4,LOOP2 JMP LOOP1這是為啥.....小弟邏輯比較差 |
㊣
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
去看51記憶體規畫
ORG 00H -->程式由00H開始堆疊 ORG 30H -->程式由30H開始堆疊 00H~1FH是它一些暫存器與中斷向量位置,填程式會影響暫存器的值
所以要避開.
你可以去看書本後面有用到中斷的範例程式,都會避開這一段
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
skype_chen1
一般會員 ![]() ![]() 發表:4 回覆:11 積分:8 註冊:2004-12-21 發送簡訊給我 |
;請你參考看看下列程式段,直接燒成IC驗證,是不是你所需的
ORG 00H JMP START START: MOV SP,#60H MOV P1,#0FFH LOOP2: ;SETP1: ;------------------------------------------------------- MOV R3,#03 ;R3-->設定LED 顯示回路次數 LOOP: MOV P1,#00H MOV R5,#10 CALL DELAY MOV P1,#0FFH MOV R5,#10 CALL DELAY DJNZ R3,LOOP ;------------------------------------- ;******************************************************* ;虛線包起來部份程式動作,為讓LED 全部亮及全部滅總共做三次 STEP2: ******************************************************** MOV R3,#3 LOOP1: MOV P1,#0FH MOV R5,#05 CALL DELAY XRL P1,#0FFH MOV R5,#05 CALL DELAY DJNZ R3,LOOP1 JMP LOOP2 ;**************************************************************** ; 星號部份動作為: LED BIT4 ~ BIT7 ON, THEN LED BIT0 ~ BIT3 ON ; 總共做了三次,然後回到步驟一 ;**************************************************************** DELAY: MOV R6,#250 S1: MOV R7,#200 DJNZ R7,$ DJNZ R6,S1 DJNZ R5,DELAY RET END發表人 - ㊣ 於 2005/11/06 00:53:46 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |