蓝桥杯单片机历年国赛填坑--刷题笔记
第七届国赛-电压频率采集设备
第八届国赛-超声波测距机
第九届国赛-多功能测量仪表
Notes1:PCF8591上电初始值0x80(0.5V)处理方法
最简单Bug最少的方法就是在进入死循环前连续读取两遍:
void main(void)
{
…………
…………
uc_ADC_Value = PCF8591_ADC();
uc_ADC_Value = PCF8591_ADC();
…………
…………
EA = 1;
ET1 = 1; //最后开中断
while(1)
{
…………
}
Notes2:sprintf函数的坑
printf
是打印到屏幕或串口,sprintf
是整合变量直接打印到字符串。sprintf
相当直接改变内存,直接操作内存是存在风险的。
问题一:格式控制中的 格式声明多于后边的变量。
问题二:存入的变量超出预先声明的数组。
出现的BUG现象为数码管显示错误或者按键出错(很难联想到是sprintf的问题)。
问题一二貌似都会出现内存覆盖或者溢出的现象(查内存没查出来)。
sprintf(puc_SEG_Buf,"C %5.2f",(float)ui_temperature/16.0);
第十届国赛
6月5日,蓝桥杯国赛,芒种。愿播种希望,收获美好。—2021.6.2