单片机在线演绎《当幸福来敲门》------ 中断机制

首先我们来了解一下什么是中断:

中断

1.基本概念

1中断系统:

  • 当中央处理器CPU正在处理某件事的时候,外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完之后,再回到原来被中断的地方,继续原来的工作

2 中断源:

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

3常见的五个中断源:

  1. 外部中断0
  2. 外部中断1
  3. 定时器中断0
  4. 定时器中断1
  5. 串口UART中断

2.外部中断

1.基本概念:

  • 引脚的电平变化所引发的中断(外部中断0:P3_2,外部中断1:P3_3)

2.实现形式:

  • 当外部中断的某个引脚发生了由高电平->低电平的变化时,实现中断(下降沿中断)
  • 某个引脚指的是控制外部中断0,1 的P3_2 与 P3_3

3.中断优先级概念:

  • CPU去执行中断任务时,会去比较多个任务的优先级,优先去执行优先级较高的中断

4.中断嵌套:

  • 在中断中再去中断一次(不推荐,51单片机中最多嵌套两次)

5.中断处理流程:

  1. 中断源发出中断请求;
  2. 检查CPU是否允许响应中断,以及该中断源是否被屏蔽(需要自行配置)
  3. 比较中断优先级
  4. 保护现场(会将当前执行到的地址保存在栈区)
  5. 执行中断服务函数((void (*fun)(void) interrupt x)
  6. 恢复现场(回到之前保存的地址)

6.实现函数流程:

中断向量表:

中断所执行的函数都是通过中断向量表去查找的,中断向量表本质上就是一个数组,存放中断服务函数入口地址

中断向量:

本质上是一个标号,可以通过标号在中断向量表中查找到中断服务函数的入口地址:

3.定时器中断

定时器中断可以通过计算实现精准的定时:

  • timer 0 :计数器 0 16位模式定时器 ,65535 自增型定时器
  • timer 1 : 计数器1 8位自动重装载定时器,

单片机晶振为 12Mhz

芯片系统中存在分频器:

分频之后:12Mhz / 12 = 1Mhz

1 / 1Mhz = 1 us

利用timer0 实现 1ms 定时

计时器加一次所需要的时间为 1us

1ms = 1000us

1000us / 1us = 1000;

将1000 装载进定时器计时的16位模式定时器中

定时器加到65535 会溢出触发定时器中断,之后需要手动重新装载数据,

函数操作流程如图:

4常见功能实现

利用PWM实现蜂鸣器控制:

1.PWM:

PWM 概念:

  • 脉冲宽度调试
  • 能使引脚电平变化产生一个方波
  • PWM可以让引脚电平周期性翻转

PWM周期

  • 一个PWM方波所经历的时间(从上升沿或下降沿->下一个上升沿或者下降沿)

PWM占空比:

  • 高电平在一个周期内所占的比例

2.蜂鸣器:

1.有源头蜂鸣器:

  • 内部存在一个震荡源,上电后蜂鸣器会发出固定频率的声音

2无源蜂鸣器:

  • 内部无震荡源,上电后不发出声音,需要外加震荡才能发生

3.震荡源:

  • 频率->音调不同 高音高频,低音低频
  • 振幅->音量不同

通过定时器中断,在中断执行函数中更改P2寄存器的电平可以实现PWM的生成,PWM作用在蜂鸣器上相当于外加了一个震荡源,通过更改定时器时间,改变震荡源频率,实现对于蜂鸣器的控制

相关推荐
小白学电子_4 小时前
proteus仿真51单片机通过定时器控制红绿灯
嵌入式硬件·51单片机·proteus
鲨辣椒100865 小时前
51单片机初相识
单片机·嵌入式硬件·51单片机
独处东汉5 小时前
freertos开发空气检测仪之完结_Air_check_App 工程概览与使用说明
stm32·单片机·嵌入式硬件·freertos
爱喝纯牛奶的柠檬8 小时前
基于STM32的4*4矩阵软键盘驱动
stm32·嵌入式硬件·矩阵
电子工程师成长日记-C518 小时前
51单片机低频信号发生器
单片机·嵌入式硬件·51单片机
望酹江月8 小时前
HNU-RFID与传感器原理实验
c语言·单片机
GodKK老神灭8 小时前
FOC中PLL的点乘法
单片机
逐步前行9 小时前
STM32_DMA_寄存器操作
stm32·单片机·嵌入式硬件
Funing710 小时前
无法打开 源 文件 “esp_err.h“
嵌入式硬件·esp32