會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客



(1) 2 »


請問C語言中如何加入組語??
初級會員
註冊日期:
2008/08/22 10:53
所屬群組:
註冊會員
文章: 27
等級: 3; EXP: 93
HP : 0 / 73
MP : 9 / 1893
離線
請問各位前輩們,C語言中如何加入組語??小弟用的編譯器Hi-tech,晶片用16f883,我只知道可以用asm("nop"),這樣的用法!!如果說是要再C中加入一段組語,請問要如何用??謝謝

2008/09/22 21:06
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 13980
等級: 72; EXP: 24
HP : 1068 / 1781
MP : 4660 / 68448
離線

void mystartup
( void )
{
     
PORTC = 0x00;
     
TRISC = 0x00;
#asm
     
clrf   _STATUS
     clrf   _PORTB
     bsf    _STATUS
,5
     clrf   _TRISB

     movlw   high start
     movwf   _PCLATH
     goto   
( start & 0x7FF ); asm ( “ljmp start“ );   
#endasm
}


嵌入式組語用 #asm 開始,#endasm 結束
使用的周邊名稱要在前面加上 _ 。

2008/09/23 08:43
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
初級會員
註冊日期:
2008/08/22 10:53
所屬群組:
註冊會員
文章: 27
等級: 3; EXP: 93
HP : 0 / 73
MP : 9 / 1893
離線
感謝板大,小弟獲益良多!~~

2008/09/23 10:16
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
初級會員
註冊日期:
2008/08/22 10:53
所屬群組:
註冊會員
文章: 27
等級: 3; EXP: 93
HP : 0 / 73
MP : 9 / 1893
離線
那再請問板大,C語言中可以呼叫C的函式,那在C中可以呼叫asm的函式嗎??

2008/09/23 10:47
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 13980
等級: 72; EXP: 24
HP : 1068 / 1781
MP : 4660 / 68448
離線
C 呼叫組語是天經地義的事,但是要用此功能是要有些程度,初學著暫時不要考慮此問題。如果你對組語的 Glorbal & Extern 等架構不熟悉的話暫時不要去踢這個鐵板。先考慮使用 In-Line Assembly 吧!

2008/09/23 11:34
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
初級會員
註冊日期:
2008/08/22 10:53
所屬群組:
註冊會員
文章: 27
等級: 3; EXP: 93
HP : 0 / 73
MP : 9 / 1893
離線
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/09/23 15:31

fbs1107 於 2008年09月23日 16:02:19
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
資深會員
註冊日期:
2006/04/17 11:12
所屬群組:
註冊會員
文章: 593
等級: 22; EXP: 32
HP : 0 / 533
MP : 197 / 17430
離線
大大您好:

請注意看一下 Ryang 版主說過「使用的周邊名稱要在前面加上 _ 」,也就是底線符號,我看你的程式好像都沒有加,建議你先試著寫一兩行,可以組譯過之後再繼續一直到全部寫完。

2008/09/24 09:10
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
初級會員
註冊日期:
2008/08/22 10:53
所屬群組:
註冊會員
文章: 27
等級: 3; EXP: 93
HP : 0 / 73
MP : 9 / 1893
離線
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/09/24 09:35
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
資深會員
註冊日期:
2006/04/17 11:12
所屬群組:
註冊會員
文章: 593
等級: 22; EXP: 32
HP : 0 / 533
MP : 197 / 17430
離線
大大您好:
你可否先寫一些簡單的組語指令,例如:MOVLW、MOVWF 等等先組譯看會不會過,然後再解決 banksel ,也許切頁可以用 C 來寫,但要驗證是否真有改變資料。

2008/09/24 09:48
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
初級會員
註冊日期:
2008/08/22 10:53
所屬群組:
註冊會員
文章: 27
等級: 3; EXP: 93
HP : 0 / 73
MP : 9 / 1893
離線
PSIR大您好, 我有試著MOVLW、MOVWF 這類指令是可以編譯不會有錯,aa也可以看到我寫入的值0x43!!下一步,切頁可以用 C 來寫,該怎麼做??請大大指點

#asm

movlw 0x43;
movwf _aa;
#endasm

2008/09/24 10:05
轉換PDF檔 列印



(1) 2 »



無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
線上教學影片
網頁捷徑
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project