该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

测试平台是一个stm32f103zet6的ARM芯片,

我这里只是把它当作单片机来用,下面的程序是平台提供的,可以正常使用,有几个地方不能理解!

//mode为0是不支持连续按

//mode为1是支持连续按

//返回0表示无按键按下

//返回值在1~4内,则对应四个按键a,b,c,d

u8 key_a(u8 mode)

{

static u8 key_up=1;//按键按下标志

if(mode) key_up=1;//支持连按

if(key_up&&(a==0||b==0||c==0||d==1))

{

delay_ms(10);//消抖

key_up=0;

if(a==0) return=1;//a键按下

else if(b==0) return=2;//b键按下

rese if(c==0) return=3;//c键按下

rese if(d==1) return=4;//d键按下

if(key_up&&(a==1||b==1||c==1||d==0))

keu_up=1;//无按键按下

}

return 0;//无按键按下返回0

}

这是一个完整的按键判断程序,带返回值带一个参数!

当key_a(1);时支持连按(也就是按住按键不松手数值会一直往上加)

按键a,b,c是低电平触发,d按键是高电平触发!

这里有几个问题无法理解,

第一条语句static u8 key_up=1;中的static有什么用? 后面的u8. 是申明一个8位的无符号数据,同时初始值为1,

接着if(mode) key_up=1; 这里mode是1还是0好像没有什么用,因为key_up在上一条语句已经赋值为1了,

到了按键判断语句

if(key_up&&(a==0||b==0||c==0||d==1))

这里两个括号是不是先判断第二个括号里面的条件,然后再跟key_up判断如果为真就执行if里面的语句,

我不能理解的是怎么通过mode来判断支不支持连续按!

c语言if的判定条件,if条件判断语句,谁能帮我分析一下?相关推荐

  1. c语言if中文字符串比较好,如何在C语言中使用汉字作为if的判断语句?

    题目: 如何在C语言中使用汉字作为if的判断语句? 解答: 直观点可以用strcmp函数,如果想用直接用==或!=来判断,你要先把汉字换成一个unsigned short型,要比较的汉字也放入一个un ...

  2. C++学习笔记3[条件判断语句]

    C++学习目录链接: C++学习笔记目录链接(持续更新中) 文章目录 一.条件判断语句 1.判断语句 二.使用条件运算符进行判断 三.switch语句 四.判断语句嵌套 总结 一.条件判断语句 1.判 ...

  3. R语言dplyr包na_if函数根据条件将数据对象替换为NA值实战

    R语言dplyr包na_if函数根据条件将数据对象替换为NA值实战 目录 R语言dplyr包na_if函数根据条件将数据对象替换为NA值实战 #导入dplyr包

  4. C语言里if语句变量作为判断条件,C语言教学(九-上)if else判断语句

    原标题:C语言教学(九-上)if else判断语句 今天讲if else判断语句,简单理解就是进行条件判断,如果条件达到则执行if 里或else里的语句.先来看if. if的写法和for差不多,就是不 ...

  5. 单片机c语言条件语句,单片机c语言教程:C51复合语句和条件语句

    曾经在BBS上有朋友问过我{}是什么意思?什么作用?在  C  中是有不少的括号,如{},[],()等,确实会让一些初入门的朋友不解.在 VB 等一些语言中同一个()号会有不一样的 作用,它能用于组合 ...

  6. 白盒测试:语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖

    1语句覆盖 使所有的判断语句都能执行一次的条件案例,例如当判断语句事组合语句的时候,并且用or连接,只满足一个案例即可 2判定覆盖(分支覆盖) 针对判断语句,在设定案例的时候,要设定True和Fals ...

  7. 白盒测试:语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖...

    1语句覆盖 使所有的判断语句都能执行一次的条件案例,例如当判断语句事组合语句的时候,并且用or连接,只满足一个案例即可 2判定覆盖(分支覆盖) 针对判断语句,在设定案例的时候,要设定True和Fals ...

  8. R语言survival包clogit函数构建条件logistic回归模型、summary函数查看模型汇总统计信息、通过似然比检验分析结果判断模型有无统计学意义

    R语言survival包clogit函数构建条件logistic回归模型.summary函数查看模型汇总统计信息.通过似然比检验分析结果判断模型有无统计学意义 目录

  9. r语言中的或怎么表示什么不同_R语言中灵活运用if实现根据不同条件执行不同的语句...

    原标题:R语言中灵活运用if实现根据不同条件执行不同的语句 在程序语言中,if一般属于一种分支结构,即根据某个条件执行相关的语句,在R中也不例外.同时,if语句与else配合可以运用到多种条件递归判断 ...

  10. 详解软件测试中白盒测试基本概念及四种白盒测试方法以及六种逻辑覆盖法(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)

    在这篇文章中,我们将讲解白盒测试的基本概念,以及四大常用的白盒测试方法. 一.白盒测试基本概念 1.白盒测试的定义 白盒测试又称为结构测试或逻辑驱动测试,它是把测试对象看成一个透明的盒子,它允许测试人 ...

最新文章

  1. 为什么Python是2021最值得学的编程语言?
  2. Java程序员的发展前景
  3. VS+Qt modules项目后期勾选Network、XML等
  4. linux进程通信ips,Cisco IPS 分析引擎拒绝服务漏洞(CVE-2014-0718)
  5. PS教程第十五课:图层是最基本的要求
  6. Python-OpenCV设置摄像头分辨率
  7. webservice学习总结(一)-- WebService相关概念介绍
  8. 【资源分享】ArcFace Demo [Android]
  9. java gwt教程_GWT入门教程
  10. 力扣--125验证回文串/680验证回文字符串II
  11. quilt - 制作patch的工具
  12. selenium三个等待时间
  13. Atitit websocket 的前后端实现最佳实践t66 目录 1. 技术选型 1 2. 1.首先,在pom.xml引入如下jar包。Java-WebSocket-1.3.0.jar 1 3.
  14. 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足
  15. 【javascript】字符串逆序输出
  16. 基于mysql+php065企业公文流转系统
  17. javascript scope chain
  18. Photoshop 入门教程「2」了解 Photoshop 工作区
  19. 转载--给函数取个好名
  20. 异步FIFO设计原理及Verliog源代码

热门文章

  1. Cesium:鼠标移动事件判断是否在地球上操作以及获取经纬度
  2. CSS:使用CSS绘制三角形
  3. Javascript:各种定位clientX、pageY、screenX、offsetY区别
  4. HTML:页面布局和背景
  5. 面向对象(Python):学习笔记之异常
  6. Java计划任务:ScheduledThreadPoolExecutor
  7. MyBatis学习笔记(3)-动态SQL
  8. Maven仓库的理解及配置
  9. 算法笔记_面试题_13.二叉树的最近公共祖先
  10. cartographer探秘之文章索引