其中,包括三种情况
//比较器负端接内部参考,正端接外部输入P2CA0 /*#include <msp430x14x.h> void main() { //关闭看门狗 WDTCTL=WDTPW+WDTHOLD;
CACTL1=CARSEL+CAREF0+CAON;//内部0.5*VCC到比较器的负端 CACTL2=P2CA0; P4DIR|=BIT0;//P4.0作为输出 P2DIR&=~BIT3; P2SEL|=BIT3;
while(1) { if((CACTL2|0XFE)==0XFF) { P4OUT|=BIT0;//CAOUT=1,置位p1.0 CACTL1&=0XFE; } else P4OUT&=~BIT0;//否则复位 } }
//没有参考电压,直接比较P2CA0 P2CA1两个的大小 #include <msp430x14x.h> void main() { //关闭看门狗 WDTCTL=WDTPW+WDTHOLD;
CACTL1=CAON; CACTL2=P2CA0+P2CA1+CAF; P4DIR|=BIT0;//P4.0作为输出 P2DIR&=~(BIT3+BIT4); P2SEL|=BIT3+BIT4;
while(1) { if((CACTL2|0XFE)==0XFF) { P4OUT&=~BIT0;//CAOUT=1,置位p1.0 CACTL1&=0XFE; } else P4OUT|=BIT0;//否则复位 } }*/
//比较器中断 #include <msp430x14x.h> void main() { //关闭看门狗 WDTCTL=WDTPW+WDTHOLD;
CACTL1=CAON+CAIE; CACTL2=P2CA0+P2CA1+CAF; P4DIR|=BIT0;//P4.0作为输出 P2DIR&=~(BIT3+BIT4); P2SEL|=BIT3+BIT4;
_EINT(); while(1); } #pragma vector=COMPARATORA_VECTOR//固定的格式 __interrupt void COMPARE(void) //比较器中断处理程序 必须是没有返回值的 { P4OUT ^= BIT0; //将P3.7引脚取反,就是使发光二极管闪烁 CACTL1&=0XFE; }
|