使用74HC08做外部中断解决按键响应迟钝的方法含源码---day6

74HC08做外部中断实现按键快速响应的方法—day6

74HC08管脚图如下所示:
在这里插入图片描述
四组与门输入。
在这里插入图片描述
在这里插入图片描述
其真值表如下图所示:
在这里插入图片描述
Y1=1A&1B
Y2=2A&2B
Y3=3A&3B
Y4=4A&4B

硬件电路如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上述实现逻辑:
当SW17按下时 3Y=1Y&2Y=1B&1A&2B&2A
当有按键按下时P32通过外部中断0下降沿方式判断当前是哪个按键按下的,解决软件中延时较多造成按键反应迟钝的问题。挺好用的,哈哈哈,但是有点浪费了,但是效果挺好的。
实现代码如下:

#include <reg51.h>
void Dire_Inte_Fu() interrupt 0 using 0 		//51单片机外部中断0使用的是interrupt  0  产生中断信号
{  
        if(P2 != 0XFF)  					//如果P2端口有按键按下
		 {
		     if(0xf7 == P2)					//判断当前是哪一个按键按下
			 {
			     ucDataKey[0] = 0x01;		//使能信号灯
			 }
			 else if(0XFB == P2)			//判断当前是哪一个按键按下
			 {
			      ucDataKey[0] = 0x02;
			 }
			 else if(0XFD == P2)		//判断当前是哪一个按键按下
			 {
			      ucDataKey[0] = 0x04;
			 }
			 else if(0XFE == P2)			//判断当前是哪一个按键按下
			 {
			      ucDataKey[0] = 0x08;
			 }
		 }
		 SendData(ucDataKey[0], 0x00); 	    	
}
void Init_Fun()
{
    SendData(0x00, 0x00); 
}
void main(void)
{
    /*uchar Key_Value,Key1,Key2,Key3,Key4; 
    uint count = 0;	 */
    P2 = 0xff;
	//SendData(0X00, 0x00); 
   
    EX0 = 1; //开外部中断0
	IT0 = 1; //使用下降沿中断
	EA = 1;	 //开总中断	
	Init_Fun();
    for(;;)	  //while(1){}
    {   
	     Delay1ms(2000);
        
		 Delay1ms(2000);	 	   
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从小白到大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值