本帖最后由 Ryanhsiung 于 2012-2-11 13:06 编辑
PIC18F66K80 使用内部比较器! 输入为-0.7V与5.0V,比较器输出状态一直为低。
后改成2.7V-4.0V输入,比较器输出还是一直为低?
为什么呢?莫非先前-0.7V搞坏了内部比较器!
以下为初始化代码
// 使能该外设, 开机后我将所有全部关闭了
PFTCM_PMDbits.PFTCM_EN = 0; // 使能这个模块
// PORT init
F_TRIS_INPFT(IN);
F_ANCON_PFT(ANA);
//比较器的设置
//PFTCM = 0X00; // 先全部清0
// 注意:IF开机后被置为1,注意清0
PFTCMbits.CON = 1; // 使能比较器
PFTCMbits.COE = 0; // 比较器不输出到C2OUT引脚上
PFTCMbits.CPOL = 0; // 输出不反相
PFTCMbits.EVPOL = 0X00; // 禁止中断
PFTCMbits.CREF = 1; // 连接到内部CVREF电压
PFTCMbits.CCH = 0X00; // 连接到C1INB引脚
// 读状态
//CMSTATbits.CMP1OUT //1:+>- 0:+<- 若反相则相反 定义成了RD_PFT
// CVREF 电压设置模块
CVRCONbits.CVREN = 1; // 比较器参考电压使能位 上电
// cvref电夺从CVREF引脚输出输出 断开CVREF引脚电位输出输出
CVRCONbits.CVROE = 0; // 可做DA输出
CVRCONbits.CVRSS = 1; // 比较器VREF源选择位 =VREF+-VREF- 现在只有高低
//CVRCONbits.CVRSS = 0; // =0 AVDD-AVSS 这个很准
CVRCONbits.CVR = 16; // VREF*(CVR/32) 0.625V 在于这个电压设置
// 中断
PFT_IPRbits.PFT_IP =0; // 使用低优先级
D_INL_PFT_CloseIE(); // 注意 开机默认IF为开状态
那位兄弟有例程,给个例程! |