/*向量表*/
.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() ;
}
}
} 点击浏览该文件