智能车制作

标题: XS128的PITTF始终为1,不能清除 [打印本页]

作者: 卟棄    时间: 2014-3-25 03:43
标题: XS128的PITTF始终为1,不能清除
定时器和PIT中断标志位不能清除!!!只要一使能相应的定时器活着PIT中断相应的中断标志位就会置一,并且用过各种发放都清不掉??求大神解救啊!程序: void pit_init(INT8U CHNo,INT16U TIME,INT8U MICRO)
    {
        //禁止定时器
        PITCFLMT&=~(1<<7);
        // 使能PIT通道CHNo
        PITCE|=(1<<CHNo);
        // 选用8位模寄存器0产生的计数基准
        if(!MICRO)
           PITMUX&=~(1<<CHNo);// 选择微定时器0
        else
           PITMUX|=(1<<CHNo);//选择微定时器1     
        // 定时器一次中断时间 = (PITMTLD + 1) * (PITLD + 1) / fBUS
        //                    =(0xF4+1)*(0xFFFF+1)/32MHz≈0.5s  
        PITMTLD0=0x1F;                                   //8位模寄存器
        PITLD0=TIME-1;                                   //16位模寄存器
        // 使能定时器
        PITCFLMT|=(1<<7);   //执行到这句的时候PTF0就开始变成1了!!!
        // 清通道CHNo溢出标志,载入新的计时时间
        PITTF|=(1<<CHNo);

        // 禁止PIT通道0中断
        PITINTE&=~(1<<CHNo);
     }


void main()
{
      DISABLE_INTERRUPTS();
      MCUInit(FBUS_32M);//选择PLL锁相环为32MHz

      pit_init(PIT0,1000,0);//控制周期为1ms  
      ENABLE_INTERRUPTS();//使能总中断
      EnablePITInt(PIT0); //使能PIT通道pit0溢出中断,计时已经开始

}

    __interrupt void isr_pitch(void)
    {

       DISABLE_INTERRUPTS();
       PITCE_PCE0=0;//试过用PITTF=0X01也不能清
       ENABLE_INTERRUPTS();
       PITCE_PCE0=1;

    }





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2