标题:
单片机C语言比较器中断 运算符!! 是什么意思?双重否定吗?是不是不用也行
[打印本页]
作者:
level888
时间:
2021-12-30 12:42
标题:
单片机C语言比较器中断 运算符!! 是什么意思?双重否定吗?是不是不用也行
sbit LED = P1^1; //测试脚
void cmp_isr() interrupt 21 using 1 //比较器中断向量入口
{
CMPCR1 &= ~CMPIF; //清除完成标志
#include <REG51.H>
LED = !!(CMPCR1 & CMPRES); //将比较器结果CMPRES输出到测试口显示
}
void main()
{
CMPCR1 = 0; //初始化比较器控制寄存器1
CMPCR2 = 0; //初始化比较器控制寄存器2
CMPCR1 &= ~PIS; //选择外部管脚P5.5(CMPP)为比较器的正极输入源
// CMPCR1 |= PIS; //选择ADCIS[2:0]所选的ADCIN为比较器的正极输入源
CMPCR1 &= ~NIS; //选择内部BandGap电压VBandGap为比较器的负极输入源
// CMPCR1 |= NIS; //选择外部管脚P5.4(CMPN)为比较器的负极输入源
CMPCR1 &= ~CMPOE; //禁用比较器的比较结果输出
// CMPCR1 |= CMPOE; //使能比较器的比较结果输出到P1.2
CMPCR2 &= ~INVCMPO; //比较器的比较结果正常输出到P1.2
// CMPCR2 |= INVCMPO; //比较器的比较结果取反后输出到P1.2
CMPCR2 &= ~DISFLT; //不禁用(使能)比较器输出端的0.1uS虑波电路
// CMPCR2 |= DISFLT; //禁用比较器输出端的0.1uS虑波电路
CMPCR2 &= ~LCDTY; //比较器结果不去抖动,直接输出
// CMPCR2 |= (DISFLT & 0x10); //比较器结果在经过16个时钟后再输出
CMPCR1 |= PIE; //使能比较器的上升沿中断
// CMPCR1 |= NIE; //使能比较器的下降沿中断
CMPCR1 |= CMPEN; //使能比较器
EA = 1;
while (1);
}
作者:
npn
时间:
2021-12-30 14:42
两次逻辑取反,0取反为1,非0取反为0,不可以省略。
作者:
lzd918
时间:
2021-12-30 14:43
不会是双重否定,估计是笔误,实验验证以下吧。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1