编码器两个输出A和B 硬件: 2个外中断,一个I/O 使用2个外中断P3.2接A的下降沿中断,P3.3接A的上升沿中断(51只有下降沿,只能使用反相器了,可以使用非门反相器,也可以用三极管做反相器)。 软件:i为计数器值,初始值为0, 中断服务子程序1: if(I/O==1)i++; 中断服务子程序2: if(I/O==1)i--;
效果很好!!!
缺点占用了2个外中断口,优点不占用CPU时间。 如果CPU时间多,也可以根据这个思路查询做: 当B(I/O)高电平时,A下降沿i+1; 当B(I/O)高电平时,A上升沿i-1.
|