[問題] 8051的外部中斷 除彈跳問題
各位高手好,
小弟最近在使用按鈕觸發8051外部中斷的時候,
碰到了彈跳問題,
以往都使用輪詢的方式,
例如:
sbit SW = P1^0;
if(SW == 0)
{
delay(); //避開按下去的彈跳現象
要作的動作;
while(SW == 0); //等待放開按鈕
delay(); //避開放開的彈跳現象
}
小弟之前使用此種方式,
在輪詢的情況下都可以除的還不錯,
現在為了改進效能,而使用外部中斷的方式,
但是將同樣的方式用在外部中斷的情況卻失敗了,
下面是我想做的一個測試,
就只是很簡單的按一次,計數變數就+1,如此來確認是否除彈跳,
不知道應該如何改進彈跳現象,
程式如下:
unsigned int cnt=0;
void main(void)
{
EA = 1;
ET0 = 1;
EX0 = 1;
while(1)
{
P2 = cnt;
}
}
void EX0(void) interrupt 0 using 1
{
cnt++;
}
另外想請問,
中斷旗標IE0是在進入中斷就被清除 or 執行完中斷副程式才清除?
又,在中斷副程式執行過程中,
如果又發生中斷,是否IE0也會被影響?
看似是一個簡單不過的問題,
但真的卡很久在這裡了,
要麻煩各位高手幫忙 > <"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.141.204
※ 編輯: Jhih8051 來自: 114.45.141.204 (05/15 20:34)
→
05/16 01:32, , 1F
05/16 01:32, 1F
→
05/16 01:33, , 2F
05/16 01:33, 2F
→
05/16 01:34, , 3F
05/16 01:34, 3F
→
05/16 01:35, , 4F
05/16 01:35, 4F
→
05/16 01:37, , 5F
05/16 01:37, 5F
→
05/16 13:21, , 6F
05/16 13:21, 6F
→
05/16 13:23, , 7F
05/16 13:23, 7F
→
05/16 13:23, , 8F
05/16 13:23, 8F
→
05/16 14:02, , 9F
05/16 14:02, 9F
→
05/16 14:03, , 10F
05/16 14:03, 10F
→
05/16 20:36, , 11F
05/16 20:36, 11F
→
05/16 20:37, , 12F
05/16 20:37, 12F
推
05/17 03:00, , 13F
05/17 03:00, 13F
→
05/17 03:00, , 14F
05/17 03:00, 14F
→
05/17 03:01, , 15F
05/17 03:01, 15F
→
05/17 14:18, , 16F
05/17 14:18, 16F
→
05/17 14:19, , 17F
05/17 14:19, 17F
推
05/17 14:24, , 18F
05/17 14:24, 18F
推
05/17 14:27, , 19F
05/17 14:27, 19F
推
05/17 18:43, , 20F
05/17 18:43, 20F
討論串 (同標題文章)
ASM 近期熱門文章
PTT數位生活區 即時熱門文章