智能车制作
标题:
加了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