會員登陸
帳號:

密碼:

記住我



忘記密碼?

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


正在流覽:   1 名訪客



« 1 (2)


Re: 請問C語言中如何加入組語??
資深會員
註冊日期:
2006/04/17 11:12
所屬群組:
註冊會員
文章: 593
等級: 22; EXP: 32
HP : 0 / 533
MP : 197 / 17669
離線
大大您好:
我看您的函數好像是想完成一個對 EEPROM 的寫入是嗎?
這個動作其實可以不用組合語言寫,用C語言也可以完成,
你可以看 16f883 的 DATA SHEET 裡面關於 EEPROM 的部分,
裡面有一段 EEPROM 的範例程式,照著改成 C 就可以了,試試看。

切 BANK 的話,我沒有用過 banksel 這種指令,
因為 16F 控制切 BANK 是在 STATUS 暫存器的 RP1,RP0這兩個位元在選擇,
所以像這樣寫:RP1=0; RP0=1; 就可以切 BANK 了,
不過用 C 的話都會自己切,除非你有發現資料沒變化時才需要強制切
BANK。

有錯的話煩請版大指正,謝謝。

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


Re: 請問C語言中如何加入組語??
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14049
等級: 72; EXP: 35
HP : 1070 / 1783
MP : 4683 / 69353
離線
banksel 是 MPASM 組譯器專用的虛指令,這種指令不會支援到 這種指令不會支援到 In-Line Assembly 裡的。你必須用 BSF _STATUS,5
或 BCF 得方式直接設定 BANK.
在 in-line assembly 裡切換 BNAK 要小心回去 C 程式的 BANK ㄧ般的做法是先儲存 C 得 BANK 資料後再切換 BANK 回到 C 前再 restore BANK 資料。

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


Re: 請問C語言中如何加入組語??
初級會員
註冊日期:
2008/08/22 10:53
所屬群組:
註冊會員
文章: 27
等級: 3; EXP: 93
HP : 0 / 73
MP : 9 / 1926
離線
PSIR大,小弟試過用C寫沒結果,改用組語就沒問題所以會在程式中加入組語就是這原因!!仍然很感謝PSIR大的指點!~


請問板大,板大的所言,"儲存 C 得 BANK 資料後再切換 ,BANK 回到 C 前再 restore BANK 資料。"是什麼意思??是存STATUS的值嗎??那如果是BANKSEL EEADDR,BANKSEL後面是佔存器的話,又該怎麼做??小弟資質不好,還請板大詳加說明.

2008/09/24 11:53

fbs1107 於 2008年09月24日 13:50:30
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14049
等級: 72; EXP: 35
HP : 1070 / 1783
MP : 4683 / 69353
離線
PIC16F 有四個 Bank,C 在執行時可能ㄧ直都使用 Bank0(假設是這樣的,單然也會在其他的 BANK),在組語裡你硬切到別的 BANK 去處理再回到 C 時 BANK 會有錯誤的可能,保險起見還是先將 STATUS 存起了再說。

2008/09/25 13:39
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
初級會員
註冊日期:
2008/08/22 10:53
所屬群組:
註冊會員
文章: 27
等級: 3; EXP: 93
HP : 0 / 73
MP : 9 / 1926
離線
感謝阪大與PSIR大指導,小弟我真的是獲益良多!!
再此獻上十二萬分的感謝!! m(_._)m

2008/09/26 08:51
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
資深會員
註冊日期:
2006/04/17 11:12
所屬群組:
註冊會員
文章: 593
等級: 22; EXP: 32
HP : 0 / 533
MP : 197 / 17669
離線
大大不敢當,很遺憾能力不夠幫不了忙,祝你早日解決問題。

2008/09/26 09:20
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
新會員
註冊日期:
2009/08/29 11:42
所屬群組:
註冊會員
文章: 7
等級: 1; EXP: 60
HP : 0 / 15
MP : 2 / 351
離線
感觉 asm(“rrf _aa,f”),中的变量aa要定义成全局的静态变量才编译通过的样子,可是这么回事!???

2010/12/15 18:18
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14049
等級: 72; EXP: 35
HP : 1070 / 1783
MP : 4683 / 69353
離線
這是 In-Line assembly 的限制,組語用的變數必須是 unsigned char, 且為Global Varibal。Local Variable 無法被In-Line Assembly 看到。

2010/12/17 13:29
轉換PDF檔 列印


Re: 請問C語言中如何加入組語??
新會員
註冊日期:
2016/12/05 11:45
所屬群組:
註冊會員
文章: 9
等級: 1; EXP: 86
HP : 0 / 21
MP : 3 / 44
離線
引用:

Ryang 寫道:

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 結束
使用的周邊名稱要在前面加上 _ 。



用 #asm & #endasm, 目前的 X16 跟本無法用, 會產生語法錯誤的訊息, 必須要用如下的語法才可以正常編譯成功
asm ("NOP");

2月10日 17:56:17
轉換PDF檔 列印



« 1 (2)



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

[進階搜尋]


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