一、GPIO(General Purpose Input/Output)

GPIO 是 51 单片机和外界交互最基本的方式。

工作模式:

  • 输出模式:单片机给定引脚一个电平(高电平 (5V)、低电平 (0V)),通过控制引脚实现高低电平输出。
  • 输入模式:检测引脚的电平变化。

GPIO 类比(水龙头):

  • 输出模式:控制水龙头的水流(主动控制)。
  • 输入模式:观察水龙头是否有水流(被动检测,如按键)。

二、按键

        按键 K1 的两个引脚分别接到 GND 和 P1_4 引脚。当 K1 按键被按下时,P1_4 引脚会与 GND 短路,呈现低电平。

        判断按键是否被按下:检测对应引脚是否为低电平。

        P1_4 引脚是否为低电平的判断:P1 & 0001 0000 == 0

三、中断

1. 中断概念

        CPU 在执行一个任务时,被外界更紧急的事件打断,转而去执行该紧急任务,完成后再返回原任务继续执行的过程。

2. 中断源

        打断 CPU 执行当前任务的事件 / 源头(51 单片机有 5 个中断源)。

3. 中断源分类

        外部中断 0、外部中断 1、定时器 0、定时器 1、串口。

4. 外部中断

        由单片机引脚电平变化引发的中断(对应引脚:INT0(P3-2)、INT1(P3-3))。

5. 中断优先级

        CPU 处理中断时,会比较多个中断的优先级,优先处理优先级高的中断。

6. 中断嵌套

        处理一个中断时,可嵌套处理另一个中断;51 单片机最多允许嵌套 2 层。

7. 中断处理流程

  1. 中断源发出中断请求。
  2. 检查 CPU 是否响应中断及该中断源是否被屏蔽。
  3. 比较中断优先级。
  4. 保护现场。
  5. 执行中断服务函数(回调函数)。
  6. 恢复现场。

8、单片机中断源分类及对应引脚 / 功能:

中断源对应引脚 / 模块触发方式 / 功能
外部中断 0P3.2(INT0)电平触发(低电平)或边沿触发(下降沿)
外部中断 1P3.3(INT1)电平触发(低电平)或边沿触发(下降沿)
定时器 0 中断内部定时器 0定时器计数溢出时触发
定时器 1 中断内部定时器 1定时器计数溢出时触发
串口中断内部串口模块串口接收 / 发送数

四、中断相关寄存器配置

1. IE 寄存器(中断允许寄存器)

        将 IE 寄存器的 bit7(EA)置 1:CPU 允许响应所有中断。

        将 IE 寄存器的 bit0(EX0)置 1:允许外部中断 0 产生中断。

2. TCON 寄存器(定时器寄存器)

        将 TCON 寄存器的 bit1(IE0)置 1:向 CPU 发起中断请求,CPU 响应后由硬件清 “0”。

        将 TCON 寄存器的 bit0(IT0)置 1:外部中断 0 由下降沿触发。

五、定时器

        定时器用于产生精准定时,满足不同外设对时序的高要求(高 / 低电平时间精准)。

        51 单片机内部有 2 个定时器:timer0、timer1,均为自增型 16 位计数器。

        时钟与时间关系

                晶振频率:12MHZ / 11.0592MHZ(51 单片机需 12 分频,12MHZ/12=1MHZ)。

                51 单片机一条指令运算时间:1/1MHZ = 1us。

                通过定时器 0 实现 1ms 定时:1ms=1000us,定时器初值为 64535。

六、定时器相关寄存器配置

        8 位自动重装载定时器:分为 TL0 和 TH0 两部分(各 1byte),仅 TL0 参与计数;TL0 加到 255 溢出后,TH0 的值会重新装入 TL0。

1. TCON 寄存器

  • bit4 置 1,且 TMOD 寄存器的 Gate 位清 0:允许定时器开始计数。

2. TMOD 寄存器

  • 定时器 0 的低四位清 0。
  • 将 TMOD 寄存器的 M0(bit0)置 1:定时器 0 工作在 16 位定时器 / 计数器模式。

3. IE 寄存器

  • bit7 置 1:CPU 允许响应所有中断。
  • bit1 置 1:允许定时器 0 产生中断。

