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

单片机-外部中断

       中断是指 CPU 在处理某一事件 A 时,发生了另一事件 B,请求 CPU 迅速去处理(中断发生);CPU 暂时停止当前的工作(中断响应), 转去处理事件 B(中断服务);待 CPU 将事件 B 处理完毕后,再回到原来事件 A 被中断的地方继续处理事件 A(中断返回)

1、中断结构

 

中断源对应的管脚中断号中断允许标志位
INT0P3.20EX0
T0P3.31ET0
INT1P3.42EX1
T1P3.53ET1
RI、TIP3.0  P3.14

2、中断相关寄存器

 (1)中断允许控制

EA:中断总开关

(2)中断请求标志 TCON

IT0/IT1=0,电平触发;IT0/IT1=1,下降沿触发

(T0,T1)定时器中断0/1:TF0,TF1 ——中断请求控制位      ET0,ET1——中断允许标志位

(INT0,INT1)外部中断0/1:IT0,IT1——中断请求控制位      EX0,EX1——中断允许标志位

3、外部中断配置 

51 单片机发生中断必须要满足以下3个条件

①中断源有中断请求;

②此中断源的中断允许位为 1

③CPU 开中断(即 EA=1)。

比如我们配置外部中断 0,对应的配置程序如下:

EA=1;//打开总中断开关

EX0=1;//开外部中断 0

IT0=0/1;//设置外部中断的触发方式       0——电平触发    1——下降沿触发

void exti0_init(void)

{

        IT0=1;//跳变沿触发方式(下降沿)

        EX0=1;//打开 INT0 的中断允许

        EA=1;//打开总中断

当触发中断后即会进入中断服务函数,外部中断 0 中断服务函数如下:

void exti0() interrupt 0   //外部中断 0 中断函数 

{

//执行所需的功能

}

 注:interrupt 是一个关键字,表示 51 单片机中断,后面的“0”是中断号

外部中断实验: 使用独立按键 K3 控制D6指示灯亮灭

#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
void delay_10us(u16 ten_us){
    while(ten_us--);
}


sbit KEY3=P3^2;
sbit LED6=P2^5;

//外部中断0的配置函数
void exti0_init(){
    EA=1;//打开总开关
    EX0=1;//中断允许位         EX0—外部中断0允许位   EX1—外部中断1允许位
    IT0=1;//下降沿触发有效
}


void main(){
    while(1){
        exti0_init();
    }
}


//外部中断0的服务函数
void exti0() interrupt 0{
    delay_10us(1000);  //按键消抖
    if(KEY3==0){
            LED6=!LED6;
    }
}

http://www.lryc.cn/news/517900.html

相关文章:

  • 《解锁计算机视觉智慧:编程实现图片场景文字描述的开源宝藏》
  • onLoad 生命周期函数是否执行取决于跳转的方式和小程序的页面栈管理机制
  • Visio 画阀门 符号 : 电动阀的画法
  • OOM排查思路
  • 《Spring Framework实战》10:4.1.4.2.详细的依赖和配置
  • 网络安全-XSS跨站脚本攻击(基础篇)
  • Git的学习和常见问题
  • Flink源码解析之:Flink on k8s 客户端提交任务源码分析
  • STLG_02_02_MS SQL - SSMS的安装和使用
  • git 常用命令和本地合并解决冲突
  • ThinkPHP 8高效构建Web应用-获取请求对象
  • 机器人技术:ModbusTCP转CCLINKIE网关应用
  • C语言的语法
  • ElasticsearchJavaClient工具类分析
  • Docker-文章目录
  • docker安装codeserver 运行vite项目(linux)
  • Electron快速入门——跨平台桌面端应用开发框架
  • Delphi+SQL Server实现的(GUI)户籍管理系统
  • 【JavaEE进阶】获取Cookie/Session
  • 在macOS上安装Flutter和环境配置
  • 【电子通识】PWM驱动让有刷直流电机恒流工作
  • Maven在不同操作系统上如何安装?
  • maven如何从外部导包
  • 如何在 Hive SQL 中处理复杂的数据类型?
  • 数据结构:DisjointSet
  • 中国省级产业结构高级化及合理化数据测算(2000-2023年)
  • Nginx不使用域名如何配置证书
  • Perturbed-Attention Guidance(PAG) 笔记
  • 自动驾驶控制与规划——Project 6: A* Route Planning
  • 通俗易懂之线性回归时序预测PyTorch实践