Re: C18之 Swapf 問題
|
||||
---|---|---|---|---|
資深會員
|
>>是否C編譯器判斷PORTD是屬於BSR=0xF
>>所以C編譯器在MOVLB後面放0xF 基本上,是的. Swapf只是個define,一定會產生movlb指令,至於movlb指令是否能根據有作用才產生code,無作用不產生code,或許optimization最佳化,可以解決這問題(可惜,我的compiler不是Full function,無法試) #define Swapf(f,dest,access) {_asm movlb f swapf f,dest,access _endasm }
發表於: 2009/11/1 0:17
|
|||
|
Re: C18之 Swapf 問題
|
||||
---|---|---|---|---|
資深會員
|
你看到的是, asm反組譯,結果不會有PORTD出現
010F MOVLB 0xf 3A83 SWAPF 0xf83, F, ACCESS 就如樓上所述,詳情請看spec, 有關於 movlb的作用
發表於: 2009/10/30 12:52
|
|||
|
Re: dspic30f4011 外部震盪器與內部震盪器
|
||||
---|---|---|---|---|
資深會員
|
>>想詢問內部震盪器與外部震盪器有什麼差異呢?
對於"所有"MCU而言, 內部震盪器 優點: 1.可以節省cost(減少外部元件) 2.可增加IO腳 缺點: 1. 可選(內定)頻率有限. 2. 精準度問題(一般校正到+-1%) 3. 穩定度(頻率飄移) 如果以上"缺點",剛好是問題,那就一定要外部震盪器 >>如果不在乎精準度的話使用內部RC震盪器是否可以使電流量減少也減少使用元件量 電流量(耗電量)問題,可能也要跟程式架構配合. 如果你的程式,都不讓MCU sleep,(在相同的電路功能中) 肯定會比有sleep的程式來得耗電. 要更省電則一開始,就要選 deep sleep 的MCU, nanoWatt XLP Technology http://www.microchip.com/stellent/idc ... odeId=2628¶m=en540842
發表於: 2009/10/29 11:22
|
|||
|
Re: A\D轉換問題?
|
||||
---|---|---|---|---|
資深會員
|
nicecookie 大大所言:
>>4. 即使用了參考電壓,24V邊緣時,同樣問題仍然有可能發生, >>只是變的較不明顯因為,假設 電壓是23.99V, >>那你覺得該亮4個還是亮5個? 是的所有數位設備,都會有一個bit(以你的例子,而言就是會有一個LED) 誤差(跳動) 如果你的輸入電壓,是可調整的...你應該會看到某一個電壓值,會一下 多亮一個LED(5個),一下少一個LED(4個). (看看電表,也是這樣 量24V時, 24.0<-->23.9) 所以這應是架構設計問題...你應該要增加LED(才能增加解析度) (例: 亮4個LED,電壓是23.0V,23.5V,23.9V是不可知的,在加上誤差也有可能是22.95V或是24.0V) 及必要的穏定度及精密度(1%還是5%的零件誤差) 程式部份,這樣應該會簡單一點 if(adres>0xc1)//24v ... else if(adres>=0xbd)//23V~24V ... else if(adres>=0xb6)//22V~23V ... else if(adres>=0xad)//21V~22V ... else //低於21v ...
發表於: 2009/10/23 13:03
Edited by jason680 on 2009年10月23日 13:30:34
|
|||
|
Re: A\D轉換問題?
|
||||
---|---|---|---|---|
資深會員
|
>>用不同牌子的7805
>>在同樣的測量電壓(24V) >>會有不同的數值 這樣的說法太籠統了.... 就算同一個電路板...早上測,跟下午測也會有不同的數值..... 可以有更詳細的數據嗎?
發表於: 2009/10/15 19:22
|
|||
|
Re: C30 變數型別轉換問題
|
||||
---|---|---|---|---|
資深會員
|
順便一提.....
當你在要同時用一個int (16bits), 及二個 char (8bits, hi byte ,lo byte) 一般正規的做法是用union來做 union { unsigned int uiData; unsigned char HR[2]; } combin; bombin.uiData 與 bombin.HR[0], bombin.HR[1] 使用同一塊記億體.... 只是不知你的應用是什麼...
發表於: 2009/10/2 9:56
|
|||
|
Re: C30 變數型別轉換問題
|
||||
---|---|---|---|---|
資深會員
|
不介意的話,條條道路通羅馬....
uiData1 = (HR[1] <<8) + HR[0]; uiData2 = (HR[2] <<8) + HR[1];
發表於: 2009/10/1 17:54
|
|||
|
Re: C30 變數型別轉換問題
|
||||
---|---|---|---|---|
資深會員
|
如果是"變數型別"轉換
應該這樣就好了吧!!! uiData1 = (unsigned int)HR[0]; uiData2 = (unsigned int)HR[1]; 好像不轉也可以 uiData1 = HR[0];
發表於: 2009/9/30 19:03
|
|||
|
Re: 關於16f877a?無法顯示
|
||||
---|---|---|---|---|
資深會員
|
>>所以想請問哪行指令在說明輸入電壓(5V)後轉換
>>可以說明一下嗎? 這個吧!! (A2D副程式中)
ADGO = 1; // Initiate conversion on selected channel
發表於: 2009/9/30 10:44
|
|||
|