找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3629|回复: 6
收起左侧

小白求解释单片机代码(划箭头的部分)!

[复制链接]
ID:253661 发表于 2017-11-26 02:51 | 显示全部楼层 |阅读模式
const int buttonPin = 2;
const int ledPin = 13;
int ledState = HIGH;
int buttonState;
int lastButtonState = LOW;
long lastDebounceTime = 0;
long debounceDelay = 50;
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState);
}


void loop() {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}


if ((millis() - lastDebounceTime) > debounceDelay) {
--> if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
ledState = !ledState;
}
}
}
digitalWrite(ledPin, ledState);
lastButtonState = reading;
}
请问那位大神可以解释一下划箭头的地方if中buttonState与reading不是相同的吗?,为什么可以比较。谢谢。如果错了是不是把buttonState改为lastbuttonState就行了。




回复

使用道具 举报

ID:162136 发表于 2017-11-26 10:18 | 显示全部楼层
不是相等的,
--> if (reading != buttonState) {
buttonState = reading; 这是上面成立才执行的,就是说,如果不相等就赋值。但下次判断之前 int reading = digitalRead(buttonPin); 这语句有可能改变 reading 的值了。

评分

参与人数 2黑币 +10 收起 理由
BYSJ20171201 + 5 很给力!
ZFDPJ + 5 赞一个!

查看全部评分

回复

使用道具 举报

ID:155507 发表于 2017-11-26 11:10 | 显示全部楼层
划箭头的地方if中buttonState与reading为什么一定是相同的,为什么不可以比较。
回复

使用道具 举报

ID:111634 发表于 2017-11-26 11:44 | 显示全部楼层
为什么要找没有注释的代码?介绍你2本书,张志良编著的:《80C51单片机实用教程——基于Keil C和Proteus》高等教育出版社ISBN 978-7-04-044532-9, 用于学习51单片机原理,程序(双解c和汇编)语句条条有注解,便于阅读理解,便于自学。《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行,可演示,可观测,程序语句条条有注解。与其他书比较一下,有比较才能有鉴别!绝不忽悠你!

评分

参与人数 1黑币 +1 收起 理由
BYSJ20171201 + 1 赞一个!

查看全部评分

回复

使用道具 举报

ID:256933 发表于 2017-12-3 21:15 | 显示全部楼层
学习学习
回复

使用道具 举报

ID:256933 发表于 2017-12-3 21:15 | 显示全部楼层
新手学习
回复

使用道具 举报

ID:253839 发表于 2017-12-7 22:39 | 显示全部楼层
介绍你2本书,张志良编著的:《80C51单片机实用教程——基于Keil C和Proteus》高等教育出版社ISBN 978-7-04-044532-9, 用于学习51单片机原理,程序(双解c和汇编)语句条条有注解,便于阅读理解,便于自学。认真看,可以的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表