:::

論壇索引


Board index » All Posts (minusone)




Re: 中斷所使用的變數需加 volatile 的疑問
#1
版主
版主


Project Properties -> XC8 Global Options -> XC8 Compiler -> Option categories -> Optimizations

參照:

jhlarn wrote:
版主

看起來是因為 C compiler 在把程式最佳化時出現意外的結果
那在 C compiler 有無什麼設定, 可以不做這類的最佳化???

發表於: 9/9 8:45
頂部


Re: 中斷所使用的變數需加 volatile 的疑問
#2
版主
版主


volatile變數,就是在主程式以外,有可能會被改變值的變數。
所以,只要是在中斷程序中會被改值的變數,都應該把它宣告為volatile變數,否則可能C compiler在把程式最佳化時,會把一些絛件看起來一定不會成立的程序省略掉。
例如:
A = 1;
if (A==0)
{
LED = 1;
}
如果沒有把A宣告為volatile,則 if之後的所有程序都有可能會被移除。

另外,Special Function Register也有機會在不經過程式運行的情形下產生改變,所以,C compiler也會先行把它們宣告成volatile。

發表於: 9/8 10:24

Edited by Steven on 2020年09月08日 12:03:02
頂部


Re: CTMU 輸出恆流源,AD取樣電壓測試
#3
版主
版主


有線路圖嗎?傳上來看看。

發表於: 5/8 15:30
頂部


Re: 使用I2C Slave元件時的注意事項!價值數萬元的經驗!
版主
版主



發表於: 2010/5/10 21:02
頂部



(1) 2 3 4 ... 39 »



:::

Microchip連結

http://elearning.microchip.com.tw/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

課程 - 台北教育訓練中心
課程 - 新竹教育訓練中心
課程 - 高雄教育訓練中心
教育訓練中心介紹
購買 - 實驗工具
臺灣實驗板介紹與資源