線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2448
推到 Plurk!
推到 Facebook!

請問一個中斷程式的問題...(C語言)

答題得分者是:bernie_w39
loveforme
一般會員


發表:22
回覆:39
積分:22
註冊:2009-03-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-03-24 23:19:07 IP:122.121.xxx.xxx 訂閱
小弟最近寫了一個小程式...
程式裡有兩個中斷函數一個計時中斷每震盪50次中斷一次,
另一個是INT0 中斷...
其中有一個變數A ,我在X.H中 宣告為 static unsigned int A;
而另外兩個中斷的函數各別為Y.C 跟 Z.C 的程式碼裡,
且這兩個C檔案都include "X.H"
我需要程式的功能是...計時中斷時每次A 1
然後等INT0中斷的時候,A再拿來做計算...
可是我每次debug的時候...兩個中斷的中的A變數 好像不一樣...
每次計時中斷跑完,等INT0中斷的時候...A 都沒有改變!
但是跳回去計時中斷的時候A又繼續增加....
請問有沒有大大可以幫我解惑一下...
bernie_w39
資深會員


發表:3
回覆:199
積分:280
註冊:2007-10-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-03-24 23:27:01 IP:118.166.xxx.xxx 訂閱
因為你宣告為 static, 所以在 y.c 及 z.c 中, A 是兩個獨立無關的變數.

你應該在 x.h 中宣告為 external unsigned int A;

然後在 y.c 或 z.c 中的一支, 定義 unsigned int A;
loveforme
一般會員


發表:22
回覆:39
積分:22
註冊:2009-03-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-03-24 23:41:48 IP:122.121.xxx.xxx 訂閱
挖  我成功了  大大 你好厲害喔...
可以請問一下...exturn 你這樣的用法的涵義是怎樣嗎??
為什麼...我先前的寫法跟你的結果會不一樣呢?
bernie_w39
資深會員


發表:3
回覆:199
積分:280
註冊:2007-10-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-03-25 21:52:45 IP:118.166.xxx.xxx 訂閱
global 變數用 static 修飾時, 表示這個 global 變數只有此一 module (單一 .c 檔) 使用,
如果與其它 module 的 global 變數恰巧同名, 要視為不同的變數.

而 global 變數用 extern 宣告時, 表示這個變數實體是存在別 module 中. 在此一 module
使用別的 module 所定義的 global 變數.

在你的 case 中, 是要兩個 module 共用一個變數. 所以應該用 extern 的宣告法.
系統時間:2024-04-23 18:17:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!