配置流程

  1. 配置 TMOD 模式选择寄存器:低四位清 0,bit0 置 1(16 位定时器模式)。
  2. 向 TH0 和 TL0 装入初值(1ms 定时对应 64535)。
  3. TCON 寄存器 bit6 置 1:允许定时器开始计数。
  4. IE 寄存器 bit7 和 bit1 置 1:开启中断总开关和定时器 0 子开关。
  5. 编写定时器 0 的中断服务函数。

七、PWM 与蜂鸣器

PWM(脉冲宽度调制)

        让引脚产生方波,使引脚电平周期性翻转。

  • PWM 周期:一个方波的周期(从上升沿到下一个上升沿 / 从下降沿到下一个下降沿的时间)。
  • PWM 占空比:一个周期内高电平所占的比例。

蜂鸣器

        通过震荡源产生声音,音调由频率决定(高频→高音,低频→低音),音量由振幅决定(能量)。

  • 有源蜂鸣器:自带震荡源,通电后发出固定频率声音。
  • 无源蜂鸣器:无震荡源,需外部提供震荡信号才发声。

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

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

相关文章

什么是Token?——理解自然语言处理中的基本单位

在日常生活中,我们使用手机语音助手、自动翻译软件和聊天机器人等智能工具,而这些技术背后都离不开对语言的精细处理。今天,我们就来聊聊“token”这一看似专业的术语,了解它在自然语言处理(NLP)中的重要作…

线程通信机制

目录 一、主线程与子线程基础通信 1.1 主线程向子线程传递数据 二、子线程向主线程返回数据 2.1 通过共享变量方式 2.2 同步块中使用wait/notify机制 2.3 Lock和Condition实现线程通信机制 一、主线程与子线程基础通信 1.1 主线程向子线程传递数据 通过构造函数传递参数…

硬盘 (FOREIGN) Slot:Unconfigured Bad

