硬件驱动——51单片机:独立按键、中断、定时器/计数器

ops/2025/3/19 7:42:01/

目录

一、独立按键

1.原理

2.封装函数 

3.按键控制点灯+ 数码管

二、中断 

1.原理 

2.步骤

3.中断寄存器IE

4.控制寄存器TCON

5.打开外部中断0和1

三、定时器/计数器

1.原理

2.控制寄存器TCON

3.工作模式寄存器TMOD

4.按键控制频率的动态闪烁    


一、独立按键


1.原理

         单片机通电后,单片机>51单片机的40个引脚均为高电平(即值均为1),其中引脚5~8为寄存器P1后四个引脚P14~P17,负责控制独立按键模块的4个按键开关

        按键按下后,对应线路导通,电压接低变为低电平

2.封装函数 

3.按键控制点灯+ 数码管

        按下特定按键,对应的LED灯亮起,同时数码管显示对应数字

 

二、中断 


1.原理 

  • 中断向量表:

        即一个函数指针的数组

        void (*pfn)(void)  interrupt n

 2.步骤

        中断处理六大步骤:

3.中断寄存器IE

4.控制寄存器TCON

5.打开外部中断0和1

        打开外部中断0和外部中断1,当外部中断0执行时,点亮所有LED灯,当外部中断1执行时,熄灭所有LED灯

 

三、定时器/计数器


1.原理

        定时器/计数器的核心部件是一个加法计数器,其本质是对脉冲进行计数。

        本人使用的单片机>51单片机的系统时钟频率为11.0592MHz,定时器每12个时钟得到一个计数脉冲,计数值加1。计数值的类型为unsigned short,大小为两个字节,计数范围为0~65535

        故实际有效频率为:11.0592*1000*1000÷12=921600Hz

        周期为:1÷921600=1.08507e^-6秒,接近1微秒。

        若需要1毫秒计数一次,则定时器的初值应为65535-(921600÷1000)=64613

2.控制寄存器TCON

3.工作模式寄存器TMOD

4.按键控制频率的动态闪烁    

         以16位定时器模式工作,按下不同的按键,使LED灯分别按照1s,500ms,200ms,100ms动态闪烁


http://www.ppmy.cn/ops/166977.html

相关文章

SAP-ABAP:SAP外网接口调用技术全景指南

SAP外网接口调用技术全景指南 1. 核心调用方式对比矩阵 方法类型协议支持适用场景开发复杂度维护成本典型应用案例HTTP ClientREST/HTTP通用API集成★★☆低调用第三方支付接口SOAP ProxySOAP/WSDL标准化Web服务★★★中银行系统对接OData ClientODataSAP生态集成★★☆低Fio…

C++差分风暴:区间修改终极模板

目录 🔥 差分核心价值 🌟 一维差分模板 1. 核心思想 2. 代码实现 3. 动态图示 📦 二维差分模板 1. 核心公式 2. 代码实现 3. 二维修改示意图 🚨 六大避坑指南 💡 复杂度对比 🌈 LeetCode实战 &…

验证哥德巴赫猜想(C语言)

哥德巴赫猜想&#xff1a;任一大于2的偶数都可写成两个质数之和。&#xff08;——欧拉提出的观点&#xff09; 代码如下&#xff1a; #include<stdio.h> #include<stdbool.h> #include<math.h> bool isprime(int n) { if (n < 2) return f…

机器学习驱动的智能化电池管理技术与应用

电池管理技术概述 电池的工作原理与关键性能指标 电池管理系统的核心功能 SOC估计 SOH估计 寿命预测 故障诊断 人工智能机器学习 基础 人工智能的发展 机器学习的关键概念 机器学习在电池管理中的应用案例介绍 人工智能在电池荷电状态估计中的应用 荷电状态估计…

启幕数据结构算法雅航新章,穿梭C++梦幻领域的探索之旅——二叉树序列构造探秘——堆的奥义与实现诗篇

人无完人&#xff0c;持之以恒&#xff0c;方能见真我&#xff01;&#xff01;&#xff01; 共同进步&#xff01;&#xff01; 文章目录 一、堆的定义与结构二、堆的实现1.堆的初始化和销毁堆的初始化堆的销毁 2.向上调整算法和入堆向上调整算法入堆 3.向下调整算法和出堆顶数…

centos6.10 编译gcc11.5.0 支持mutilib(32bit,64bit)glibc2.11.3

我希望制作一个gcc&#xff0c;使用自带低版本glibc&#xff08;2.11.3&#xff09;系统自带glibc是2.12&#xff0c;同时要支持编译32位和64位代码&#xff0c;这样制作的gcc拷贝到其他高版本glibc系统&#xff0c;也可以生成兼容性好的代码 export SRC/dd/gcc-src export BUI…

【算法】动态规划

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 动态规划总结1、常见动态规划Fibonacci数列杨辉三角最小花费爬楼梯孩子们的游戏不同路径不同路径II珠宝的最高价值下降路径最小和…

leetcode 3110. 字符串的分数 简单

给你一个字符串 s 。一个字符串的 分数 定义为相邻字符 ASCII 码差值绝对值的和。 请你返回 s 的 分数 。 示例 1&#xff1a; 输入&#xff1a;s "hello" 输出&#xff1a;13 解释&#xff1a; s 中字符的 ASCII 码分别为&#xff1a;h 104 &#xff0c;e …