我在主函数中有如下循环- while(1)
- {
- //if(last_select==5&&select==5)
- //{
- // select=10;
- //}
- //else
- //{
- switch(select)
- {
- case 0:Time_Show();break;
- case 1:Alarm_Sing();break;
- case 2:Mosquito_Drive();Delay(900);break;
- case 3:{
- IsMain=0;
-
- Lcd_ClearScr(0);
- for(i=0;i<5;i++)
- {
- Disp_Char(65+40*i,100,&dami_4040[600+200*i],40,40,(0<<11|0<<5|31),0);
- }
-
- rRTCCON&=~0x01;
- rRTCALM&=~0x7f;
- addr=0;
- while(1)
- {
- temp1=song2[addr++];
- temp2=song2[addr++];
- switch(temp1){
- case 01:freq=260;break;
- case 02:freq=294;break;
- case 03:freq=328;break;
- case 04:freq=347;break;
- case 05:freq=390;break;
- case 06:freq=438;break;
- case 07:freq=490;break;
-
- case 11:freq=520;break;
- case 12:freq=581;break;
- case 13:freq=657;break;
- case 14:freq=694;break;
- case 15:freq=781;break;
- case 16:freq=892;break;
- case 17:freq=1000;break;
-
- case 21:freq=1041;break;
- case 22:freq=1190;break;
- case 23:freq=1315;break;
- case 24:freq=1388;break;
- case 25:freq=1562;break;
- case 26:freq=1785;break;
- case 27:freq=1923;break;
- default:freq=0xffff;break;
- }
- Buzzer_Freq_Set(freq);
- if(temp2!=38)Delay(192*temp2);
- else break;
- }
- rGPBCON&=~(0x3);
- rGPBCON|=0x1;
- select=5;
- break;
- }
- case 4:Picture_Scan();break;
- case 5:rGPBCON&=~(0x3);rGPBCON|=0x1;Main_Menu_Show();Delay(900);break;
- // default:Error_Report();
- }
复制代码 该循环中的select用触摸屏中断控制
其他功能函数正常,只有当选择case 3时,会出现Dabort exception问题
另外,我曾经将case 3中的代码做成函数,但函数返回不了。
大家帮忙看看是什么问题,谢谢帮忙 |