当前位置: 首页 > news >正文

硬件开发1-51单片机2-按键、中断

一、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.dtcms.com/a/365175.html

相关文章:

  • Process Lasso:高效管理和优化计算机进程
  • 并查集_路径压缩
  • [嵌入式embed][Qt]Qt5.12+Opencv4.x+Cmake4.x_用Qt编译linux-Opencv库 测试
  • Linux 用户的 Windows 改造之旅
  • linux命名管道的使用
  • 关于linux数据库编程——sqlite3
  • Unity 中 打包 assetsBundle
  • C语言字符函数和字符串函数(1)
  • 《网络安全实战:CC攻击(应用层)与DDoS攻击(网络层)的底层逻辑与防御体系》​
  • 基于SpringBoot+Vue开发的环境保护监督管理网站
  • 如何通过控制台查看向量检索服务使用数据
  • Vue Router原理及SPA页面刷新解析
  • 融云:当我们谈论 AI 重构业务时,我们到底在谈论什么
  • SAM TTS网页官网入口 – 在线版微软tts在线语音合成助手
  • 【TRAE调教指南之MCP篇】FastMCP:快速制作自己的MCP服务
  • 对锁的总结
  • Agent 热潮遇冷?Manus 为何仍是 “版本神”
  • 充电枪结构设计-经验总结
  • 具身智能让人形机器人 “活” 起来:懂语言、能感知、会行动,智能进化再提速
  • docker安装rabbitmq(4.1.4-management)
  • 客户分层是什么?提升企业运营效率
  • 【python】运算符及语句
  • 数据结构:栈和队列(上)
  • 低代码革命遇瓶颈?这个“套娃神技“才是破局关键!
  • 【FastDDS】Layer DDS之Domain ( 05-Creating a DomainParticipant)
  • 关于linux网络编程——3
  • 扫地日记:有鹿巡扫机器人在景区被人类“调戏”的365天
  • ansible总结2
  • GIS大学课程表都长啥样?几个地信专业的大学一周课程表
  • 如何评价2025年数学建模国赛?