智能车制作

标题: 加了PIT和脉冲测速后出问题 [打印本页]

作者: shijie12345    时间: 2011-5-9 11:36
标题: 加了PIT和脉冲测速后出问题
为什么小车里加了PIT中断用来读脉冲数时程序就会出乱啊
求解啊,是不是要设置一下哪 啊
求高手指点啊
作者: 赵古今    时间: 2011-5-9 12:20
你程序中是不是还有别的中断
作者: shijie12345    时间: 2011-5-9 12:44
没有只有这一个中断啊
作者: shijie12345    时间: 2011-5-9 13:39
附上代码请高手指教啊
void initPIT(void)//定时中断初始化函数50MS 定时中断设置
{
PITCFLMT_PITE=0; //定时中断通道0 关
PITCE_PCE0=1;//定时器通道0 使能
PITMTLD0=240-1;//8 位定时器初值设定。240 分频,在24MHzBusClock 下,为0.1MHz。
PITLD0=PITTIME-1;//16 位定时器初值设定。PITTIME*0.01MS
PITINTE_PINTE0=1;//定时器中断通道0 中断使能
PITCFLMT_PITE=1;//定时器通道0 使能
}


void Init_Event_Count(void)
{
PACTL_PAEN=0;
  PACNT=0;
  PACTL_PAMOD=0;
  PACTL_PEDGE=1;
  PACTL_PAEN=1;
// PACTL = (1<<PACTL_PAEN); //脉冲累加器启动,外部发生一次下降沿就计数一次。外部编码器连接到IOC7.
//在中断里读取PACNT的值就是脉冲个数。读取后清零PACNT。
}



void main(void)
{
PLL_Init();
initIOBoutput();
initPIT();
//delay();
  PWM_Init();
  jiguang_int();
  LcdInit();
  Init_Event_Count();
EnableInterrupts;
for(;;)

{


  //PORTB=0XFF;
// qiuquanzhi();
//angle_PD();
// xieyejing(zhidao());
  
// }   

}

}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0(void)
{
//if(flag%2==0)           // 用来判断LCD写第一行还是写
   // {                       //第二行
      LcdClear();
    LcdCommand(0x80,1);
   
    //}else{
      
   // LcdCommand(0x80+0x40,1);
   
   
    // }
     vTmpPIT=PACNT;
    xieyejing(vTmpPIT);
    PACNT=0;
    xieyejing(flag);
    flag++;
    if(flag==1000)
    flag=0;
     
   //  xieyejing(vTmpPIT);
     
     //jiguangsaomiao();                  
//vTmpPIT++;
//if(vTmpPIT==1000)
//{
//vTmpPIT=0;
     
PITTF_PTF0=1;//清中断标志位
}
这个程序正常,但是在主函数里的for循环里加上激光扫描后就乱了
求指教




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