看LPC2104的资料,应该是不能通过硬件计数外部脉冲的,LPC2103估计也不行,那就使用定时器捕捉功能,程序中定义一个变量SoftCount,脉冲信号接到定时器的捕捉管脚,每次捕捉到跳变SoftCount就加1。再定义一个定时中断,每隔一段时间中断一次,比方说一秒钟,读取一次SoftCount的值保存,并与之前的值相减,求出一秒钟里的脉冲跳变数,也就是转速了。<br /><br />INT16U Speed;<br />INT16U SoftCount;<br /><br />void __irq ISR_pulse( void ){ // 脉冲中断<br /> ++SoftCount;<br />}<br />void __irq ISR_timer( void ){ // 定时中断<br /> static INT16U SoftCount0;<br /> Speed = SoftCount - SoftCount0; // 求转速!!<br /> SoftCount0 = SoftCount; // 保存以便下次中断使用<br />}<br /><br />简单的说,就是软件计数!!
|