这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 坤创E-Geek/天科大新电社 » 求助~独立按键k3改成k1不能用

共6条 1/1 1 跳转至

求助~独立按键k3改成k1不能用

菜鸟
2019-01-27 12:50:45     打赏
#include <reg52.h>
typedef unsigned int u16;	  
typedef unsigned char u8;
sbit k3=P3^2; 
sbit led=P2^0;	 
void delay(u16 i)
{
	while(i--);	
}
void Int0Init()
{
	
	IT0=1;
	EX0=1;	
	EA=1;	
}
void main()
{	
	Int0Init();  
	while(1);		
}
void Int0()	interrupt 0		
{
	delay(1000);	 
	if(k3==0)
	{
		led=~led;
	}
}

用k3独立按键中断,可我把k3改为k1=P3^0就不行了,

我猜是不是p3.0和某些端口重复就冲突了

blob.png



高工
2019-01-27 16:01:07     打赏
2楼
并不是P3.0冲突了,你用P3.2口时的程序是利用了P3.2的复用功能外部中断,但是P3.0口的复用功能并不是外部中断,所以不行,你改成P3.0之后可以同时按下P3.0和P3.2就可以触发P3.2外部中断的同时检测按键P3.0,达到led反转的效果

高工
2019-01-27 16:25:33     打赏
3楼

你也可以单独使用P30口,不用加中断,直接进行消抖,判断,就可以使用。建议你看一看管脚的复用功能。


菜鸟
2019-01-27 16:41:47     打赏
4楼

解释上面都已经有了,就不再详述了,但有一个建议:

不要使用外部中断响应按键进行消抖,不然可以用的按键太少。

可以选择使用普通的延时消抖,

如果你追求精准无误的话,那就用定时器消抖。



管理员
2019-01-28 09:32:43     打赏
5楼

谢谢楼主分享


助工
2019-01-28 16:27:21     打赏
6楼

慢慢写一个比较完美的模块化独立按键函数,以后再用独立按键的时候稍微更改就可以移植了。能节省很多时间,出错几率会很低


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]