首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教中断的问题

请教中断的问题

请帮我看一下
为什么程序进不了中断程序啊
谢谢了


void InitClock(void)
{
SYNR=0x02; /*PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)*/
REFDV=0x01;
FCLKDIV=0x31;
ECLKDIV=0x31;
while(!(CRGFLG&0x08))
{ }/*等待时钟频率稳定*/
CLKSEL=0x80;/*PLL Enable*/
}

void TimeInterrupt_Init(void)/*实现输出比较定时,定时的时间分别为3ms(高),30ms(中),50ms(低); */
{TIOS&=0x07;/*通道0,1,2设置为输出比较通道*/
TC0=562;/*载入输出比较初始值*/
TC1=5625;
TC2=9375;
TIE&=0x07;/*通道0,1,2溢出中断使能*/
TSCR2&=0x87;/*外部中断使能,时钟为128分频*/
TFLG1=0xff; /*写1清除标志,其实是让寄存器中的值变成0*/
TSCR1&=0x80;/*Timer Enable*/
}

#pragma CODE_SEG NON_BANKED
interrupt void TimeInterrupt0(void)
{
DisableInterrupts; //关中断
TFLG1|=0x01; //清标志位
EnableInterrupts; //开中断以便允许高级中断发生
PORTA_BIT0=~PORTB_BIT0;
TC0+=562;
i++;
}
#pragma CODE_SEG DEFAULT

#pragma CODE_SEG NON_BANKED
interrupt void TimeInterrupt1(void)
{
DisableInterrupts; //关中断
TFLG1|=0x02; //清标志位
EnableInterrupts; //开中断以便允许高级中断发生
PORTA_BIT1=~PORTB_BIT1;
TC0+=5620;
}
#pragma CODE_SEG DEFAULT

#pragma CODE_SEG NON_BANKED
interrupt void TimeInterrupt2(void)
{
DisableInterrupts; //关中断
TFLG1|=0x04; //清标志位
EnableInterrupts; //开中断以便允许高级中断发生
PORTA_BIT2=~PORTB_BIT2;
TC0+=9375;
}
#pragma CODE_SEG DEFAULT

void main(void)
{
DisableInterrupts;
InitClock();
DDRA =0xff;
PORTA=0x00;
DDRB =0xff;
PORTB=0x00;
i=0;
TimeInterrupt_Init();
for(;;)
{EnableInterrupts;
if(i>=200){
i=0;
PORTB=~PORTB;
}
}

}
返回列表