[ZLG-MCU] 请问,如何在外部中断时读取ZLG7290键值

[复制链接]
2881|0
 楼主| terance 发表于 2007-6-1 10:20 | 显示全部楼层 |阅读模式
使用ZLG7290时遇到问题,<br />发现片子很不稳定<br />开机10s内片子正常工作<br />用查询方式读键值可用,10s后按任意键无反映<br /><br />现在打算用外部中断3进行中断处理,发现在外部中断3服务程序中读键值无效,<br />于是用key_int做标志位,进入外部中断3后key_int置位,再返回程序处理,也读不出键值···程序如下<br />&nbsp;while(ok)<br />&nbsp;{<br />&nbsp;&nbsp;if(key_int)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;key_value&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;key_value&nbsp;=&nbsp;ZLG7290_GETKEY();<br />&nbsp;&nbsp;&nbsp;key_int&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;//key_value&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;//key_value&nbsp;=&nbsp;ZLG7290_GETKEY();<br />&nbsp;&nbsp;switch(key_value)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;1:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_num&nbsp;=&nbsp;ZLG7290_KEYLEFT(disp_num);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;2:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZLG7290_KEYUP(disp_num,&nbsp;disp_data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;3:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;le_num&nbsp;=&nbsp;ZLG7290_LEVELMODE(le_num);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;4:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZLG7290_MODEOK(le_num,&nbsp;le_data,&nbsp;disp_data);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;5:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok&nbsp;=&nbsp;ZLG7290_OK(ok);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br /><br />void&nbsp;__irq&nbsp;IRQ_EINT3(void)<br />{<br />&nbsp;uint32&nbsp;i;<br />&nbsp;i&nbsp;=&nbsp;IO0SET;<br />&nbsp;if((i&nbsp;&&nbsp;BEEPCON)==0)<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;BEEPCON;<br />&nbsp;}<br />&nbsp;else<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;BEEPCON;<br />&nbsp;}<br />&nbsp;//DelayNS(20);<br />&nbsp;//key_int&nbsp;=&nbsp;ZLG7290_GETKEY();<br />&nbsp;key_int&nbsp;=&nbsp;1;<br />&nbsp;while((EXTINT&1&lt&lt3)!=0)<br />&nbsp;{<br />&nbsp;&nbsp;EXTINT&nbsp;=&nbsp;1&lt&lt3;<br />&nbsp;}<br />&nbsp;VICVectAddr&nbsp;=&nbsp;0;<br />}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

35

帖子

0

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