蓝桥杯单片机备考指南:备战笔记全解析
一、温度读取会影响ADC读取
可以延长他们的读取时间

二、 按键冲突问题
假如你使用了NE555,p34引脚会冲突,造成按键不灵敏
解决:把有关P34的检测改掉。把下面那一行注释掉就行。

三、条件判断问题
不能这样子判断:

正确判断:

四、在 switch 语句中,所有的 case 值必须是唯一的
也就是说case不能嵌套,不然会出现编译错误
五、数码管显示不全,后面几位没有数据或者乱码
显示器只有 1357,后面几位没有数据或者乱码

原因:extern u8 smg_buf[8] 少了u8

六、两个u8相减,造成回绕的问题

· 在 C 语言中,当两个无符号整数相减时,如果结果本应为负数,由于模运算(基于 u8 的 256 范围),结果会“回绕”。
· 举例:
解决一:或者改为s32
解决二:

C 语言中的 &&(逻辑与)运算符具有短路求值的特性,这意味着:
七、按键出现重复跳过的问题

忘记加 cnt_key=0了
八、51硬件仿真出现断连的情况

原因:按键操作控制影响的P30和P31
把P30和P31置为一,不要影响到他

九、硬件仿真无法进入中断问题,运行正常
没有勾选硬件仿真

十、读取ds1302的时间为零

第二个是对的,第一个的参数是局部变量,传不到外面

十一、keil5突然编译输出框build output 不见了

十二、bit和sbit
Bit:定义: bit 是 C 语言中的一种数据类型,通常由特定编译器(如 Keil C51 或 SDCC)扩展支持,用于声明一个单比特变量。

sbit定义:sbit 是“special bit”的缩写,是特定编译器(如 Keil C51)提供的关键字,用于声明直接映射到硬件寄存器(如端口、控制位)的单比特变量。

十三、u8 i 和 int i 在for循环中引起的区别
在这个代码中,数码管不亮,而我把u8 i 改为int i数码管就显示正常了

原因:
在 for (i = 4; i >= 0; i–) 中:
作者:可乐鸡翅好好吃