找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6527|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机 按键 外部中断

[复制链接]
跳转到指定楼层
楼主
ID:80436 发表于 2015-5-22 01:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  额 好久没搞单片机,临近期末得复习了,还有二级也近了,杯具ing
  进入单片机学习的中断

当用外部中断的方法实现按键的检测时,由于存在按键抖动,这样我们在按下按键时,会出现多次进入中断的现象,最好的解决办法是在程序中我们进行相应的处理:
l void int_key() interrupt 0//外部中断1服务程序
{
EX0=0;//关外部中断1
delay_ms(100);
if(s1==0) //s1是外部中断对应的IO口
{
s1_num++; //这里是用户自己编写的程序
s1_num%=4;//这里是用户自己编写的程序
di();//这里是用户自己编写的程序
}
while(!s1);
EX0=1;//开外部中断
}
delay_ms(100)if(s1==0)是必需要有的,延时是为了消抖,if(s1==0)是为了看看延时后是否还为低电平,如果还为低电平那确实是按下按键了,并且这样可以有效地做到一次按键只进入一次中断,当然delay_ms(100)这个延时时间不能太长,否则正常的按键也会在延时后,因为时间太长手已经松开变为高电平,而判断错误。这个中断是下降沿触发。



[url=]
[/url]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:66287 发表于 2015-5-22 11:05 | 只看该作者
在中断里运行用户程序不行吧?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表