Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
初級會員
|
感謝阪大與PSIR大指導,小弟我真的是獲益良多!!
再此獻上十二萬分的感謝!! m(_._)m
發表於: 2008/9/26 8:51
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
初級會員
|
PSIR大,小弟試過用C寫沒結果,改用組語就沒問題所以會在程式中加入組語就是這原因!!仍然很感謝PSIR大的指點!~
請問板大,板大的所言,"儲存 C 得 BANK 資料後再切換 ,BANK 回到 C 前再 restore BANK 資料。"是什麼意思??是存STATUS的值嗎??那如果是BANKSEL EEADDR,BANKSEL後面是佔存器的話,又該怎麼做??小弟資質不好,還請板大詳加說明.
發表於: 2008/9/24 11:53
Edited by fbs1107 on 2008年09月24日 13:50:30
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
初級會員
|
PSIR大您好, 我有試著MOVLW、MOVWF 這類指令是可以編譯不會有錯,aa也可以看到我寫入的值0x43!!下一步,切頁可以用 C 來寫,該怎麼做??請大大指點
#asm movlw 0x43; movwf _aa; #endasm
發表於: 2008/9/24 10:05
|
|||
|
Re: 為什麼EEPROM寫不進去??
|
||||
---|---|---|---|---|
初級會員
|
可否在請教一下板大,板大所分享的範例中,組語可正常寫入執行,可是不知道未什麼C的範例就無法寫入?我也有試著用EEPROM_WRITE( ) 的函數,但是也是寫不進去?
程式如下 #include <htc.h> void eetest(void) { unsigned char value = 0x10; unsigned char address = 0x41; // write value to EEPROM address eeprom_write(address,value); }
發表於: 2008/9/24 9:40
|
|||
|
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語言中如何加入組語??
|
||||
---|---|---|---|---|
初級會員
|
1.)請問板大,像下面的程式,我使用In-Line Assembly 的方式,為什麼還是編譯會有錯誤??是我In-Line Assembly用法錯誤了嗎?還是應該要再加入什麼??謝謝
void writeeeprom(void) { #asm banksel EEADR; movf DATA_EE_ADDR,W; movwf EEADR; movf DATA_EE_DATA,W; movwf EEDATA; banksel EECON1; bcf EECON1,7,0; bsf EECON1,2,0; bcf INTCON,1,0; movlw 0x55; movwf EECON2; movlw 0xAA; movwf EECON2; bsf EECON1,1,0; bsf INTCON,1,0; bcf EECON1,2,0; btfsc EECON1,1,0; goto $-1 #endasm }// 錯誤訊息如下: Error [845] D:\pic_test\try_writeEEPROM\try_writeEEPROM.c; 25. symbol "banksel" defined more than once Error [876] D:\pic_test\try_writeEEPROM\try_writeEEPROM.c; 27. syntax error Error [876] D:\pic_test\try_writeEEPROM\try_writeEEPROM.c; 37. syntax error Error [800] C:\DOCUME~1\thomasho\LOCALS~1\Temp\s4r8.; 250. undefined symbol "DATA_EE_ADDR" Error [800] C:\DOCUME~1\thomasho\LOCALS~1\Temp\s4r8.; 256. undefined symbol "DATA_EE_DATA" Error [800] C:\DOCUME~1\thomasho\LOCALS~1\Temp\s4r8.; 259. undefined symbol "EEDATA" Error [800] C:\DOCUME~1\thomasho\LOCALS~1\Temp\s4r8.; 274. undefined symbol "EECON2" 2.)請問_asm與#asm用法有何不同?因為我使用出來錯誤訊息也不同,請板大解惑!!謝謝!!
發表於: 2008/9/23 15:31
Edited by fbs1107 on 2008年09月23日 16:02:19
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
初級會員
|
那再請問板大,C語言中可以呼叫C的函式,那在C中可以呼叫asm的函式嗎??
發表於: 2008/9/23 10:47
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
初級會員
|
感謝板大,小弟獲益良多!~~
發表於: 2008/9/23 10:16
|
|||
|
Re: 為什麼EEPROM寫不進去??
|
||||
---|---|---|---|---|
初級會員
|
非常感謝板大與其他回覆的大大們,能看到EEPROM寫入東西,真是太好了!!特別是對我這種第一次接觸pic的人,真的很感謝!!
再問一個觀念的問題,板大說的"那兩行是定變數的位址",是不是每個變數都要設定位址??如果程式中變數很多,那不就前面整段程式都在做定變數位址??16f883變數位止的區域是多少??是70h~7Fh嗎?? 不好意思,問的問題很基本!因為想說用C寫的話好像HitehC,會幫忙定變數位址,不用自己設! 謝謝!~
發表於: 2008/9/23 10:12
|
|||
|