- 打卡等级:常住居民I
- 打卡总天数:61
- 最近打卡:2025-05-12 09:50:54
超级版主
- 积分
- 12207
|
发表于 2024-11-1 16:39:53
|
显示全部楼层
你要什么样的程序?STC15W系列的比较器都是通用的。
#include "STC15Fxxxx.H"
void Compare_Config(void); //比较器初始化
/************* 主函数 **************/
void main(void)
{
Compare_Config(); // 比较器初始化函数
while (1)
{
if((CMPCR1 & CMPRES) > 0) P33 = 1; //比较结果, 1: CMP+电平高于CMP-, 0: CMP+电平低于CMP-, 只读
else P33 = 0;
}
}
void Compare_Config(void) //比较器初始化
{
P5n_pure_input(0x30); //P5.4 P5.5 设置为高阻输入
CMPCR1 = 0;
CMPCR2 = 60; //比较结果变化延时周期数, 0~63
CMPCR1 |= (1<<7); //1: 允许比较器, 0:关闭比较器
CMPCR1 |= (0<<5); //1: 允许上升沿中断, 0: 禁止
CMPCR1 |= (0<<4); //1: 允许下降沿中断, 0: 禁止
CMPCR1 |= (0<<3); //输入正极性选择, 0: 选择外部P5.5做正输入, 1: 由ADC_CONTR[2:0]所选择的ADC输入端做正输入.
CMPCR1 |= (1<<2); //输入负极性选择, 0: 选择内部BandGap电压BGv做负输入, 1: 选择外部P5.4做输入
CMPCR1 |= (0<<1); //1: 允许比较结果输出到P1.2, 0: 比较结果禁止输出到IO
CMPCR2 |= (0<<7); //1: 比较器结果输出P1.2取反, 0: 不取反
CMPCR2 |= (0<<6); //0: 允许内部0.1uF滤波, 1: 关闭
}
STC15Fxxxx.H
(53.79 KB, 下载次数: 33)
|
|