#include "GLOBAL.C"
void SystemInit();
int Timer1Init();
void KickDog();
main()
{
SystemInit(); //系统初始化
MCRC=MCRC & 0xFF00; //IOPE0-7设为IO口模式
PEDATDIR=0xFF00; //所有LED=0,
Timer1Init(); //定时器初始化
asm(" CLRC INTM ");
T1CON=T1CON|0x0040;
while(1);
}
void SystemInit()
{
asm(" SETC INTM "); /* 关闭总中断 */
asm(" SETC SXM "); /* 禁止符号位扩展 */
asm(" CLRC CNF "); /* B0块映射为 on-chip DARAM*/
asm(" CLRC OVM "); /* 累加器结果正常溢出*/
// SCSR1=0x83FE; /* 系统时钟CLKOUT=20*2=40M */
/* 打开ADC,EVA,EVB,CAN和SCI的时钟,系统时钟CLKOUT=40M */
SCSR1=0x81FE;
WDCR=0x0e8; /* 禁止看门狗,看门狗时钟64分频 */
IMR=0x0002; /* 打开中断1,2*/
IFR=0xFFFF; /* 清除中断标志 */
WSGR=0x00; //等待状态发生控制寄存器设置为0,禁止所有等待状态
}
int Timer1Init()
{
EVAIMRA=EVAIMRA|0x0080; //定时器1周期中断使能
EVAIFRA=EVAIFRA&0x0080;
T1CON=0x160c;
T1PR=2500;
// T1PR=0x0177; //定时器1初值,定时0.4us*2500=1ms
T1CNT=0;
}
void interrupt c_int2() //定时器1中断服务程序
{
int flag;
flag=EVAIFRA&0X0080;
if(flag!=0x0080)
{
asm(" CLRC INTM ");
return;
}
/* if(PIVR!=0X27)
{
asm(" CLRC INTM ");
return;
}*/
T1CNT=0x00; //定时器1的计数寄存器清零
EVAIFRA=EVAIFRA&0x0080; //清除定时器1周期中断标志
PEDATDIR=0xfff0;
asm(" clrc INTM ");
return;
}
void KickDog() //踢除看门狗
{
WDKEY=0x5555;
WDKEY=0xAAAA;
} 我这定时器中断进不去 为什么 都查吐了
|