用P0口作测试,只能采用查询法。
1、设置一个定时器
2、不断检测P0口电平的变化,每次检测到电平由低电平至高电平(或高电平至低电平)时,也就是被测脉冲的上升沿(下降沿),作为一个脉冲的起点,连续检测到N个上升沿,读取定时器的计时结果TN,减去上定时器上一次的计时结果TO,再将当前定时器计时结果保存为TO。
3、N/(TN-TO)就是被测脉冲的频率。
我觉得你被测频率比较低,用测周期的方法精度应该高一些。方法也是设置一个定时器,频率至少是被测频率3倍以上,这个频率越高检测的精度就越高。在定时中断里检测信号状态,如果信号未改变计数寄存器加1,改变了后用寄存器的值乘以定时器的定时时间就是信号周期,再把周期转为频率就行了。