智能车制作

标题: 高手帮着看看,定时中断不进中断 [打印本页]

作者: pangyuo    时间: 2011-4-19 17:46
标题: 高手帮着看看,定时中断不进中断
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
unsigned int vTmpPIT=0;
#define PITTIME 50000//设定为500MS定时

void SetBusClock(void)
{   
    CLKSEL=0X00;      //disengage PLL to system
    PLLCTL_PLLON=1;   //turn on PLL
    SYNR=0xc0|0x02;            
    REFDV=0x80|0x01;             //pllclock=2*osc*(1+SYNR)/(1+REFDV)=48MHz;
    _asm(nop);        //BUS CLOCK=24M
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;          //engage PLL to system;
}
void Dly_ms(int ms)   //24M时为0.5ms
{
   int i,j;
   for(i=0;i<ms;i++)
     for(j=0;j<0x7ff;j++);   
}

void initPIT(void)//定时中断初始化函数50MS定时中断设置
{
    PITCFLMT_PITE=0;//定时中断通道0关
    PITCE_PCE0=1;//定时器通道0使能
    PITMTLD0=240-1;//8位定时器初值设定。240分频,在24MHzBusClock下,为0.1MHz。 即 10us.
    PITLD0=PITTIME-1;//16位定时器初值设定。PITTIME*0.01MS
    PITINTE_PINTE0=1;//定时器中断通道0中断使能
    PITCFLMT_PITE=1;//定时器通道0使能
}

void main(void)
{
   SetBusClock();
   initPIT();
     
   
   DDRB=0xff ;
  
    for(;;)
    {
      
    }  
}

#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0(void)
{
       vTmpPIT++;
       if(vTmpPIT==2)     // 定时1S
      {
        
                 Dly_ms(40);
               PORTB=~PORTB;//输出取反
               vTmpPIT=0;
               
       }
        PITTF_PTF0=1;//清中断标志位
}
作者: pangyuo    时间: 2011-4-19 17:47
昨天还好着,今天就不进中断了,不知道哪的问题
作者: zhjb1    时间: 2011-4-19 21:44
main中少了开中断
作者: pangyuo    时间: 2011-4-21 13:35
初始化的时候就开了呀
作者: 河山    时间: 2011-9-27 16:20
好像懂了
作者: 369185748    时间: 2012-1-10 18:23
看看
作者: 在所不辞    时间: 2012-1-13 16:09
PIT 学习中




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