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

单片机语法2

一、比较运算(判断条件专用)

用于两个数比大小、判相等,结果只有真 (1) / 假 (0)

表格

符号含义例子
==等于if(num == 10)
!=不等于if(key != 0)
>大于if(a > 5)
<小于if(b < 100)
>=大于等于if(temp >= 30)
<=小于等于if(time <= 500)

⚠ 注意:判断相等必须用===是赋值,不是判断!


二、逻辑运算(多条件组合判断)

把多个条件拼在一起用

表格

符号含义说明
&&逻辑与两个条件都成立才为真
``逻辑或任意一个成立就为真
!逻辑非取反,真变假,假变真

例子

c

运行

if( (temp > 30) && (key == 1) ) // 温度>30 并且 按键按下 if( (mode == 1) || (mode == 2) ) // 模式是1 或 模式是2 if( !flag ) // 如果 flag 是 0(没成立)

三、if 判断(最常用:条件执行)

1. 单 if

c

运行

if(条件) { 满足条件才执行; }

例子:

c

运行

if(P3_0 == 0) // 按键按下 { LED = 0; }

2. if...else...(二选一)

c

运行

if(条件) { 条件成立执行; } else { 不成立执行; }

例子:

c

运行

if(num > 10) { LED1 = 1; } else { LED1 = 0; }

3. if...else if...else(多条件选择)

c

运行

if(条件1) { } else if(条件2) { } else if(条件3) { } else { }

例子:温度分级

c

运行

if(temp >= 40) 风扇高速; else if(temp >= 30) 风扇中速; else 风扇停止;

四、switch...case(多分支判断,比 if 更清晰)

专门用于固定值判断,如模式、按键值、状态

c

运行

switch(变量) { case 值1: 执行内容; break; case 值2: 执行内容; break; case 值3: 执行内容; break; default: 都不满足时执行; }

⚠ 必须加break,否则会 “穿透执行”

例子:按键控制模式

c

运行

unsigned char key = Key_Read(); switch(key) { case 1: LED1 = 1; break; case 2: LED2 = 1; break; case 3: Motor_Start(); break; default: break; }

五、for 循环(固定次数循环,最常用)

用于延时、计数、遍历数组、闪烁 LED

c

运行

for(初始化; 条件; 自增/自减) { 循环体; }

最经典写法:

c

运行

unsigned char i; for(i=0; i<10; i++) // 循环 10 次 { LED = ~LED; // LED翻转 }

单片机延时必备:

c

运行

void Delay(unsigned int t) { unsigned int i,j; for(i=0; i<t; i++) for(j=0; j<123; j++); }

六、while 循环(条件循环)

1. while(先判断,再执行)

c

运行

while(条件) { 条件成立就一直循环; }

例子:按键按下才亮灯

c

运行

while(P3_0 == 0) { LED = 0; }

2. do...while(先执行一次,再判断)

c

运行

do { 执行内容; } while(条件);

至少会执行一次


七、死循环(单片机主程序必备)

单片机程序永远不能结束,必须写死循环:

c

运行

void main() { while(1) // 死循环 { 按键扫描; LED显示; 数据处理; } }

while(1)= 永远成立 → 永远跑下去


八、实战综合例子(把所有语法串起来)

c

运行

#include <reg52.h> typedef unsigned char u8; void main() { u8 i; u8 cnt = 0; while(1) // 死循环 { if(P3_0 == 0) // if判断:按键按下 { cnt++; // 计数+1 if(cnt > 5) cnt = 0; } // for循环:LED流水灯 for(i=0; i<8; i++) { P1 = ~(0x01 << i); Delay(500); } } }

九、超简记忆口诀

  • 比较:== != > < >= <=
  • 逻辑:&& 与 || 或!非
  • 判断:if/else if/else、switch
  • 循环:for(次数)、while(条件)
  • 单片机必写:while(1)

总结

  • if:条件判断、分支选择
  • switch:固定值多分支选择
  • for:固定次数循环(延时、遍历)
  • while:条件循环 + 主程序死循环
  • 比较 / 逻辑运算:给判断提供条件
http://www.jsqmd.com/news/805910/

相关文章:

  • 数字示波器在EMI预测试中的关键技术应用
  • Tempera风格提示词结构全解析,深度解读色阶压缩率、笔触衰减系数与基底纹理权重配置
  • 2026年5月新消息:陕西打包箱房服务商如何选择?河北圣硕金属制品有限公司实力解析 - 2026年企业推荐榜
  • 从零构建Fresco工作流:设计师私藏的3阶段精修链(线稿强化→湿扩散控制→干刷边缘增强)
  • 从开题到见刊仅112天:一位青椒用Perplexity Pro重构写作范式的完整时间日志(含失败复盘数据)
  • 3步快速上手:Windows安卓应用安装器完全指南
  • Claude 2026长文档推理突破:支持200万token上下文、87.3%跨段落逻辑召回率,如何重构你的AI工作流?
  • AI编程助手规则定制:以LaunchDarkly为例打造团队专属编码规范
  • 算力产业链的“木桶效应”与价值迁移
  • Sora 2正式上线倒计时72小时:这8个企业级集成接口必须今天完成适配,否则将错过首波AI视频生产力红利
  • OpsPilot:基于智能体架构的运维AI助手设计与落地实践
  • 跨平台命令行语音通知工具jbsays:让自动化脚本开口说话
  • 面试题:激活函数是什么?为什么必须非线性,Sigmoid、ReLU、Softmax 怎么选,一文讲透深度学习高频考点
  • FreeVA:零训练成本,用图像大模型实现视频理解的新范式
  • 2026激光专用集成机柜技术拆解与靠谱选型参考:激光专用集成机柜/算力集成柜/能源化工电气集成控制柜/西门子CPU模块/选择指南 - 优质品牌商家
  • 数据中台下半场比的是治理:六家主流厂商四维度横向测评
  • 本地AI桌面助手Joanium:从多模型对话到自动化工作流的深度集成实践
  • 知识付费浪潮下的技术学习:是捷径,还是新的信息茧房?
  • 初学linux命令day09
  • ElevenLabs多语言语音克隆API接入实战:支持14种语言+情感参数微调的8个关键配置项
  • qmcdump实战指南:如何高效解密QQ音乐加密文件的深度解析
  • Janus多模态AI智能体:视觉推理与工具调用的开源实践
  • 量子信号处理技术及其在离子阱系统中的应用
  • 烽火服务器IPMI远程控制台报JNLP错误?手把手教你排查Java环境与权限问题
  • AI编码助手技能库:打造可复用的领域专家知识体系
  • C++ STL入门:vector与字符串流详解
  • 2026年4月智能手表海关编码专业工具排行盘点:临时进口加征关税/化妆品海关编码/太阳能电池板海关编码/新能源汽车海关编码/选择指南 - 优质品牌商家
  • 医保结算避坑指南二:关于参保地统筹区划与直辖市划分及读卡应用技巧
  • 从零构建Kubernetes Operator:openclaw-operator实战解析
  • Scrapeless平台LLM对话数据抓取技能:一站式获取ChatGPT等主流AI模型结构化数据