線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2720
推到 Plurk!
推到 Facebook!

DJNZ 語法問題?

答題得分者是:
小強
一般會員


發表:36
回覆:39
積分:15
註冊:2005-03-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-26 11:02:50 IP:59.114.xxx.xxx 未訂閱
我寫這樣做起來燈都一直亮不熄.....請問高手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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-26 11:09:16 IP:59.113.xxx.xxx 未訂閱
EX.
DELAY:
      DJNZ R7,DELAY; ==>R7=R7-1,R7不等於0便跳到DELAY處    
==================================== 生命的目的,在幻化出多采多姿的組合。 生活的意義,在捕捉住稍縱即逝的感動。 ====================================
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-26 11:39:09 IP:59.113.xxx.xxx 未訂閱
我不知道你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. 改成上述試試吧!
==================================== 生命的目的,在幻化出多采多姿的組合。 生活的意義,在捕捉住稍縱即逝的感動。 ====================================
發表人 - ㊣ 於 2005/03/26 11:41:14
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
小強
一般會員


發表:36
回覆:39
積分:15
註冊:2005-03-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-26 13:39:12 IP:59.114.xxx.xxx 未訂閱
=0不懂....我這ㄍ程式只想把閃3次用DJNZ....縮減程式
小強
一般會員


發表:36
回覆:39
積分:15
註冊:2005-03-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-26 14:01:57 IP:59.114.xxx.xxx 未訂閱
以下我把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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-26 14:18:55 IP:59.113.xxx.xxx 未訂閱
請改為這樣試試:
 
       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
       END    
R1 R2 R3 R4 R5 R6 R7 是輔助暫存器沒錯
==================================== 生命的目的,在幻化出多采多姿的組合。 生活的意義,在捕捉住稍縱即逝的感動。 ====================================
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
小強
一般會員


發表:36
回覆:39
積分:15
註冊:2005-03-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-26 14:29:22 IP:59.114.xxx.xxx 未訂閱
正兄你太強....我問你都知道....我是有寫出來...如果不佳你那段  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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-26 14:37:12 IP:59.113.xxx.xxx 未訂閱
去看51記憶體規畫 ORG 00H -->程式由00H開始堆疊    ORG 30H -->程式由30H開始堆疊    00H~1FH是它一些暫存器與中斷向量位置,填程式會影響暫存器的值 所以要避開. 你可以去看書本後面有用到中斷的範例程式,都會避開這一段    
==================================== 生命的目的,在幻化出多采多姿的組合。 生活的意義,在捕捉住稍縱即逝的感動。 ====================================
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
skype_chen1
一般會員


發表:4
回覆:11
積分:8
註冊:2004-12-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-11-05 23:51:09 IP:219.84.xxx.xxx 未訂閱
;請你參考看看下列程式段,直接燒成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
系統時間:2024-05-20 2:07:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!