C51外部中断按键消抖问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 00:04:39
高手们指点一下,一般你们在使用外部中断时,那按键用什么方法消抖的.
瞧下这段程序:

void main(void) // 主程序
{
IT0=1; //外中断跳变产生中断
EX0=1;
EA=1; //打开总中断
while(1) //主程序循环
{
}
}
//外中断0
int0() interrupt 0
{
P10=0; //在中断里点亮LED
}
谢;谢.帮我瞧瞧是不是这样子的:
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include <at89x51.h> //包括一个52标准内核的头文件

sfr key=0xB0;
sbit LED = P1^0; //头文件中没有定义的IO就要自己来定义了
sbit k1= P3^2;

void delay10ms(void)
{
unsigned char i;
for(i=255;i>0;i--);
}

void main(void) // 主程序
{
P1=0xff;
IT0=1; //外中断跳变产生中断
EX0=1;
EA=1; //打开总中断

while(1) //主程序循环
{
delay10ms();
}
}

void int0() interrupt 0 using 1
{
if(k1!=1)
delay10ms();
if(k1!=1)
{

前面的人,你在说什么啊!无聊!
对于前面的键盘消除抖动的问题,一般我是这么解决的
比如你要读一个按钮,假使是P1_0吧
一般是

a=P1_0;
if(a==0)//表示按钮有按下
{
wait20ms(); //等待20ms
a=P1_0;
if(a==0){
//这里可以真正处理你的按钮代码了
}
}

反正中间需要等一段时间,再读一次,要两次都判断按钮按下了,才认为是真正的按下

用外部中断的话,原理也是一样的,多一段时间再去读一下外部管脚的状态,以确认按钮是否正确按下

对的,差不多就是这样子,对的!