星期二, 4月 26, 2011

判別試 if else 簡寫

if ... else的簡寫如下


(condition)?statment1:statment2

condition 是條件式
statement1 是當條件成立時執行
statement2 是不成立時執行

星期三, 4月 20, 2011

[8051]如何存取一塊外部記憶體的變數 with keil

公司有一個案子用到某顆8051 core的MCU,而這案子裡頭,有可能因為一些事故而會斷電,而某些資料或狀態能不受到斷電的影响,上電後能保持這些資料繼續運作,而其中能夠保持資料不變的方式就是將資料定期存入ROM內,例如EEPROM或是Flash,因為這些記憶體不會因為斷電儲存的資料就消散掉。

而我這顆裡面就有一個flash,datasheet說要存取這塊flash資料必須透過XMOV語法來執行,這是組語的方式,那keil呢?

若是使用keil,在以下連結有些許的討論:
http://www.keil.com/forum/8501/

定義一個變數,該變數使用到外部記憶體
ex:

unsigned char xdata Ralph
whatever = Ralph;
"據說(我自己還沒試過@@)",這樣的寫法即實現了XMOV語法,在keil中可以這樣使用。

另外,外部記憶體也可以使用pointer,以下:

unsigned char xdata *p; //它表達的是,指向XDATA區域的指標,而指標變數自身存放在什麼地方沒有說明,那就交給編譯器.
unsigned char * xdata p;//這樣表達的是:指向CHAR資料型態的通用指標,這個指標存放在XDATA區中,但是​​,它指向什麼區域沒有聲名,它是一個通用指標,佔三個bytes.

星期二, 4月 12, 2011

[名詞解釋]debounce time

其實是就是延遲時間,使系統延時感應物理的變化,以防止抖動產生的影響。


例如一個機械式的開關,從一個off切換到on的時候,切換的瞬間,其物理狀態會有一小段電位high low不停跳動的時間(類似雜訊),而debounce time的大小,由這一小段時間來決定。


如內容有誤,煩請指正。

星期五, 4月 01, 2011

如何解決用VC++ 2008開發的 *.exe 在別台電腦不能運行的方法

一年前我用VC++寫了一支視窗程式,當我從開發這程式的PC拿到別台PC Run的時候,發現他會出現錯誤而不讓我執行,找不到解決辦法,我就放棄繼續做下去了。

後來在一次偶然,我發現如果在別台電腦先安裝"Microsoft .NET Framework 2.0",就可以跑我從VC++開發的程式了。


如果有同樣的事情發生,說不定是對方的電腦沒有先裝該程式而引起的。