音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

總理解不了中斷,前輩們請(qǐng)指教

作者:guohua3946 欄目:單片機(jī)
總理解不了中斷,前輩們請(qǐng)指教
學(xué)單片機(jī)一段時(shí)間了,總是不能透徹的理解中斷,哪位前輩能點(diǎn)撥一下。如下面有段很短的例程,怎么理解:(LED亮滅)
#include <reg52.h>
#include <absacc.h>
#define unit unsigned int
#define uCHAR unsigned CHAR

sbit L0=P2^0;
sbit L1=P2^1;
sbit L2=P2^2;
sbit L3=P2^3;

void delays(void)
{
uCHAR i;
for(i=300;i>0;i--);
}


void main(void)
{
P2=0x0f;                      // 初始化端口
EA=1; IT0=1; EX0=1;        // 初始化外中斷標(biāo)志位
while(1)
{
         delays();         // 鍵的消抖延時(shí)函數(shù)
}
}


/* 外中斷0的中斷服務(wù)子程序 */
void intersvr0(void)  interrupt 0 using 1
{
L3=!L3;                // 燈L3狀態(tài)取反
L2=!L2;                // 燈L2狀態(tài)取反
L1=!L1;                // 燈L1狀態(tài)取反
L0=!L0;                // 燈L0狀態(tài)取反
}

我這樣理解,在delays()中突然有中斷的話,怎么可能會(huì)起到消抖的作用呢(如果此時(shí)i--到只有幾個(gè)數(shù)時(shí),比如i=3時(shí)有中斷)?
另一種理解是,只要有中斷就進(jìn)中斷服務(wù)程序了,delays()程序與消抖沒(méi)有關(guān)系呀?``

2樓: >>參與討論
OHESE
要理解中斷我感覺(jué)匯編好點(diǎn)
用C好象有些模糊,看看高人怎么解,我以前看過(guò)點(diǎn)C感覺(jué)不具體,改了匯編,

3樓: >>參與討論
maychang
這么說(shuō)好理解
你正在看書(shū),來(lái)了個(gè)客人,你放下書(shū)與客人談話,這就是中斷。放下書(shū)之前你記了書(shū)的頁(yè)碼,這叫保護(hù)現(xiàn)場(chǎng)。正談著來(lái)了電話,你暫停談話去接電話,這叫中斷嵌套。放下電話繼續(xù)談,這叫中斷返回。

只要有中斷(但要滿足一些條件,例如已開(kāi)中斷)就進(jìn)中斷服務(wù)程序了,與被中斷的程序無(wú)關(guān)。


4樓: >>參與討論
hujunwan
delays()程序與消抖沒(méi)有關(guān)系
在while里面的程序與中斷程序沒(méi)有關(guān)系,如果要消除抖動(dòng)的話,請(qǐng)?jiān)谥袛喑绦蚶锩鎑elay(),再查詢以下外中斷的端口,如果有效就開(kāi)始相關(guān)的操作,否則認(rèn)為是抖動(dòng).

5樓: >>參與討論
mugenwon
消抖不是這樣的吧?
中斷顧名思義就是中斷。〞灢?)就是把當(dāng)前做的事停下,先干其他事。你的程序只要INT0腳一來(lái)負(fù)跳變,馬上會(huì)執(zhí)行intersvr0( ),執(zhí)行完后回到原來(lái)的地方。
當(dāng)然你這個(gè)程序很有意思,保證你的LED不聽(tīng)話,你自己試一下就知道了,然后你會(huì)明白怎樣消抖,中斷又是怎么樣的,哈哈!

6樓: >>參與討論
guohua3946
理解你的意思了
明白你的意思了,謝謝你,你說(shuō)的查詢一下外中斷的端口的意思是,再看一下端口是不是低電平,如果是就確認(rèn)中斷有效,如否的話,就認(rèn)為是抖動(dòng)?

7樓: >>參與討論
1dqmoon
樓主是拿int來(lái)做按鍵吧
這樣做理論是沒(méi)問(wèn)題,但如 mugenwon 所說(shuō),保證你的led不聽(tīng)話,那個(gè)delay不是消顫用的

8樓: >>參與討論
guohua3946
謝謝兩位大哥
你們說(shuō)的led不聽(tīng)話。是不是因?yàn)镮NT的抖動(dòng)。

9樓: >>參與討論
zhaoyu2005
設(shè)置錯(cuò)誤!
IT0為外部中斷0的觸發(fā)方式控制位。IT0=0,邊沿觸發(fā);IT0=1,電平觸發(fā);
只要INT0為低電平,就會(huì)反復(fù)進(jìn)入中斷,也就是說(shuō),你按一下按鍵,不知道要中斷多少下,當(dāng)然不能聽(tīng)話了

10樓: >>參與討論
ferry
樓上說(shuō)錯(cuò)了吧
IT0=0是低電平觸發(fā),IT0=1是邊沿觸發(fā)。

11樓: >>參與討論
sambie
用不著消抖呀,delay呀那么麻煩,只要在
中斷服務(wù)程序中disable這個(gè)中斷就行了。不管有多少抖動(dòng),INT0只執(zhí)行一次。當(dāng)然別忘了返回之前使能INT0

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
誰(shuí)可以共享RC500芯片的資料?????
示波器轉(zhuǎn)讓
急,有個(gè)超聲波測(cè)距項(xiàng)目,哪位可以幫幫我
初學(xué)單片機(jī)開(kāi)發(fā)從何下手。
pic單片機(jī)介紹[轉(zhuǎn)帖]
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)