资讯详情

也许是最简单的旋转编码器程序, 占用一个外中断

#define ROTATE_A PIND.2

#define ROT _B PIND.3 uchar =0; uchar CCW=0; // External Interrupt 0 service routine interrupt [EXT_I 0] void ext_int0_isr(void) { if(ROTA _A!=ROTATE_B) { CW++; } else CCW++; } void main(void) { if ((CW|CCW)!=0) { DATA=DATA+CW-CCW; } CW=0; CCW=0; delay_ms(50); } ////////////////////////////////////////// 占用一个外中断,电平变化触发,CW是顺时针转过的脉冲,CCW是逆时针 每50ms处理一下数值,如果想要出错,起码脉冲时间要比50ms/256短才行,手指是没可能达到这速度 -电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台