請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
初級會員
|
請問各位前輩們,C語言中如何加入組語??小弟用的編譯器Hi-tech,晶片用16f883,我只知道可以用asm("nop"),這樣的用法!!如果說是要再C中加入一段組語,請問要如何用??謝謝
發表於: 2008/9/22 21:06
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
初級會員
|
感謝板大,小弟獲益良多!~~
發表於: 2008/9/23 10:16
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
初級會員
|
那再請問板大,C語言中可以呼叫C的函式,那在C中可以呼叫asm的函式嗎??
發表於: 2008/9/23 10:47
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
版主
|
C 呼叫組語是天經地義的事,但是要用此功能是要有些程度,初學著暫時不要考慮此問題。如果你對組語的 Glorbal & Extern 等架構不熟悉的話暫時不要去踢這個鐵板。先考慮使用 In-Line Assembly 吧!
發表於: 2008/9/23 11:34
|
|||
|
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語言中如何加入組語??
|
||||
---|---|---|---|---|
資深會員
|
大大您好:
請注意看一下 Ryang 版主說過「使用的周邊名稱要在前面加上 _ 」,也就是底線符號,我看你的程式好像都沒有加,建議你先試著寫一兩行,可以組譯過之後再繼續一直到全部寫完。
發表於: 2008/9/24 9:10
|
|||
|
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語言中如何加入組語??
|
||||
---|---|---|---|---|
資深會員
|
大大您好:
你可否先寫一些簡單的組語指令,例如:MOVLW、MOVWF 等等先組譯看會不會過,然後再解決 banksel ,也許切頁可以用 C 來寫,但要驗證是否真有改變資料。
發表於: 2008/9/24 9:48
|
|||
|
Re: 請問C語言中如何加入組語??
|
||||
---|---|---|---|---|
初級會員
|
PSIR大您好, 我有試著MOVLW、MOVWF 這類指令是可以編譯不會有錯,aa也可以看到我寫入的值0x43!!下一步,切頁可以用 C 來寫,該怎麼做??請大大指點
#asm movlw 0x43; movwf _aa; #endasm
發表於: 2008/9/24 10:05
|
|||
|