51单片机--中断/定时/PWM

GPIO

GPIO:Genral Purpose Input/Output,通用目的输入输出

引脚输入输出

两种工作模式:

1.输出模式:给定单片机引脚电平,控制引脚输出高/低电平(LED控制、数码管控制、蜂鸣器控制)

2.输入模式:检测引脚电平变化(用于检测外部电平信号 按键检测、检测ADC信号)

按键

  1. 按键一端接到GND,另外一端接到GPIO引脚
  2. 如果按键被按下,GND会和引脚短路到一起,此时引脚呈现低电平,代表按键被按下

中断

概念:CPU在处理某个任务时,被外界更为紧急的事件打断,要求CPU优先去处理这个更为紧急的事件;处理完紧急事件后,再回到之前被打断的地方继续向下执行

中断源

打断CPU执行当前的任务源头/事件

中断源分类

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

外部中断

引脚电平变化所引发的中断
INT0:P3_2引脚 INT1:P3_3引脚

中断优先级

CPU总是先处理优先级高的中断,处理完优先级高的中断后再处理优先级低中断
优先级:INT0>TIMER0>INT1>TIMER1>UART

中断嵌套

CPU处理一个中断时再去嵌套另外一个中断任务(最多两层嵌套)

中断处理流程(中断源->CPU过程)

1.中断源发出中断请求

2.检查CPU是否允许中断(总开关 能够响应外部中断)及该中断源是否被屏蔽(子开关 能够产生对应的中断)

3.比较中断优先级

4.保护现场

5.执行中断服务函数(回调函数)

6.恢复现场

中断向量表:本质是一个数组,数组中存放的是中断服务函数的入口地址

中断向量:中断向量表中的标号,通过标号可以访问到对应中断服务函数

中断相关寄存器

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

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

定时器

概念:能够产生一个精准的定时,不同外设对时序的要求高(高电平和低电平时间是精准的)51单片机内部有两个定时器,分别为timer0、timer1,所使用自增型定时器(计数器 16位)

工作模式

定时器/计数器0有4种工作模式

  • 模式0(13位定时器/计数器)
  • 模式1(16位定时器/计数器模式)
  • 模式2(8位自动重装模式)
  • 模式3(两个8位定时器/计数器)

定时器/计数器1除模式3外,其他工作模式与定时器/计数器0相同,T1在模式3时无效,停止计数。

定时步骤

  1. 先配置TMOD模式选择寄存器,将低四位清0,再将bit0置1代表工作在16位定时器

  2. 向TH0和TL0中装入定时器的初值(1ms -> 64535)

  3. 将TCON寄存器中的bit6置1,代表允许定时器开始计数

  4. 将IE寄存器中的bit7和bit1置1,开启中断总开关和定时器0的子开关

  5. 编写定时器0的中断服务函数

定时器相关寄存器

TCON寄存器

bit4置1,TMOD寄存器中的Gate位清0, 代表允许定时器开始计数

TMOD寄存器

  • 定时器0->低四位清0
  • 将TMOD寄存器中的M0,bit0置1,代表定时器0工作在16位定时器/计数器模式

IE寄存器(中断)

  • 将IE寄存器中的bit7置1,代表CPU能够响应所有中断
  • 将IE寄存器中的bit1置1,代表允许定时器0产生中断

计算初值

晶振有12MHZ / 11.0592KHZ

计算步骤:

  • 51单片机达不到12MHZ,将12MHZ进行12分频,12MHZ/12 = 1MHZ
  • 51单片机完成一条指令运算:1/1MHZ = 1us
  • 通过定时器0实现1ms定时:1ms = 1000us
  • 定时器初值:65535 - 1000 = 64535

PWM控制蜂鸣器

概念:脉冲宽度调制,能够让引脚产生一个方波,周期性的让引脚的电平发生翻转

PWM周期:一个方波所经历的周期(从上升沿到上升沿所经历的时间/从下降沿到下降沿所经历的时间)

PWM占空比:在一个周期内高电平所占的比例

蜂鸣器

有源蜂鸣器:内部存在震荡源,通电后可以发出持续固定频率的声音
无源蜂鸣器:不存在震荡源,需要给定对应引脚一个高低电平产生震荡(可以输出指定频率音调)

计算初值

相关推荐
Lzh编程小栈23 分钟前
【STM32底层精讲】RCC时钟系统超全详解(时钟树+源码+避坑指南)
c语言·stm32·单片机·嵌入式硬件·面试
蓝斯49715 小时前
从.到实现一个Windows上的虚拟hid键盘设备
windows·单片机·计算机外设
熙芯XiChip15 小时前
硬实时与软实时RTOS核心区别
嵌入式硬件
伟大的前程16 小时前
unsigned int 定义的变量 在 电脑的 64 位系统中 和 32 位 cortex-m0 和 8 位的 51 单片机
单片机·嵌入式硬件
小渔村的拉线工16 小时前
1.HPM6E80 解析芯片整体工作原理和存储架构
单片机·嵌入式硬件·mcu·架构·hpm6e80
熙芯XiChip17 小时前
CAN与CANopen的本质区别
单片机
lilihewo17 小时前
Altium Designer 封装库的创建(分享pcb 3D封装库)
嵌入式硬件·51单片机
神罚天下ET18 小时前
典型arm位单片机启动流程(从上电到main.c)
c语言·arm开发·单片机
碧海银沙音频科技研究院19 小时前
蓝牙耳机使用WSDF5361锂保芯片进入船运模式实现方法
嵌入式硬件·算法
Zevalin爱灰灰20 小时前
模拟信号链电路——基于TL431的电压基准电路
单片机·嵌入式硬件