全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1542
推到 Plurk!
推到 Facebook!

8051之外部中斷問題

答題得分者是:src
aj002547
一般會員


發表:1
回覆:1
積分:0
註冊:2010-04-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-04-24 09:22:27 IP:140.128.xxx.xxx 未訂閱
各位版友大家好,

小弟再做專題時遇到一個問題因無法解決所以來上問問^^

動作:

INT0被觸發時經由RS232在終端機上顯示Coin;INT1被觸發時顯示Play。


狀況:

我寫完程式之後測試,INT0是可以正常動作的,

但是接著觸發INT1時卻會無動作,

且觸發INT1之後INT0會無法動作,

想請問各位版友是不是我的程式寫錯呢?


後來我有google一下關於外部中斷,有看到一個說法是INT1(13腳)要接一電阻(1K~10K)至vcc,

才能正常動作,請問這是正確的嗎?


[code c#]
#include
char *ptr;
static const char msg1[]={"Coin"};
static const char msg2[]={"Play!"};
void Delay(int dly_count)
{
while((dly_count--)!=0);
}
void int_UART(int BaudRate)
{
SCON=0X52;
TMOD=0X21;
TH1=256-(28800/BaudRate);
TR1=1;
}
static void PutCharUART(char c)
{
do{}while(!TI);
TI=0;
SBUF=c;
}
void TranStr(char *ptr) //傳送字串
{
while(*ptr!='\0')
{
PutCharUART(*ptr);
ptr;
}
}
void INT0_Set(void)
{
EA=1;
INT0=1;
IT0=1;
EX0=1;
}
void INT1_Set(void)
{
EA=1;
INT1=1;
IT1=1;
EX1=1;
}
void EXINT1(void) interrupt 1
{
TranStr(msg2);
Delay(200000);
ptr=0;
}
void EXINT0(void) interrupt 0
{
TranStr(msg1);
Delay(200000);
ptr=0;
}
void main()
{
INT0_Set();
INT1_Set();
int_UART(9600);
while(1);
}

[/code]


麻煩各位了 謝謝!
編輯記錄
aj002547 重新編輯於 2010-04-24 09:26:41, 註解 無‧
aj002547 重新編輯於 2010-04-24 09:30:01, 註解 無‧
aj002547 重新編輯於 2010-04-24 19:14:50, 註解 無‧
src
高階會員


發表:1
回覆:94
積分:154
註冊:2005-08-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-04-24 22:04:17 IP:125.226.xxx.xxx 訂閱
2
aj002547
一般會員


發表:1
回覆:1
積分:0
註冊:2010-04-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-04-26 15:23:06 IP:140.128.xxx.xxx 未訂閱
可以用了,謝謝您^^
系統時間:2024-04-25 19:43:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!