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

51单片机(二)中断系统与外部中断实验

  • 中断即单片机因为某些原因E暂定现在的工作P0,转去做其他的工作P1,完了之后继续之前的事P0,其他工作P1就是中断程序,原因E就是中断事件,原因由外部发生,程序不能预测到的是硬中断,可以由程度触发的中断是软中断。

  • 51系列单片机一定有五个基本五个中断: 外部中断0,外部中断1,定时器中断0,定时器中断1,串口中断。

  • 实现一个中断监听程序有四个步骤:
    1. CPU打开中断请求
    2. 对应的中断事件的中断允许位打开
    3. 明确中断事件的触发方式,是边沿触发还是电平触发
    4. 在中断服务地址处写上中断处理程序

  • 中断允许控制寄存器
    在REGX52.H文件中定义的 sfr IE = 0xA8; 就是中断允许控制寄存器,其中

    • sbit EA = 0xAF; // IE^7 是CPU中断允许位
    • sbit EX0 = 0xA8; // IE^0是外部中断0
    • sbit ET0 = 0xA9; // IE^1是时钟中断0
  • 中断请求标志寄存器
    REGX52.H中 sfr TCON = 0x88; 是中断请求标志寄存器

    • sbit IT0 = 0x88; 代表外部中断0请求方式设置位,0 为电平触发,1为边沿触发。
    • sbit IE0 = 0x89; 代表外部中断0请求标志
    • sbit TF0 = 0x8D; // time flag代表时钟0溢出标志
  • 中断号

    1. int0
    2. t0
    3. int1
    4. t1
    5. usart
  • 做一个实验按下一个按键来控制小灯点亮与熄灭
    在这里插入图片描述
    原理图中GPIO p3.2 与 int0 复用,所以按键可以接在p3.2端口来触发中断。
    在这里插入图片描述
    按键一边接地,一边接GPIO,当按键按下,线路连通,GPIO就接地,相当于低电平。

#include <REGX52.H>sbit key1 = P3^2;
sbit led1 = P0^0;int main()
{led1 = 1;EA = 1;EX0 = 1;IT0 = 1;while(1){}return 0;
}void on_key1_press() interrupt 0
{int debouncing_duration= 0xff;while(debouncing_duration--) {}if (key1 == 0){led1 = !led1;	}
}

http://www.mrgr.cn/news/82758.html

相关文章:

  • 【Flink CDC】Flink CDC的Schema Evolution表结构演变的源码分析和流程图
  • 算法练习----2025/1/7
  • PostgreSQL学习笔记(一):PostgreSQL介绍和安装
  • 【C++面向对象——输入输出流】处理二进制文件(头歌实践教学平台习题)【合集】
  • Wend看源码-Java.util 工具类学习(下)
  • leetcode 热题100(32. 最长有效括号)栈 c++
  • INT305 Machine Learning
  • Linux 35.6 + JetPack v5.1.4之 pytorch升级
  • 【LC】2469. 温度转换
  • Haskell语言的面向对象编程
  • 【python如何使用随机模块】
  • 智能工厂的设计软件 应用场景的一个例子: 为AI聊天工具添加一个知识系统 之23 “单子”职业能力原型:PIN语言/AI操作系统/robot扮演的actor
  • DX12 快速教程(3) —— 画矩形
  • easyx空洞武士项目总结
  • 基于springboot+vue的餐饮连锁店管理系统的设计与实现
  • 3272 小蓝的漆房
  • 【设计模式-2】23 种设计模式的分类和功能
  • 代码随想录算法训练营day23
  • 安装Linux
  • Oracle Dataguard(主库为单节点)配置详解(3):配置备库
  • 力扣【SQL连续问题】
  • App窗口创建流程(Android12 )
  • (已开源-AAAI25) RCTrans:雷达相机融合3D目标检测模型
  • 【设计模式-1】软件设计模式概述
  • 【Python】绿色便携版Python制作(发布)方法
  • Oracle Dataguard(主库为单节点)配置详解(2):配置主库