找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7153|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī) 按鍵 外部中斷

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:80436 發(fā)表于 2015-5-22 01:08 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  額 好久沒(méi)搞單片機(jī),臨近期末得復(fù)習(xí)了,還有二級(jí)也近了,杯具ing
  進(jìn)入單片機(jī)學(xué)習(xí)的中斷

當(dāng)用外部中斷的方法實(shí)現(xiàn)按鍵的檢測(cè)時(shí),由于存在按鍵抖動(dòng),這樣我們?cè)诎聪掳存I時(shí),會(huì)出現(xiàn)多次進(jìn)入中斷的現(xiàn)象,最好的解決辦法是在程序中我們進(jìn)行相應(yīng)的處理:
l void int_key() interrupt 0//外部中斷1服務(wù)程序
{
EX0=0;//關(guān)外部中斷1
delay_ms(100);
if(s1==0) //s1是外部中斷對(duì)應(yīng)的IO口
{
s1_num++; //這里是用戶(hù)自己編寫(xiě)的程序
s1_num%=4;//這里是用戶(hù)自己編寫(xiě)的程序
di();//這里是用戶(hù)自己編寫(xiě)的程序
}
while(!s1);
EX0=1;//開(kāi)外部中斷
}
delay_ms(100)if(s1==0)是必需要有的,延時(shí)是為了消抖,if(s1==0)是為了看看延時(shí)后是否還為低電平,如果還為低電平那確實(shí)是按下按鍵了,并且這樣可以有效地做到一次按鍵只進(jìn)入一次中斷,當(dāng)然delay_ms(100)這個(gè)延時(shí)時(shí)間不能太長(zhǎng),否則正常的按鍵也會(huì)在延時(shí)后,因?yàn)闀r(shí)間太長(zhǎng)手已經(jīng)松開(kāi)變?yōu)楦唠娖剑袛噱e(cuò)誤。這個(gè)中斷是下降沿觸發(fā)。



[url=]
[/url]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:66287 發(fā)表于 2015-5-22 11:05 | 只看該作者
在中斷里運(yùn)行用戶(hù)程序不行吧?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表