小弟在调试CAN通讯时发现不能进入中断程序,后编写TIMER1 中断程序也没能进入中断, 软件:cc'c2000, 下面附上我的程序和完整工程,请各位过路高人指点迷途,谢谢! /*向量表*/ .ref _nothing .ref _c_int0 .ref _c_int2 .sect ".vectors" RSVECT B _c_int0 INT1 B _nothing INT2 B _c_int2 INT3 B _nothing INT4 B _nothing INT5 B _nothing INT6 B _nothing /* C程序*/ #include "240x_c.h"
int flag ; int flagmain ; unsigned int k=0,j=0; /* 主程序和中断程序中计数*/ void inline disable() { asm( " setc INTM " ) ; }
void inline enable() { asm( " clrc INTM " ) ; } /* system initial */ initial() { asm( " setc SXM " ) ; asm( " clrc OVM " ) ; asm( " clrc CNF " ) ;
*SCSR1 = 0x00FE; /*CLKIN=6M,CLKOUT=24M,*SCSR1 = 0x81FE;,*/ *WDCR = 0x00E8 ;
*IMR = 0x0002; /*开,int2*/ *IFR = 0xFFFF; /*清除所有中断标志*/ }
/* timer1 initial */ int timer1int() { *EVAIMRA = *EVAIMRA | 0x0080 ; *EVAIFRA = *EVAIFRA & 0x0080 ; *T1CON = 0x160C ; *T1PR = 0x0177 ; *T1CNT = 0x0000 ;
} void interrupt c_int2() { k++; flag = *EVAIFRA & 0x0080 ; if (flag != 0x0080) { enable() ; return ; }
*T1CNT = 0x0000; *EVAIFRA = *EVAIFRA & 0x0080; enable() ;
}
void interrupt nothing() { enable() ; } main() { disable() ; initial() ; timer1int() ; enable() ; *T1CON = *T1CON | 0x0040 ; while(1) { j++; timer1int() ; *T1CON = T1CON | 0x0040 ; flagmain = *EVAIFRA ; flagmain = *EVAIFRA & 0x0080 ; if (flagmain == 0x0080) { enable() ;
}
} }
1YosnOsM.rar (43.27 KB)
|