IBM 服务器硬盘故障,在webbios里看到有显示(Foreign)Slot:xxxx, Unconfigured Bad的硬盘,选中该硬盘进入属性页面在属性列表中找到“Media Error”和“Pred Fail Count”两项(如果找不到请点击【Next】翻页&#xff09…

Vite 环境变量与全局变量详解

目录 一、什么是环境变量? 二、Vite 的环境变量机制 1. .env 文件 2. 定义环境变量 3. 使用环境变量 4. 内置环境变量 三、Vite 中的全局变量 1. 使用 define 配置 2. 使用 TypeScript 声明 四、环境变量 vs 全局变量 五、常见问题与坑点 1. 为什么必须…

华为S5720交换机配置教程:开启Web管理功能

华为S5720交换机Web登录配置指南 华为S5720系列交换机支持通过Web界面进行管理,这是一种图形化的操作方式,比命令行更直观易用。以下是配置S5720交换机开启Web登录的详细步骤。 一、准备工作 连接设备:使用Console线连接交换机的Console…

插入排序及希尔排序

插入排序是一种十分简单有效的排序算法,其基本思想就是将每一个待排序的数据按照关键字大小插入前边已经排好序的子序列之中。 文章目录最基本的插入排序折半插入排序希尔排序 最基本的插入排序 插入排序的基本思想如图可以看出,不断选中数组中的元素&am…

码农必备!本地调试神器act,GitHub Actions最佳拍档

引言 在现代软件开发实践中,持续集成和持续部署(CI/CD)已成为不可或缺的环节。GitHub Actions 作为 GitHub 官方提供的 CI/CD 解决方案,凭借其与代码仓库的深度集成和丰富的生态系统,获得了广大开发者的青睐。然而,每次修改 CI/C…

大模型本地部署与API服务教程

大模型本地部署与API服务教程 目标:在Ubuntu服务器部署本地大模型,并提供API服务,支持局域网下的Windows客户端调用。 支持两种部署方式:① 自建FastAPI服务(高定制) ② 使用Ollama(极简快速&am…

亚马逊美加站点物流新规解读:库存处理逻辑重构与卖家应对策略

2025年9月,亚马逊美国与加拿大站点即将实施物流计划强制调整,批量清货与捐赠计划的规则迭代,标志着平台对库存生命周期管理的重视程度提升,此次新规以“可持续发展”为核心导向,通过强制与默认参与的双重机制&#xff…

SpringBoot Web 入门指南:从零搭建第一个SpringBoot程序

SpringBoot Web 入门指南:从零搭建第一个SpringBoot程序SpringBoot Web 入门指南:从零搭建第一个SpringBoot程序一、Web开发基础:静态/动态资源与B/S、C/S架构解析​资源类型系统架构二、Spring 与 Spring Boot 核心介绍1. Spring 框架2. Spr…

从图灵完备性到现实差距:为什么你的设备和你本人都潜力无限,却表现各异?

理论上的无限潜力,为何被困在现实的牢笼中?一、引言:一个反直觉的概念 在计算机科学中,图灵完备性(Turing Completeness) 是衡量一个系统计算能力的黄金标准。它得名于计算机科学之父艾伦图灵(A…

Android系统打通HAL层到应用层 --- Framework框架搭建

本文是接续上文,针对于HAL层的接口封装Framework层的接口 HAL层框架搭建:https://blog.csdn.net/m0_50408097/article/details/151148637?spm1001.2014.3001.5502 在 Android 系统架构中,Framework 层(框架层) 位于 H…

LwIP入门实战 — 2 LwIP概述

目录 2.1 LwIP简介 2.2 LwIP文件架构分析 2.2.1 LwIP软件架构 2.2.2 主要模块划分 2.3 IPC通讯机制 2.4 LwIP的3种编程接口 2.4.1 RAW/Callback API 2.4.2 Netconn API 2.1 LwIP简介 LWIP(Light Weight Internet Protocol,轻型网络协议栈&#…

微信小程序-day3

页面导航跳转声明式导航注意:url开头要有/1. 导航到 tabBar 页面2. 导航到非 tabBar 页面3. 后退导航编程式导航跳转传参参数可以在onLoad里用option获取下拉刷新事件可在onPullDownRefresh中定义下拉事件对应操作在其中加入这个函数wx.stopPullDownRefresh()&#…

关于ES中文分词器analysis-ik快速安装

ES中文分词器插件 安装快速安装手动安装 应用ik_max_word 与 ik_smart 的区别验证是否生效 官方地址:https://github.com/infinilabs/analysis-ik 安装 快速安装 插件安装(将链接最后的版本号换成当前ES版本号): bin/elastics…

STM32G4 电流环闭环

目录一、STM32G4 电流环闭环1 电流环闭环PID控制2 电流环闭环建模附学习参考网址欢迎大家有问题评论交流 (* ^ ω ^)一、STM32G4 电流环闭环 1 电流环闭环 电流环框图 PID控制 时域和拉普拉斯域的传递函数 PID: P比例部分,I积分部分,D微分…

利用 Java 爬虫获取淘宝商品详情 API 接口

本文将详细介绍如何使用 Java 编写爬虫程序,通过淘宝开放平台的高级版 API 接口获取商品的详细信息。一、淘宝商品详情 API 接口概述淘宝开放平台提供了多个 API 接口用于获取商品的详细信息,其中 taobao.item.get 和 taobao.item.get_pro 是常用的接口。…

idea上传本地项目代码到Gitee仓库教程

前言:本地一个项目代码上传到Gitee仓库1.登录Gitee官网新建仓库(命名跟项目同名)2.idea添加Gitee插件(需要Restart)3.idea配置已安装git的路径4.idea添加Gitee账户5.给项目创建Git本地仓库Git仓库创建成功,…

往届生还有机会进入计算机这个行业吗?还能找见好工作吗

前言 最近有很多的往届生来咨询我,问我还能找见工作吗,还能进入这一行吗(大多数都是一些24届,考研失败的同学) 针对目前这种情况,还能不能进,只能说很难,非常难。 在这里&#xff0c…

Python爬虫实战:研究 Lines, bars and markers 模块,构建电商平台数据采集和分析系统

1. 引言 1.1 研究背景 随着互联网技术的飞速发展,网络上积累了海量的数据资源,这些数据蕴含着丰富的信息和价值。如何高效地获取、处理和分析这些数据,成为信息时代面临的重要课题。Python 作为一种功能强大的编程语言,凭借其丰富的库支持和简洁的语法,在网络数据爬取和…