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占空比:在一个周期内高电平所占的比例

蜂鸣器

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

计算初值

相关推荐
A小调的码农3 小时前
OPENOCD+MSYS+VSCODE:从“灯不亮“到“终于亮了“
ide·vscode·stm32·单片机·编辑器
嵌入式-老费5 小时前
esp32开发与应用(用好ttl转485模块)
stm32·单片机·嵌入式硬件
謓泽6 小时前
【6.30】芯片 Bring-up 三步核心|从短路检查到 SPI 排障全拆解!
单片机·嵌入式硬件
2CM_Embed6 小时前
Quartus II 工程编译与 FPGA 下载流程记录
嵌入式硬件·fpga开发
OIDCAT6 小时前
国产USB转千兆网卡芯片CH398 VLAN应用
网络·嵌入式硬件·国产·usb转千兆网卡
Industio_触觉智能6 小时前
RK3576开发板GPIO驱动入门教程,基于触觉智能开发板教学-上
嵌入式硬件·硬件工程·智能硬件·开发板·gpio·瑞芯微·rk3576
csg11076 小时前
PIC单片机PWM信号生成与控制
单片机·嵌入式硬件·物联网·自动化
薄情书生6 小时前
基于51单片机的电子钟设计(LCD12864显示 + DS1302)
c语言·51单片机·protues
A小调的码农7 小时前
给垃圾平板“一生E本” 装新系统—————Armbian 编译 KYX T7Y (RK3326) 踩坑全记录
linux·嵌入式硬件