PIC16F877A内部比较器使用Demo

2019-04-15 11:47发布

内部比较器的用途是检测外部传感器的状态变化,例如霍尔开关,有金属接近的时候输出高电平,没有则输出低电平,为什么不直接用IO口来检测呢? 我想比较器跟普通 IO 检测一个很不同的地方就它有参考电压,设置一个合理的阀值就能让比较器正确的工作,这点是 IO 不能比拟的,而且比较器也有中断,方便程序的编写。 #include __CONFIG(0xFF32); #define LED0 RD0 /* 实验方法: RA0(Vin-)和RA3(Vin+)的电平比较,并将结果输出到LED */ void CM_init(void) { TRISA=0x09; //RA0与RA3设置为输入 TRISD=0x00; PORTD=0xff; CMCON=0x02; //两个独立比较器,有C1OUT/C2OUT作为输出 CMIE=1; GIE=1; PEIE=1; } void main() { CM_init(); while(1); } void interrupt ISR(void) { if(CMIF) { CMIF=0; LED0=C1OUT; //将比较器的结果输出到LED0 } }