标题:
请教中断的问题
[打印本页]
作者:
stonepop
时间:
2007-6-12 18:23
标题:
请教中断的问题
请帮我看一下
为什么程序进不了中断程序啊
谢谢了
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;
}
}
}
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0