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

单片机-外部中断

       中断是指 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.kler.cn/a/473074.html

相关文章:

  • 江科大STM32入门——IIC通信笔记总结
  • 009:传统计算机视觉之边缘检测
  • Flink系统知识讲解之:如何识别反压的源头
  • Linux内核 -- Mailbox Subsystem 之 devm_mbox_controller_register 的作用与使用示例
  • vscode通过ssh连接服务器实现免密登录
  • 关于FPGA中添加FIR IP核(采用了GOWIN EDA)
  • springboot 集成 etcd
  • YCM上告警项怎么修改
  • 【转载记录】Scikit-learn 报错:’super’ object has no attribute ‘__sklearn_tags__’.
  • Perl语言的语法糖
  • 【HTML+CSS+JS+VUE】web前端教程-2-HTML5介绍和基础骨架
  • 【2024华为OD-E卷-100分-boss的收入】(题目+思路+JavaC++Python解析)
  • 【并发篇】CompletableFuture学习
  • JavaScript 正则表达式
  • 代码随想录算法训练营第1天(数组1)| 704. 二分查找、27. 移除元素、977.有序数组的平方
  • 【数据库】SQL相关知识点总结1(数据库约束、三大范式、关系模型、聚合函数)
  • 为什么页面无法正确显示?都有哪些HTML和CSS相关问题?
  • PHP语言的函数实现
  • svelte5中使用react组件
  • 跨界融合:人工智能与区块链如何重新定义数据安全?
  • MATLAB语言的软件工程
  • c#13新特性
  • 推动多语言语音科技迈向新高度:INTERSPEECH 2025 ML-SUPERB 2.0 挑战赛
  • JAVA常见问题解答
  • 【LeetCode Hot100 贪心算法】 买卖股票的最佳时机、跳跃游戏、划分字母区间
  • 【网络云SRE运维开发】2025第2周-每日【2025/01/08】小测-【第8章 STP生成树协议】理论和实操