Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
資深會員
|
大大不敢當,很遺憾能力不夠幫不了忙,祝你早日解決問題。
發表於: 2008/9/26 9:20
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
初級會員
|
感謝阪大與PSIR大指導,小弟我真的是獲益良多!!
再此獻上十二萬分的感謝!! m(_._)m
發表於: 2008/9/26 8:51
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
版主
|
PIC16F 有四個 Bank,C 在執行時可能ㄧ直都使用 Bank0(假設是這樣的,單然也會在其他的 BANK),在組語裡你硬切到別的 BANK 去處理再回到 C 時 BANK 會有錯誤的可能,保險起見還是先將 STATUS 存起了再說。
發表於: 2008/9/25 13:39
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
版主
|
banksel 是 MPASM 組譯器專用的虛指令,這種指令不會支援到 這種指令不會支援到 In-Line Assembly 裡的。你必須用 BSF _STATUS,5
或 BCF 得方式直接設定 BANK. 在 in-line assembly 裡切換 BNAK 要小心回去 C 程式的 BANK ㄧ般的做法是先儲存 C 得 BANK 資料後再切換 BANK 回到 C 前再 restore BANK 資料。
發表於: 2008/9/24 10:36
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
資深會員
|
大大您好:
我看您的函數好像是想完成一個對 EEPROM 的寫入是嗎? 這個動作其實可以不用組合語言寫,用C語言也可以完成, 你可以看 16f883 的 DATA SHEET 裡面關於 EEPROM 的部分, 裡面有一段 EEPROM 的範例程式,照著改成 C 就可以了,試試看。 切 BANK 的話,我沒有用過 banksel 這種指令, 因為 16F 控制切 BANK 是在 STATUS 暫存器的 RP1,RP0這兩個位元在選擇, 所以像這樣寫:RP1=0; RP0=1; 就可以切 BANK 了, 不過用 C 的話都會自己切,除非你有發現資料沒變化時才需要強制切 BANK。 有錯的話煩請版大指正,謝謝。
發表於: 2008/9/24 10:27
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
初級會員
|
PSIR大您好, 我有試著MOVLW、MOVWF 這類指令是可以編譯不會有錯,aa也可以看到我寫入的值0x43!!下一步,切頁可以用 C 來寫,該怎麼做??請大大指點
#asm movlw 0x43; movwf _aa; #endasm
發表於: 2008/9/24 10:05
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
資深會員
|
大大您好:
你可否先寫一些簡單的組語指令,例如:MOVLW、MOVWF 等等先組譯看會不會過,然後再解決 banksel ,也許切頁可以用 C 來寫,但要驗證是否真有改變資料。
發表於: 2008/9/24 9:48
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
初級會員
|
PSIR大您好,我有試著在「使用的周邊名稱要在前面加上 _ 」,但是也是有錯誤訊息,訊息如下:
Error [845] D:\pic_test\try_writeEEPROM\try_writeEEPROM.c; 28. symbol "banksel" defined more than once Error [876] D:\pic_test\try_writeEEPROM\try_writeEEPROM.c; 36. syntax error 我知道In-Line Assembly 好像不支援banksel之類的指令,程式內如果還是要用到這類指令該怎麼處理??小弟沒經驗還請大家指導一番...
發表於: 2008/9/24 9:35
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
資深會員
|
大大您好:
請注意看一下 Ryang 版主說過「使用的周邊名稱要在前面加上 _ 」,也就是底線符號,我看你的程式好像都沒有加,建議你先試著寫一兩行,可以組譯過之後再繼續一直到全部寫完。
發表於: 2008/9/24 9:10
|
|||
|