蓝桥杯单片机调试异常问题解决

①:温度传感器读取温度为零,但是可以肯定代码没有问题,那么拔掉电源,重新上电即可,具体原因不知;
②:i++;
if(i==500)//或者等于更大的数
{
}
永远都不没完成if里面的功能,那么十有八九是i溢出,计数器建议都定义成int型,不要用char或unsigned char型(容易溢出),同时要注意int型最大正数值是2^15-1=32767,而不是65536;
③:ds1302时间读取不正确,小时超过23,分钟和秒钟超过60,大概率是没有及时写保护位或者BCD码与10进制码的转换错误(也可能根本没有转换);
④:定时器定时时间在微秒级,主函数频繁关闭中断再开启中断导致定时不准确,相当于在定时器中断里插入了一个时间执行需要很长的一段代码,就比如100微秒的定时时间,插入一段1毫秒的代码,定时肯定不正确;
⑤:long temp;
unsigned char vol = 1;
temp = vol << 16;
结果为temp=0。
原因vol << 16运算的位宽为8位,与vol一致,可以改成temp = vol * 65536;
⑥:eeprom连续写入时,每次需要延时3~5毫秒,等待写入完成;
⑦:电压读取一般0.1-0.3秒一次,刚上电要等待一会才会读取第一次电压值,再这之前存电压的变量vol的值为初始化的值,为初始化一般为0。因此如果有判断电压是否超过阈值或低于阈值时要在定时器中断打开之前读一次电压,防止电压判断的逻辑出错,如果不这样,vol刚开始的值为0,肯定低于阈值,这样会导致误触发;

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值