|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請問在C51中,中斷函數(shù)中的變量是否為全局變量? |
| 作者:jlspwtg 欄目:單片機 |
請問在C51中,中斷函數(shù)中的變量是否為全局變量?如果是怎樣才可以做到可以釋放的局部變量?還有在不同中斷中變量重名時是否會有影響 ?在此感謝關(guān)注此貼的同行們! |
| 2樓: | >>參與討論 |
| 作者: prengui 于 2005/1/23 14:16:00 發(fā)布:
問題好象不清楚也? |
|
| 3樓: | >>參與討論 |
| 作者: AIRWILL 于 2005/1/23 16:37:00 發(fā)布:
中斷函數(shù)中的變量和其它函數(shù)是一樣的 可以使用全局變量,也可以使用局部變量。 如果是局部變量,在不同中斷中變量重名時是不會有影響的。 |
|
| 4樓: | >>參與討論 |
| 作者: 12864 于 2005/1/23 17:27:00 發(fā)布:
可能中斷里的局部變量就相當于全局? 如果定義在寄存器還好,如果定義在了其他data區(qū),恐怕中斷服務(wù)程序并不保護吧。 |
|
| 5樓: | >>參與討論 |
| 作者: 楊工 于 2005/1/24 1:12:00 發(fā)布:
局部變量就是局部變量 只不過實現(xiàn)方法不同。PC機上的C把局部變量放在堆棧里。 而51沒有堆棧指針,無法訪問堆棧。C51編譯程序檢查所有的局部變量和所有函數(shù)的調(diào)用樹,把它認為不會沖突的局部變量共用一個RAM地址,局部變量重名不會沖突,不論中斷函數(shù)還是一般函數(shù)。可以編一個試驗程序驗證一下:增加一個非嵌套的函數(shù)RAM并不增加。這個工作在匯編里是程序員手工做的(變量多一點內(nèi)存就非常緊張),這也是選擇C語言的原因之一。 |
|
| 6樓: | >>參與討論 |
| 作者: yangtse 于 2005/1/24 15:01:00 發(fā)布:
簡言之,在中斷服務(wù)函數(shù)內(nèi)定義的變量是局部變量 否則,是全局變量。 |
|
| 7樓: | >>參與討論 |
| 作者: jlspwtg 于 2005/1/24 15:02:00 發(fā)布:
如果中斷函數(shù)中使用局部變量,那么局部變量的值是否受保護呢? |
|
| 8樓: | >>參與討論 |
| 作者: 新手 于 2005/1/25 8:14:00 發(fā)布:
定義靜態(tài)局部變量同樣可以受到保護 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |