请各位大虾帮解释一下8279的中断处理程序取键值的问

[复制链接]
3091|0
 楼主| ccjchen 发表于 2007-5-21 13:55 | 显示全部楼层 |阅读模式
我将8279的 IRQ 引脚与89C52的INT1端相连,即用中断取得8279的按键值,然后在液晶lcd上根据不同的按键值显示不同的内容.但是我发现一个怪现象,那就是我发现当我某一键按下后,其他按键也获得了与这一按键同样的键值;也就是当有新的按键按下后,新的按键先执行一下之前按键的操作,然后才执行本按键的操作.这是什么原因引起的呢?以下是我的中断取键值的部分:<br />#define&nbsp;COM8279&nbsp;XBYTE[0x8401]//8279命令状态口<br />#define&nbsp;DAT8279&nbsp;XBYTE[0x8400]//8279数据口<br />void&nbsp;key()interrupt&nbsp;2&nbsp;using&nbsp;2<br />{<br />&nbsp;&nbsp;&nbsp;uchar&nbsp;kk,s;<br />&nbsp;&nbsp;&nbsp;COM8279=0xd1;//总清楚命令<br />&nbsp;&nbsp;&nbsp;do&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s=COM8279;<br />&nbsp;&nbsp;&nbsp;&nbsp;}while(s&0x80==1);//等待清楚结束<br />&nbsp;&nbsp;&nbsp;COM8279=0x00;//键盘显示方式<br />&nbsp;&nbsp;&nbsp;COM8279=0x2a;//时钟分频<br />&nbsp;&nbsp;&nbsp;kk=COM8279;<br />&nbsp;&nbsp;&nbsp;while&nbsp;(kk&0x0f==0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//无键按下等待<br />&nbsp;&nbsp;&nbsp;flag2=1;flag3=1;flag4=1;<br />}<br />void&nbsp;main(void)<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initlcm();//初始化lcd<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initmcu();//初始化mcu<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(;;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(100);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(flag2==1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag2=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COM8279=0x40;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读fifo&nbsp;ram&nbsp;命令<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m=DAT8279;m=m&0x3f;&nbsp;&nbsp;&nbsp;//取键盘数据低6位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dealkey();//键盘处理函数<br />}<br /><br />

相关帖子

您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

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