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

共6条 1/1 1 跳转至

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

菜鸟
2019-01-27 12:50:45 打赏
#include  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 跳转至

回复

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