Re: 關於IF ELSE ENDIF
|
||||
---|---|---|---|---|
新會員
|
我瞭解了
謝謝
發表於: 2004/6/14 18:26
|
|||
|
Re: 關於IF ELSE ENDIF
|
||||
---|---|---|---|---|
版主
|
if, els, endif是所謂的directive,不是真正的指令。它的動作在組譯的時候就已經做完了,不可能還能在程式執行的時候「動態」地去判讀PORTD。
version是常數,不是變數,當然watch不到。 PORTD 在.inc檔裏頭,被定義=8,自然一定執行一。 若想判斷PORTD,藉以執行不同的程式,可以類似用以下的程式: MOVLW D'8' ;或其它值,如D'20' XORWF PORTD,W BTFSC STATUS,Z GOTO PORTD_IS_8 PORTD_NOT_8: ........ PORTD_IS_8: ........
發表於: 2004/6/14 16:53
|
|||
|
Re: 關於IF ELSE ENDIF
|
||||
---|---|---|---|---|
新會員
|
再請教
#define version 90 ;version定義為90,就不能在改變了 我用Watch看version ADDRESS是空的 VALUE顯示Symbol Not Found version是存放在何處 另外若我想判斷PORTD的值是否符合條件要如何做 movlw h'55' movwf PORTD if PORTD == 8 ;PORTD的ADDRESS 執行一 else 執行二 endif 結果是RUN 執行一
發表於: 2004/6/14 15:43
|
|||
|
Re: 關於IF ELSE ENDIF
|
||||
---|---|---|---|---|
版主
|
但執行結果卻都是執行IF 至 ELSE
不會執行ELSE 至 ENDIF 回答: 因為條件都成立,所以就不會執行else以後的組合語言了。
發表於: 2004/6/14 14:15
|
|||
|
Re: 關於IF ELSE ENDIF
|
||||
---|---|---|---|---|
版主
|
當欲使用條件式的組譯用來判斷事件是否成立,以控制 MPASM 的組譯流程時, 可利用 IF , ELSE , ENDIF
等這些條件判斷指令來達成 IF 的語法為 ; IF <條件判斷> {當條件成立(TRUE) 時則執行 IF 之下區塊之組譯} ELSE {用來處理當 IF 的條件不成立時(FALSE)的狀況} ENDIF ; 用於結束 IF .. ELSE 的條件式組譯區塊 。 例如 : #define Motor_Type 50 : : call Table_Read : : Table_Read: IF Motor_Type == 50 retlw 0xC0 ELSE retlw 0x40 ENDIF 此時修改Motor_Type的值就會有不同的組譯結果。
發表於: 2004/6/14 14:11
|
|||
|
Re: 關於IF ELSE ENDIF
|
||||
---|---|---|---|---|
版主
|
可以啊!以下是我試的程式內容:
list p=16c57c #include <p16c5x.inc> #define version 90 org 0h ; movlw b'00000000' tris PORTB ; if version == 100; check current version movlw 0x55 movwf PORTB else movlw 0x0aa movwf PORTB endif loop: goto loop end
發表於: 2004/6/14 11:37
|
|||
|
關於IF ELSE ENDIF
|
||||
---|---|---|---|---|
新會員
|
請問IF ELSE ENDIF這虛指令是否可用 因為組譯時並沒有錯誤 但執行結果卻都是執行IF 至 ELSE 不會執行ELSE 至 ENDIF
發表於: 2004/6/12 10:48
|
|||
|