当前位置:首页 > 技术心得 > 正文内容

两个IO 6按键

xjtudll14年前 (2012-12-15)技术心得14450

clip_image002

2IO6按键演示

分析

首先:IO1,IO2输出高电平

S1按下,IO2为低电平

S2按下,IO1为低电平

S3按下,IO1,IO2为0.7V(1N4148导通电压),还是低电平。

现在开始判别其他几个按键了:

1、IO1输出低电平,读IO2电平

① 如果IO2为低电平,此时应该是S4或者S6按下(S6按下时,IO2为0.7V,依旧是低电平)。

② 此时IO1输出高电平,IO2输出低电平,读IO1电平

当S4按下时,IO1为低电平。剩余的就只能是S6了。

2、IO1输出高电平,IO2输出低电平

读IO1,S5按下时,IO1为低电平。若IO1依旧为高电平,则是S6按下了。

按键扫描程序

unsigned char scan_key(void)

{

unsigned char keyval = 0;//无键,有键1~6

KEY_IO1 = 1;//释放总线

KEY_IO2 = 1;//释放总线

if (!KEY_IO1 && !KEY_IO2)

keyval = 3;//S3

else if (!KEY_IO1)

keyval = 2;//S2

else if (!KEY_IO2)

keyval = 1;//S1

else

{

//开始扫描,也要考虑小毛贼的问题~~~

KEY_IO1 = 0;//扫描

if (!KEY_IO2)

{

//这时不能立即判定S4/S6

KEY_IO1 = 1;//释放总线

KEY_IO2 = 0;//反向扫描

if (!KEY_IO1)

keyval = 4;//S4~~~

else

keyval = 6;//S6

}

else

{

//只能是S5了

KEY_IO1 = 1;//释放总线

KEY_IO2 = 0;//反向扫描

if (!KEY_IO1)

keyval = 5;//S5

//else keyval = 6;//S6//上面已判出了S6,这句是废话

}

KEY_IO1 = 1;//释放总线//已经释放~~~

KEY_IO2 = 1;//释放总线

}

return keyval;//返回键值0-无键,1~6-S1~S6键

}

流程图

clip_image003

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://www.xjtudll.cn/Exp/253/

分享给朋友:

“两个IO 6按键” 的相关文章

Xcode:failed to get the task for process XXX 解决办法

问题:     iOS真机调试程序,报如下错误信息:failed to get the task for process XXX 原因: 证书问题,project和target的证书都必须是开发证书,不能用分发证书。 解决方案:     p...

c#:Task不包含Task.Run

问题:“System.Threading.Tasks.Task”并不包含“Run”的定义 解决: 使用Net 4.5框架...

在水晶报表中使用Code128条形码

在水晶报表中使用Code128条形码

核心重点:字符串如果直接用code128字体显示,是无法扫描出来的。 1.将code128条码字体拷贝到C:\Windows\fonts下 2 .在水晶报表里的【字段资源管理器】的【公式字段】中新建一个公式字段例如我命名为Code128 3.在新建的字段单击鼠标右键 选择编辑 在报表自定义函数中新建...

C语言交换两个数

可能大家都认为交换两个数如此的简单,没必要写,没新意。例如,交换a和b两个数,教科书上一直这样写: temp=b; a=temp; b=a; 确实很简单。但是最近看到一段代码,觉得十分高超,是这样的: a^=b; b^=a; a^=b; 同样也是三句代码,但是却未...

DDS原理

DDS原理

DDS原理框图 假设时钟为2MHz,数据保持寄存器选择N Bit,在时钟驱动下,累加器输出结果S被反馈到累加器输入端B,B和A的数据被累加到S,下一个时钟脉冲又将S反馈到B,再次与A累加到S,下一个时钟脉冲又将S反馈到B,如此循环累加,实现按步进值,按时钟节拍循环累加,使得N Bit数据被徐循...

最流行网络英文潮语集合

btw(by the way):这个大多数人都会用,就是“顺便再说一句”的意思。g2g(got to go):要走了。原句是I've got to go。ttyl(talk to you later):下次再说。brb(be right back):很快回来。也就是I'll...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。