本帖最后由 kardoche 于 2014-9-1 12:30 编辑
由于是第一次搞一个小东西。,发现好多地方都不懂,希望有高手进来帮帮忙。。。
1.单片机供电是经过稳压的,3V。 电池供电电压>3.3V的时候,一切正常,当电压≤3.3V的时候,单片机就死机了,按任何输入都没有反应了。
2.还有一个问题:程序如下: 其他略。。。
void cmpinit() //比较器初始化程序
{
P5M1 |= 0x20; //5.5为高阻,5.4IO,其他保持原有。(P5.5是比较器的"+",5.4我选的内部基准。其他IO都这个单片机都没有。所以将寄存器保持原有的,这里把5.4配为IO有没有问题???)
P5M0 &= ~0x30;
CMPCR1 = 0x00; //初始化比较器控制寄存器1
CMPCR2 = 0x00;
CMPCR1 &= ~0x08; //选择外部管脚P5.5(CMPP)为比较器的正极输入源
CMPCR1 &= ~0x04; //选择内部BandGap电压VBandGap为比较器的负极输入源
CMPCR1 &= ~0x02; //禁用比较器的比较结果输出
CMPCR2 &= ~0x80; //比较器的比较结果正常输出到P1.2
CMPCR2 &= ~0x40; //不禁用(使能)比较器输出端的0.1uS虑波电路
CMPCR2 &= ~0x3F; //比较器结果不去抖动,直接输出
CMPCR1 |= 0x80; //使能比较器
void cmpled() //闪烁程序
{
if((CMPCR1 & 0x40) == 0x40) //查询比较完成标志
{
CMPCR1 &= ~0x40; //清除完成标志
led0 = !(CMPCR1 & 0x01); //当外电压低于内部1.27V时置位(0x01)
delay(100);
led0 = 1;
delay(100);
}
}
为什么LED0 一点反应都没有。请教大家这个程序有错误没有? |