作者Aquatics (小哈)
看板ASM
标题Re: [问题] 8051的外部中断 除弹跳问题
时间Sun May 16 11:46:14 2010
※ 引述《Jhih8051 ()》之铭言:
: void EX0(void) interrupt 0 using 1
: {
unsigned int Delay;
EX0 = 0;
Delay = 5000;
while(Delay--)
{
if(SW == 0)
{
Delay = 5000;
}
}
: cnt++;
IE0 = 0;
EX0 = 1;
: }
: 另外想请问,
: 中断旗标IE0是在进入中断就被清除 or 执行完中断副程式才清除?
进中断时IE0就会清掉(by hardware)
但若有残余弹跳,则IE0 又会被set
所以我的作法是,在离开中断程式前,手动清除IE0
反弹跳的Delay设定数值,跟你的频率与弹跳特性有关
: 又,在中断副程式执行过程中,
: 如果又发生中断,是否IE0也会被影响?
yes。所以中断程式要写得越短越好
: 看似是一个简单不过的问题,
: 但真的卡很久在这里了,
: 要麻烦各位高手帮忙 > <"
--
※ 编辑: Aquatics 来自: 219.85.2.249 (05/16 11:47)
※ 编辑: Aquatics 来自: 219.85.2.249 (05/16 11:47)
1F:推 Jhih8051:频率是指震荡器频率吗@@? 05/16 13:33
2F:→ Aquatics:yes 05/16 20:26
3F:→ ksmrt0123:基本上在isr中用loop delay是不好的习惯 05/16 21:02
4F:推 WolfLord:真的非用INT当输入的话,可以INT ISR一进入就把中断除能 05/17 14:54
5F:→ WolfLord:然後ISR内启动计时器50MS後在致能中断。这样就不会弹跳了 05/17 14:55
6F:→ ruemann:加个电容就好了 05/17 22:17
7F:推 WolfLord:一颗电容要一块钱,人家闲贵唒 f^^;; 05/18 01:54
8F:推 kdjf:电容要用多大的? 我看书下很多用1uf 这样就够了吗? 05/30 11:24
9F:→ kdjf: 上 05/30 11:24