Re: 關於外部按鍵控制的問題
|
||||
---|---|---|---|---|
初級會員
|
程式的上邏輯是ok的, 不過有個小地方要注意, 程式一開始定義I/O PORT只要執行一次就可, 以免I/O PORT被強制恢復為初始化值, 而產生I/O PORT動作不正確。
以下對你的程式稍作修改, 修改之處會有註解, 如下: org 0x00 nop goto main main: banksel TRISB movlw 0xff movwf TRISB banksel PORTB clrf PORTB banksel TRISC clrf TRISC banksel PORTC clrf PORTC movlw b'00000110' movwf PORTC goto start start: btfsc PORTB, 1 call delay_4ms btfsc PORTB, 1 goto start ; 在start內一直偵測, 即可判斷到RB1的狀態. goto red red: call delay_5ms movlw b'00000001' movwf PORTC call delay_5ms goto red delay_5ms: 省略 return delay_4ms: 省略 return end
發表於: 2007/2/9 9:06
|
|||
|
Re: 關於外部按鍵控制的問題
|
||||
---|---|---|---|---|
資深會員
|
從start:開始看
當你PORTB,1 = 0時 他會執行到red: 然後就掛在這個死迴圈裡面出不去 red這副程式加個判斷式讓他跳開回到start:吧 除錯時看到判斷式就要預想所有的可能及其流程 這樣才能發現到錯誤 寫程式時最好不要有死迴圈 儘量用呼叫的不要用跳躍
發表於: 2007/2/9 8:40
|
|||
木亟缶夬金戔
彳艮缶夬金戔 走召缶夬金戔 |
||||
|
關於外部按鍵控制的問題
|
||||
---|---|---|---|---|
新會員
|
最近寫一個很簡單的動作,就是只要按下PORTB的RB1就會改變輸出狀態..程式如下:
org 0x00 nop goto main main: banksel TRISB movlw 0xff movwf TRISB banksel PORTB clrf PORTB banksel TRISC clrf TRISC banksel PORTC clrf PORTC movlw b'00000110' movwf PORTC goto start start: btfsc PORTB, 1 call delay_4ms btfsc PORTB, 1 goto main goto red red: call delay_5ms movlw b'00000001' movwf PORTC call delay_5ms goto red delay_5ms: 省略 return delay_4ms: 省略 return end 現在問題是我按按鍵根本沒作用,只會看到LED全暗,又馬上亮起恢復一開始狀態,請版上厲害的大大幫我...小弟不才..初次寫PIC..這問題都解決不了..拜託了
發表於: 2007/2/8 21:38
|
|||
|