定时器中断变量混乱?
时间:10-02
整理:3721RD
点击:
定时器开中断 主函数执行子函数(中断打断),中断里局部变量突然为0?中断里代码:
ulong PC_S=0;
PC_S=rxpw4o1(dhb_wfhgTmp+2);读储存器,读正确。
//主函数调用drawImage() 这个函数(一边进入中断返回再执行drawImage() )
switch(PC_S){ 主函数执行drawImage(),这里PC_S会突然为0?
case 1: goto d1; break;
}
drawImage()代码如下:
ulong PC_S=0;
PC_S=rxpw4o1(dhb_wfhgTmp+2);读储存器,读正确。
//主函数调用drawImage() 这个函数(一边进入中断返回再执行drawImage() )
switch(PC_S){ 主函数执行drawImage(),这里PC_S会突然为0?
case 1: goto d1; break;
}
drawImage()代码如下:
- void drawImage() {
- uchar ialpha,r,g,b;
- uint fhv_Display_x=0,fhv_Display_y=0,dxih0=0,dyih0=0;
- int a=0,a2=-1,dxdw=0,dydh=0,ika=0;
- if((Image_da[0].dx+Image_da[0].dw<0)|(Image_da[0].dx>DisplayW)|(Image_da[0].dy+Image_da[0].dh<0)
- |Image_da[0].dy>DisplayH) return ;
- if(CetdSuf) CetdSufH=20; else CetdSufH=0;
- if(GlCetdSuf==0&Image_da[0].dy<CetdSufH) Image_da[0].dy+=CetdSufH;
- r=b_colorH & 0xf8;
- g=b_colorH <<5>>2;
- g|=b_colorL>>5;
- g<<=2;
- b=(b_colorL & 0x1f)<<3;
-
- dxdw=Image_da[0].dx+Image_da[0].dw;
- fhv_Display_x=dxdw-DisplayW;
- if(dxdw>DisplayW){
- Image_da[0].dx=DisplayW-Image_da[0].dw+fhv_Display_x;
- }else if(Image_da[0].dx<0){
- dxdw=Image_da[0].dx;
- Image_da[0].dx=0;
- }
- dydh=Image_da[0].dy+Image_da[0].dh;
- fhv_Display_y=dydh-DisplayH;
- if(dydh>DisplayH){
- Image_da[0].dy=DisplayH-Image_da[0].dh+fhv_Display_y;
- }else if(Image_da[0].dy<0){
- dydh=Image_da[0].dy;
- Image_da[0].dy=0;
- }
- add2=Image_da[0].spngadd;
- for(a=0;a<Image_da[0].dh;a++){
-
- if((dydh<0)&a<=abs(dydh)){
- if(Image_da[0].dn==0) add2+=Image_da[0].dw*3; else add2-=Image_da[0].dw*3;
- dyih0=a+1;
- continue;
- }else if(((dydh>DisplayH)&(a>=Image_da[0].dh-fhv_Display_y))|(Image_da[0].dy==DisplayH)){break;}
- for(ika=0;ika<Image_da[0].dw;ika++){
-
- if((a!=a2)&Image_da[0].dn==1){
- add2=Image_da[0].spngadd+Image_da[0].dw*3*(a+1);
- a2=a;
- }
- if(((dxdw>DisplayW)&(ika>=Image_da[0].dw-fhv_Display_x))|(Image_da[0].dx==DisplayW)){
- if(Image_da[0].dn==0) add2+=3; else add2-=3;
- continue;
- }else if((dxdw<0)&ika<=abs(dxdw)){
- if(Image_da[0].dn==0) add2+=3; else add2-=3;
- dxih0=ika+1;
- continue;
- }
- tmpxy=(ulong)(DisplayW*2*(Image_da[0].dy+(a-dyih0)))+(ulong)((Image_da[0].dx+(ika-dxih0))*2);
- if(Image_da[0].dn==0){
- cL=Rea_data(add2,0,0,1);
- add2++;
- ch=Rea_data(add2,0,0,1);
- add2++;
- ialpha=Rea_data(add2,0,0,1);
- add2++;
- }else{
- add2--;
- ialpha=Rea_data(add2,0,0,1);
- add2--;
- ch=Rea_data(add2,0,0,1);
- add2--;
- cL=Rea_data(add2,0,0,1);
- }
已解决!在关键位置关中断就好了!
