Re: PCL 查表時會不定時的歸零
|
||||
---|---|---|---|---|
版主
|
這只是說可以用自己搬給自己做是否為 0 的測試方式,當然同樣的方式也適用於搬給 W Reg. 的動作。
發表於: 2008/9/25 11:32
|
|||
|
Re: PCL 查表時會不定時的歸零
|
||||
---|---|---|---|---|
初級會員
|
感謝版大的說明,總算釐清MANUAL上的意思,把資料搬給自己,即是如果當F為接收資料暫存的BUFFER,藉由這個方法,判定F是否為0,來確認是否已收到資料,分享給各位。
附件就是MANUAL上的說明,這就是MANUAL上的陷阱,寫的人總認為大家應該什麼都知道 Attach file: (0.00 KB)
發表於: 2008/9/25 11:17
|
|||
|
Re: PCL 查表時會不定時的歸零
|
||||
---|---|---|---|---|
初級會員
|
測試後還是很奇怪
1.manual上說,movf是搬給自己,Z才會變 2.測試時發現,同樣是搬給W,有的Z會變,有的Z卻不會變 希望版大能再說明一下,謝謝
發表於: 2008/9/25 10:25
|
|||
|
Re: PCL 查表時會不定時的歸零
|
||||
---|---|---|---|---|
版主
|
因為 movf 會引響到 Z 旗號。
movwf & swap 不會引響 z 得變化,如果改用 movf 來搬動資料想想看 Z 會怎樣。
發表於: 2008/9/25 9:44
|
|||
|
Re: PCL 查表時會不定時的歸零
|
||||
---|---|---|---|---|
初級會員
|
抱歉,附帶問一下,實在想不通,為何都要SWAPF才能存取,可否詳細解釋一下
發表於: 2008/9/25 9:37
|
|||
|
Re: PCL 查表時會不定時的歸零
|
||||
---|---|---|---|---|
資深會員
|
為了避免由中斷服務程序ISR回來後,暫存器與旗標被改變,影響主程式進行,中斷服務程序中會先保存起來,結束前再放回來,主程式就不會受到中斷服務程序裡改變了 W 的影響。 保存或放回時為了不影響 STATUS 的旗標,有一些技巧,可參考網路上或別人的範例。
isr: movwf W_SAVE ; 保存 W,如果有 bank,宜放在不受 bank 選擇影響的 ACCESS 區 swapf STATUS,W ; SWAP 不影響 STATUS movwf STATUS_SAVE ; 保存 STATUS ... ; 這裡可以放心用到 W 與改變 STATUS ... swapf STATUS_SAVE,W movwf STATUS swapf W_SAVE,F swapf W_SAVE,W retfie
發表於: 2008/9/25 9:15
|
|||
|
Re: PCL 查表時會不定時的歸零
|
||||
---|---|---|---|---|
初級會員
|
感謝板主和hellowanz的回覆,的確有可能是我的INTF的中斷副程式將w清除為零,難怪是不規則的出現錯誤.
發表於: 2008/9/23 18:13
|
|||
|
Re: PCL 查表時會不定時的歸零
|
||||
---|---|---|---|---|
資深會員
|
檢查一下在中斷副程式是不是有把W清為零,或是把零放到W...
發表於: 2008/9/23 9:20
|
|||
|
Re: PCL 查表時會不定時的歸零
|
||||
---|---|---|---|---|
版主
|
建議用 MPLAB SIM 軟體模擬一下,確認一下是不是程式上的問題。或使用 ICD2 時暫不要用單步執行,可以用設斷點方式除錯。
再確認一次是不是有 Download 同一版本的 ICD2 Operation System?
發表於: 2008/9/22 18:30
|
|||
|