我想使用STC12C5A60S2捕捉红外对管产生的脉冲,红外对管只有三个引脚,分别是电源、地、脉冲输出。因为PCA要用来作PWM控制电机,没法用来捕捉脉冲。我想到并且看到有人用外部中断来捕捉脉冲的。我的想法是直接把两个红外对管的脉冲输出引脚接到单片机的P3.2和P3.3外部中断,然后设置成下降沿触发中断,定义一个全局变量在中断函数里计数,再在其他函数调用这个变量。像下面
void InitInterrupt(void)//这个是设置外部中断触发,总中断在其他地方开启
{
EX0 = 1; //开外部中断INT0
EX1 = 1; //开外部中断INT1
IT0 = 1; //下降沿触发
IT1 = 1; //下降沿触发
}
//********左电机中断***********************
void GetLeftMotorPulse(void) interrupt 0
{
g_uiLeftMotorPulse++; //左电机脉冲计数
return;
}
//********右电机中断***********************
void GetRightMotorPulse(void) interrupt 2
{
g_uiRightMotorPulse++; //右电机脉冲计数
return;
}
不知道我这思路是否可以计算红外对管的脉冲。请各位大虾指点一下。 |