做一个键盘程序

[复制链接]
 楼主| 小小学者 发表于 2007-3-16 15:02 | 显示全部楼层 |阅读模式
我想做一个键盘控制程序运行,只有4个键位,用4个I/O口怎么实现,比较精确的按键接收,我做出来之后,在按键时总是连按好几下才能出现反应,也有时按一下就执行好多次,有哪们大哥哥给执点&nbsp;一下,有C编写。<br />我写和程序是:<br />DDRA=0X00;<br /><br />void&nbsp;judge_input2()<br />{<br />unint&nbsp;i;<br />if(!(&nbsp;PINA&nbsp;&&nbsp;0X02))<br />{<br />&nbsp;&nbsp;for(i=0;i&lt4;i++);<br />&nbsp;&nbsp;if(color&lt5)<br />&nbsp;&nbsp;&nbsp;color++;<br />&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;color=0;<br />}<br />if(!(PINA&nbsp;&&nbsp;0X04))<br />{<br />&nbsp;&nbsp;for(i=0;i&lt4;i++);<br />&nbsp;&nbsp;if(mode&lt5)<br />&nbsp;&nbsp;&nbsp;mode++;<br />&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;mode=0;<br />}<br />if(!(PINA&nbsp;&&nbsp;0X08))<br />{<br />&nbsp;&nbsp;for(i=0;i&lt4;i++);<br />&nbsp;&nbsp;if(brt&lt32)<br />&nbsp;&nbsp;&nbsp;brt+=8;<br />&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;brt=8;<br />}<br />}<br />
mic1984 发表于 2007-3-16 17:10 | 显示全部楼层

给一个

/*****************************<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NAME:&nbsp;KEYS.C<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATA:2006/06/02<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mic&nbsp;Studio<br />*****************************/<br /><br />#include&nbsp;&quot;KEYS.H&quot;<br /><br /><br />//---------------------------------------------------------------------------<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;延时函数<br />//-------------------------------------------------------------------------<br />void&nbsp;delay(void)<br />{unsigned&nbsp;char&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt200;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{;}<br />}<br />//------------------------------------------------------------------------------<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;初始化函数<br />//-----------------------------------------------------------------------------<br />void&nbsp;initial_KEYS(void)<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P74OUT=0x0c;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//P5口为推挽工作状态<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XBR0=0X00;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XBR1=0X00;<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XBR2=0X40;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//---关闭看门狗,否则看门狗会使单片机不断自动复位,使程序重复运行,显示不断闪烁----<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EA=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WDTCN=0XDE;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WDTCN=0XAD;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EA=1;<br />}<br />//-------------------------------------------------------------------------------<br />//-------------------------------------------------------------------------------<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;键盘扫描函数<br />//----------------------------------------------------------------------------------<br />unsigned&nbsp;char&nbsp;keyboard(void)<br />{&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;key;<br />&nbsp;&nbsp;&nbsp;&nbsp;P5=0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;if(P5!=0XFF)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{delay();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//消抖<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(P5!=0xff)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key=P5;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;key;<br />}<br /><br /><br />
mic1984 发表于 2007-3-16 17:12 | 显示全部楼层

你把初始化函数部分去掉,只参照最后哟部分就行了,你的问题一般是出在延时上。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

23

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部