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

8051中斷後動作異常

答題得分者是:taishyang
van83619
一般會員


發表:4
回覆:7
積分:2
註冊:2012-10-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2014-04-25 22:35:44 IP:118.232.xxx.xxx 訂閱
各位大大好
小弟最近在做8051中斷控制的練習
用紅綠燈的誠是在額外加一個中斷控制
配置如圖(一)
中斷是INT0



下面三個端子的電路圖(二)
圖中PB的部分改成紅色電線另做控制

動作是
當中斷後假如是遇到 "直向綠燈 橫向紅燈"
則按下P1.0使燈號改成 "直向紅燈 橫向綠燈"

遇到"直向紅燈 橫向綠燈"
則按下P1.1使燈號改成"直向綠燈 橫向紅燈"

小弟遇到的問題是中斷後按下P1.0直向變為紅燈後紅燈又馬上跳掉
按下P1.1橫向變為紅燈後紅燈又馬上跳掉
下方網址影片為小弟所錄
http://youtu.be/p-_XW0Fyy6c
20秒開始中斷然後控制P1.0
30~32秒為所遇到的問題
40秒是第二次中斷然後控制P1.1
54~56為所遇到的問題

下面是我的程式碼
#pragma oe db pw(80) SM SB CD
#include
#define LED P0 //定義按鈕開關接至P1
void delay1ms(int) //宣告延遲函數
void debouncer(void) ; int i;
for(;;)
//左右向綠燈:前向紅燈
delay1ms(500) ;
}
for(i=0;i<4;i )
if((i&1)==1)
}
{
P0 = 0x11; }
// 左右向紅燈
for(i=0;i<10;i )
delay1ms(500) ; {
{
}
P0 = 0x0a;
delay1ms(1000) ;
}
interrupt 0 case 0x01: //P1.0
unsigned saveLED=LED;
P0 = 0x0a;
delay1ms(500) ; {
{
P0 = 0x08;
else
//左右向閃黃燈,前向綠燈
delay1ms(1000) ;
}
debouncer(); LED=saveLED;
break;
case 0x02: //P1.1
unsigned saveLED=LED;
P0=0x11;
for(i=0;i<10;i ) {
{
{
P0 = 0x01;
else
//左右向閃黃燈,前向綠燈
delay1ms(1000) ;
}
debouncer(); LED=saveLED;
}
}
}
// 延遲副程式 int a,b;
for(b=0;b<120;b );
}
//防彈跳副程式
void debouncer(void)
{
for(i=0;i<2400;i ) ;
}
編輯記錄
van83619 重新編輯於 2014-04-26 00:25:04, 註解 無‧
van83619 重新編輯於 2014-04-26 00:25:05, 註解 無‧
van83619 重新編輯於 2014-04-26 14:39:55, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2014-04-28 10:11:22 IP:60.251.xxx.xxx 訂閱
1.通常在中斷中不會使用delay
而是記錄狀態後回到主程式後依照紀錄的狀態改變行為

2.若程式RUN到delay1ms,此時發生中斷,中斷裡面又呼叫delay1ms,應該會出問題的

底層的原因同下面連結
http://delphi.ktop.com.tw/board.php?cid=173&fid=1167&tid=96734
若用C寫的話可以用關鍵字[using]避開同BANK R0~R7相衝的問題
編輯記錄
taishyang 重新編輯於 2014-04-28 10:25:24, 註解 無‧
taishyang 重新編輯於 2014-04-28 10:30:12, 註解 無‧
van83619
一般會員


發表:4
回覆:7
積分:2
註冊:2012-10-24

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