//==================================================//
// 比较器的设置
//案例为:
//输入脚PA.3与内部参考电压的9/32进行比较
//比较的结果通过GPC_out输出
//当PA.3大于内部参考电压的9/32时GPC_out为0
//当PA.3小于内部参考电压的9/32时GPC_out为1
//==================================================//
#include "extern.h"
void Comparator(void)
{
//设置比较器的输入脚需要停用上拉、下拉、数字输入使能
PAC.3 = 0;
PAPH.3 = 0;
PADIER = 0b1111_0001; //注:其他脚默认为1,需要关闭的请手动修改
$ GPCC Enable,N_PA3,P_R; //是否启用比较器;选择比较器结果是否有TM2_CLK采样输出(写Sync_TM2为选择,不写为不选);选择是否反极性(写为选择,不写为不选);选择负输入来源;选择正输入来源。
//是否启用比较器:Enable为启用,Disable为停用
//选择负输入来源:N_PA3, N_PA4, BANDGAP, N_R(内部参考电压), N_PA6, N_PA7(PA6、PA7不能仿真)
//选择正输入来源:P_R(内部参考电压), P_PA4
$ GPCS VDD*9/32; //比较器输出启用到PA0(写output启用,不写停用);选择比较器参考电压范围
//注:在仿真器上,输出到 PA0 也会造成 PA3 输出不良,请避开此问题
//比较器参考电压范围:共有四种分别为
// VDD*(9~24)/32 对应GPCS[5:4]=00; GPCS[3:0]=0000~1111;
// VDD*(1~16)/24 对应GPCS[5:4]=01; GPCS[3:0]=0000~1111;
// VDD*(9~24)/40 对应GPCS[5:4]=10; GPCS[3:0]=0000~1111;
// VDD*(1~16)/32 对应GPCS[5:4]=11; GPCS[3:0]=0000~1111;
}
void FPPA0 (void)
{
.ADJUST_IC SYSCLK=IHRC/16, IHRC=16MHz, VDD=3.3V;
Comparator();
while (1)
{
if(GPC_out) //正输入大于负输入
{
//====add your code======
//=======================
}
else //正输入小于负输入
{
//====add your code======
//=======================
}
}
}
void Interrupt (void)
{
pushaf;
if (Intrq.T16)
{ // T16 Trig
// User can add code
Intrq.T16 = 0;
//...
}
popaf;
}
应广单片机 PMS150G 161 171 基础例子 GPC 比较器 内部参考电压
最新推荐文章于 2024-09-16 20:25:50 发布