IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 按键中断可控流水灯 -> 正文阅读

[嵌入式]按键中断可控流水灯

按键中断可控流水灯

1.流水灯
2.什么是中断?
3.中断的定义?
4.中断程序的结束与退出
5.程序的优先级
6.空程序的运行
7.数字信号的打印
8…程序错误的检测

1.流水灯
在这里插入图片描述

void setup(){
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
}

void loop(){
  digitalWrite(7,HIGH);
  delay(1000);
  digitalWrite(7,LOW);
  digitalWrite(8,HIGH);
  delay(1000);
  digitalWrite(8,LOW);
  digitalWrite(9,HIGH);
  delay(1000);
  digitalWrite(9,LOW);
  digitalWrite(10,HIGH);
  delay(1000);
  digitalWrite(10,LOW);

}

2.什么是中断
简单的来说就是停止现在的事情来做另一件事情,做完在返回继续一开始的任务

3.中断的定义
中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。
中断系统特点:
①分时操作。CPU 可以分时为多个 I/O 设备服务,提高了计算机的利用率;
②实时响应。CPU 能够及时处理应用系统的随机事件,系统的实时性大大增强;
③可靠性高。CPU 具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高
中断过程
对于单片机来讲,中断是指CPU在处理某一时间A时,发生了另一事件B请求CPU立刻去处理(中断发生或中断请求);CPU暂时停止当前的工作(中断响应),转而去处理事件B(中断服务),待CPU处理事件B完成后,再回到原来事件A被中断的地方继续处理事件A(中断返回)。这一过程称为中断,注意是整个过程,而不是单一的停止一件事的意思。
举例:你打开火,烧上一壶水。然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断

在这里插入图片描述
在这里插入图片描述

4.中断程序的结束与退出
在这里插入图片描述
在这里插入图片描述

volatile boolean 状态;

void attachInterrupt_fun_FALLING_2() {
  状态 = !状态;
  digitalWrite(4,状态);
}

void setup(){
  状态 = false;
  pinMode(2, INPUT_PULLUP);
  pinMode(4, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(2),attachInterrupt_fun_FALLING_2,FALLING);
}

void loop(){

}

按键第一次按进入中断程序,第二次按退出中断
布尔型变量 只有两种结果 例如非真即假 0和1 这种
在这里插入图片描述
注释 :第一次状态为真时,第二次按下就为假,这样便可以达到一开一关的效果
在这里插入图片描述
不采用变量实现一开一关
注释 第一次按下状态假设为1,松开后变0,则第二次的初始状态为0,按下时与前一次状态不同,执行关闭

5.程序的优先级
单片机的运行是一个代码运行的,中断程序就相当于一个优先级,可以打断单片机的运行,从而先运行其他程序

6.空程序的运行

在这里插入图片描述
满足条件则运行空格里的程序,可当空语令运行,卡死在这一步,按键按下,数字输入变0,按住不放时,程序不变卡在空语句。状态不变,松开时,数字信号变为高电平1,则跳出中断语句

执行空语句时,空语句需要放入中断程序中,否则不运行

7.数字信号的打印
在这里插入图片描述

void setup(){
  Serial.begin(9600);
  pinMode(4, INPUT);
}

void loop(){
  pinMode(4, INPUT);
  Serial.println(digitalRead(4));

}

注释:管脚模式一定要选好是输入还是输出
在这里插入图片描述
一开始想打印出按钮按下的数字信号,因为没有设定好管脚模式,导致检测不出来数字信号
上图所用的按扭为共阴按钮,因此数字信号管脚检测模式要设置为上拉输入,上拉输入可检测出 ##低电平
在这里插入图片描述
在这里插入图片描述

上拉输入的检测原理

8…程序错误的检测
先检测主程序是否错误
在这里插入图片描述
若串口数据不显示,则为设置程序模块有问题
跟检测主程序一样,加入打印串口数据,便可检测出是哪一步出现了问题
在这里插入图片描述
所有模块
在这里插入图片描述
所有模块代码

#include <PinChangeInt.h>

void attachPinInterrupt_fun_FALLING_2() {
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  digitalWrite(7,LOW);
  digitalWrite(7,HIGH);
  while (digitalRead(2) == 0) {
    Serial.println("卡死了");
  }
}

void setup(){
  Serial.begin(9600);
  pinMode(2, INPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(2, INPUT_PULLUP);
  PCintPort::attachInterrupt(2,attachPinInterrupt_fun_FALLING_2,FALLING);
}

void loop(){
  digitalWrite(5,HIGH);
  delay(1000);
  digitalWrite(5,LOW);
  digitalWrite(6,HIGH);
  delay(1000);
  digitalWrite(6,LOW);
  digitalWrite(7,HIGH);
  delay(1000);
  digitalWrite(7,LOW);

}
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 13:00:11  更:2021-10-04 13:01:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:30:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码