#include <MSP430X14X.h> //msp430f149
typedef unsigned char uchar;
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;
P2DIR |=BIT2;
P2SEL |=BIT2; //p2.2
CAPD |=0X08;
CACTL2=P2CA0; //CA0-P2.3,int,比较器的正端
//CACTL1=CARSEL+CAREF_0+CAON;
CACTL1=CARSEL+CAREF_2+CAON; //内部参考接到比较器的负端,0.25vcc,open-coa
//CAREF_1=0.8v CAREF_2=1.6V CAREF_3=0.6v
}
这个是我写的一个简单的比较器输出,前几天还能有输出的,不知道为什么就突然不能用了。我猜应该和P2.2口设置有关,因为之前写了一个PWM波输出的程序,使用定时器OUTMOD_4这个功能,输出I/OP2.2也不能用
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
CAOUT寄存器值始终为1
CAOUT为1应该是比较器已经工作了。你换个io,通过if(CAOUT)来输出高电平,验证一下。
另外,你尝试下:设置控制位CAF位置位时,通过片上的RC低通滤波器进行滤波输出,看怎么样。
还有让p2.2作为普通io使用时,是否输出正常。如果不正常,可能是该io坏了
为1说明比较器工作了,这个寄存器默认是0
一周热门 更多>