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