嵌入式学习——51单片机——(按键、中断)day17

1. 按键程序

1.1 主函数

#include <reg51.h>
#include "digit.h"
#include "key.h"void delay(int n)
{while (n--);
}int main(void)
{int cnt = 0;init_digit();init_key();while (1){	if (2 == key_pressed()){cnt++;delay(0x5fff);}show_number(cnt);}return 0;
}

1.2 头文件

#ifndef _KEY_H_
#define _KEY_H_extern void init_key(void);
extern int key_pressed(void);#endif 

1.3 源文件

#include <reg51.h>
#include "digit.h"
#include "key.h"void init_key(void)
{P1 |= ((1 << 4) | (1 << 5) | (1 << 6) | (1 << 7));P3 |= (1 << 5);
}int key_pressed(void)
{int ret = 0;if (0 == (P1 & (1 << 4))){ret = 1;}else if (0 == (P1 & (1 << 5))){ret = 2;}else if (0 == (P1 & (1 << 6))){ret = 3;}else if (0 == (P1 & (1 << 7))){ret = 4;}else if (0 == (P3 & (1 << 5))){ret = 5;}return ret;	
}

2. 中断

2.1 中断的定义

        当CPU正在处理某件事情的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完后,再回到原来中断的地方继续原来的工作。

2.2 中断源的定义

        可以引发中断是事件、条件或者硬件模块

        常见的中断源

                1. 外部中断源

                2. 定时器、计数器中断源

                3. 串口中断源

                4. ADC中断源

                5. 比较器中断源

                6. 看门狗定时器中断源

2.3 中断执行流程

        1. 中断源发出中断请求

        2. CPU查询中断是否被运行、以及中断是否被屏蔽

        3. CPU考察中断优先级

        4. CPU保护现场

        5. 执行中断服务函数

        6. 恢复现场

2.4 外部中断的初始化函数

void init_eint(void)   
{P3 |= ((1 << 2) | (1 << 3) );IE |= ((1 << 7) | (1 << 2) | (1 << 0));TCON |= ((1 << 0) | (1 << 2));}

2.5 外部中断的的作用函数

void eint0_handeler(void) interrupt 0
{delay(0x1fff);cnt++;
}void eint1_handeler(void) interrupt 2
{delay(0xfff);cnt--;
}

3.定时器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/835364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中如何把list变成字符串

python中如何把list变成字符串&#xff1f;方法如下&#xff1a; python中list可以直接转字符串&#xff0c;例如&#xff1a; data ["hello", "world"] print(data1:,str(data)) 得到结果&#xff1a; (data1:, "[hello, world]") 这里将整个…

[0511] Llamafile 和 Bun 更新 | 美国立法限制 AI 模型出口 | M4单核跑分超 i9 最新旗舰

目录 Llamafile 发布 v0.8.4;可在 CLI 直接生成 embeddingBun 发布 v1.1.8美国立法限制 AI 模型的出口M4 单核性能GB单线程跑分超过 i9 最新旗舰 Llamafile 发布 v0.8.4;可在 CLI 直接生成 embedding Lllamfile 基于 Lllama.cpp&#xff0c;是一个快捷运行本地模型的方案。 L…

视频号小店究竟有什么秘密,值得商家疯狂入驻,商家必看!

大家好&#xff0c;我是电商花花。 我们都知道视频号和抖音本身都是一个短视频平台&#xff0c;但是随着直播电商的发展&#xff0c;背后的流量推动逐步显露出强大的红利市场和变现机会。 视频号小店流量大和赚钱之外&#xff0c;还非常适合普通人创业。 这也使得越来越多的…

easypoi动态表头导出数据

需求&#xff1a;动态导出某年某月用户和用户评分数据信息&#xff0c;表头(序号、姓名、用户姓名)&#xff0c;数据(所有用户对应的评分以及平均分)&#xff1b; 分析&#xff1a;1、表头除过序号、姓名&#xff0c;用户姓名要动态生成&#xff1b; 2、用户评分信息要和表头中…

C#爬虫爬取某东商品信息

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…

【赠书活动第4期】《Rust编程与项目实战》

赠书活动 《Rust编程与项目实战》免费赠书 3 本&#xff0c; 收到赠书之后&#xff0c;写一篇 本书某一节内容 的学习博客文章。 可在本帖评论中表示参加&#xff0c;即可获得赠书&#xff0c;先到先得。学习心得博客链接&#xff0c;后面有空发上来。 赠书截止日期为送出3…

无人播剧直播收益在哪里!快手无人播剧新秘籍:版权无忧,日入四位数攻略

无人播剧顾名思义就是通过短视频平台直播不需要真人出镜受众群体通过网络短视频平台看到的经典影视剧集可以实现24小时不停断的播放利用多种途径变现的一种直播形式 1、操作简单、不露脸、不出镜2、手机、电脑都可以操作3、可以矩阵操作4、0粉丝、0作品、0保证金就可以开播5、…

2010-2030年GHS-POP数据集下载

