当前位置: 首页 > web >正文

蓝桥杯单片机备战笔记

一、温度读取会影响ADC读取

可以延长他们的读取时间

二、 按键冲突问题

假如你使用了NE555,p34引脚会冲突,造成按键不灵敏

解决:把有关P34的检测改掉。把下面那一行注释掉就行。

三、条件判断问题

不能这样子判断:

正确判断:

 四在 switch 语句中,所有的 case 值必须是唯一的

也就是说case不能嵌套,不然会出现编译错误

五、数码管显示不全,后面几位没有数据或者乱码

显示器只有 1357,后面几位没有数据或者乱码

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

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

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

·  举例:

  • 如果 before_adc_value = 30,now_adc_value = 40,那么 30 - 40 = -10。作为 u8,这会回绕:-10 + 256 = 246。
  • 如果 before_adc_value = 100,now_adc_value = 60,那么 100 - 60 = 40,这在 u8 范围内,不会回绕。

解决一:或者改为s32

解决二:

C 语言中的 &&(逻辑与)运算符具有短路求值的特性,这意味着:

  • 条件 before_adc_value >= now_adc_value && (before_adc_value - now_adc_value) >= 50 是从左到右求值的。
  • 如果左边的条件 before_adc_value >= now_adc_value 为假(即 before_adc_value < now_adc_value),整个表达式的结果直接为假,右边的 (before_adc_value - now_adc_value) >= 50 根本不会被执行

七、按键出现重复跳过的问题

忘记加 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--) 中:

  • 初始时,i = 4。
  • 每次循环,i-- 递减 1。
  • 当 i 从 0 递减到 -1 时,由于 u8 和 u16 是无符号类型,-1 会回绕
    • 对于 u8,-1 回绕为 255。
    • 对于 u16,-1 回绕为 65535。

http://www.xdnf.cn/news/4014.html

相关文章:

  • 【中间件】brpc_基础_TimerThread
  • 五一假期作业
  • springboot单体项目的执行流程
  • LFU算法解析
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】4.5 清洗流程自动化(存储过程/定时任务)
  • 【中间件】brpc_基础_单例
  • FreeRTOS学习系列·二值信号量
  • Linux查询日志常用命令
  • 解锁现代健康密码:科学养生新主张
  • 基于PLC的换热器温度控制系统设计
  • 状态模式(State Pattern)
  • 电子商务商家后台运营专员模板
  • C++ 中二级指针的正确释放方法
  • 【KWDB 创作者计划】_Ubuntu 22.04系统KWDB数据库安装部署使用教程
  • Qt中的UIC
  • Amazon Bedrock Converse API:开启对话式AI新体验
  • Qt开发:容器组控件的介绍和使用
  • 20、数据可视化:魔镜报表——React 19 图表集成
  • 408考研逐题详解:2009年第8题
  • Java后端程序员学习前端之CSS
  • Python matplotlib 成功使用SimHei 中文字体
  • 详解RabbitMQ工作模式之发布订阅模式
  • 基于C++实现的深度学习(cnn/svm)分类器Demo
  • Baklib知识中台:智能服务架构新实践
  • 【算法学习】递归、搜索与回溯算法(一)
  • python函数复习(形参实参,收集参数,关键字参数)
  • uniapp中用canvas绘制简单柱形图,小容量,不用插件——简单使用canvas
  • QT 在圆的边界画出圆
  • IP属地是我的定位吗?——解析两者区别
  • Python异步编程入门:从同步到异步的思维转变