使用ZLG7290时遇到问题,<br />发现片子很不稳定<br />开机10s内片子正常工作<br />用查询方式读键值可用,10s后按任意键无反映<br /><br />现在打算用外部中断3进行中断处理,发现在外部中断3服务程序中读键值无效,<br />于是用key_int做标志位,进入外部中断3后key_int置位,再返回程序处理,也读不出键值···程序如下<br /> while(ok)<br /> {<br /> if(key_int)<br /> {<br /> key_value = 0;<br /> key_value = ZLG7290_GETKEY();<br /> key_int = 0;<br /> }<br /> <br /> //key_value = 0;<br /> //key_value = ZLG7290_GETKEY();<br /> switch(key_value)<br /> {<br /> case 1:<br /> disp_num = ZLG7290_KEYLEFT(disp_num);<br /> break;<br /> case 2:<br /> ZLG7290_KEYUP(disp_num, disp_data); <br /> break;<br /> case 3:<br /> le_num = ZLG7290_LEVELMODE(le_num);<br /> break;<br /> case 4:<br /> ZLG7290_MODEOK(le_num, le_data, disp_data);<br /> break; <br /> case 5:<br /> ok = ZLG7290_OK(ok);<br /> break;<br /> default:<br /> break;<br /> }<br /> }<br /><br />void __irq IRQ_EINT3(void)<br />{<br /> uint32 i;<br /> i = IO0SET;<br /> if((i & BEEPCON)==0)<br /> {<br /> IO0SET = BEEPCON;<br /> }<br /> else<br /> {<br /> IO0CLR = BEEPCON;<br /> }<br /> //DelayNS(20);<br /> //key_int = ZLG7290_GETKEY();<br /> key_int = 1;<br /> while((EXTINT&1<<3)!=0)<br /> {<br /> EXTINT = 1<<3;<br /> }<br /> VICVectAddr = 0;<br />} |
|