扫描文末二维码&#xff0c;关注微信公众号&#xff1a;ThsPool 后台回复 g008&#xff0c;领取 2010-2030年100m分辨率GHS-POP 数据集 &#x1f4ca; GHS Population Grid (R2023)&#xff1a;全球人口分布的精准视图与深度应用 &#x1f310; 在全球化和快速城市化的今天&am…

STL——常用算法

#include<algorithm> 遍历算法 for_each for_each(iterator beg,iterator end,_func); //func为函数对象或者函数 transform 搬运容器到另一个容器中 transform(iterator beg1, iterator end1, iterator beg2, _func); 例如&#xff1a; transform(v.begin(), v.e…

Node.js的优缺点

Node.js 作为一个流行的服务器端 JavaScript 运行环境&#xff0c;具有其独特的优点和缺点。以下是 Node.js 的一些主要优缺点&#xff1a; 优点&#xff1a; 单线程异步非阻塞 I/O&#xff1a; Node.js 使用单线程事件循环来处理请求&#xff0c;避免了多线程编程中的线程同…

[嵌入式系统-73]:RT-Thread-快速上手:如何选择RT Thread的版本?

目录 如何选择合适的 RT-Thread 版本进行开发&#xff1f; RT-Thread 分支与版本介绍 如何选择 发布版本&#xff08;GitHub releases&#xff09; 开发分支&#xff08;GitHub master 主分支&#xff09; 长期支持分支&#xff08;GitHub lts-v3.1.x 分支&#xff09; …

用Github+HUGO搭建博客的经验教训

1. 创建两个Github仓库 一个是博客源仓库&#xff08;private&#xff09;&#xff0c;用于储存所有博客源文件&#xff08;Markdown文件和图片文件等&#xff09;。 另一个是GitHub Pages仓库&#xff08;public&#xff09;&#xff0c;用于储存由 Hugo 从Markdown 文件生成的…

React中间件的概念以及常用的实现

在 React 中&#xff0c;中间件&#xff08;Middleware&#xff09;是一种在组件之间进行处理的机制&#xff0c;它允许你在组件渲染过程中注入一些逻辑、功能或者处理过程。中间件通常被用于在组件渲染前后执行一些操作&#xff0c;比如日志记录、权限验证、状态管理等。常用的…

10.轮转数组

文章目录 题目简介题目解答解法一&#xff1a;使用额外的数组代码&#xff1a;复杂度分析&#xff1a; 解法二&#xff1a;数组反转代码&#xff1a;复杂度分析&#xff1a; 题目链接 大家好&#xff0c;我是晓星航。今天为大家带来的是 轮转数组 相关的讲解&#xff01;&#…

STM32:EXTI—外部中断的初始化

文章目录 1、中断1.2 中断系统1.3 中断执行流程 2、STM32中断2.2EXTI&#xff08;外部中断&#xff09;2.3 EXTI 的基本结构2.4 AFIO复用IO口 3、NVIC基本结构3.2 NVIC优先级分组 4、配置EXTI4.2 AFIO 库函数4.3 EXTI 库函数4.4 NVIC 库函数4.5 配置EXTI的步骤4.6 初始化EXTI 1…

Python运维之协程

目录 一、定义协程 二、并发 三、异步请求 协程是一种轻量级的线程&#xff0c;它通过保存和恢复寄存器上下文和栈来实现调度切换&#xff0c;从而保留函数执行的状态。 这种机制使得协程在处理I/O密集型任务时效率较高&#xff0c;因为它们可以在I/O操作期间让出CPU&#…

git push报错git@github.com: Permission denied (publickey).

gitgithub.com: Permission denied (publickey). fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.已经使用git config设置邮箱和密码&#xff0c;可以说使用git config --list查看&#xff0c;…

QT——tableWidget-跳变之舞V1.0-记录学习【1】

QT——tableWidget-跳变之舞V1.0-记录学习【1】 文章目录 QT——tableWidget-跳变之舞V1.0-记录学习【1】前言一、利用QT创建项目文件1.1 完整项目文件如下图所示:1.2 演示&#xff1a; 二、声明文件&#xff1a;2.1 主界面声明文件:mainwindow.h&#xff1b;2.2 控制窗口声明文…

科技查新中医学科研项目查新点如何确立与提炼?案例讲解

一、前言 医学科技查新包括立项查新和成果查新两个部分&#xff0c;其中医学立项查新&#xff0c;它是指在医学科研项目申报开题之前&#xff0c;通过在一定范围内进行该课题的相关文献检索 ( 可以根据项目委托人的具体要求&#xff0c;进行国内检索或者进行国外检索 ) &#x…

python 抓取文档后如何存档的问题

在Python中抓取文档(如网页内容、文本文件等)并将其存档,通常涉及以下几个步骤: 1. 发送请求获取数据 首先,你需要使用如requests库来发送HTTP请求,获取网页内容。如果是要抓取本地文件,则可以直接使用文件读取操作。 import requestsurl = http://example.com/some-…