C51教程 第四个51程序:中断控制--外部中断0

2023-05-16

内部资源之外部中断

      中断类型                 中断入口地址     中断序号   
      外部中断0(INT0)P3.2      0003H           0
      外部中断1(INT1)P3.3      0013H           2
      定时计数器0(T0) 16bit    000BH           1
      定时计数器1(T1)          001BH           3
      定时计数器2(T2)          002BH           5
      异步串行通信口(UART)      0023H           4
      
CPU外围模块的掌握方法:
(1)相关口线
(2)相关控制字
(3)模块的工作方式
一、外部中断
   (1)相关口线
        P3.2:int0,外部中断0输入。分为低电平和下降沿两种可选触发
        P3.3:int1,外部中断1输入。分为低电平和下降沿两种可选触发
   (2)相关控制字
        IE :中断允许控制寄存器
           EA -- ET2 ES ET1 EX1 ET0 EX0      IE=0X85 : EA=1 EX1=1 EX0=1
             1 0  0  0   0   1   0   1 
           EA:  中断总允许控制位
           ET2:定时中断2允许控制位
           ES: 串行中断控制位
           ET1:定时中断1允许控制位
           ET0:定时中断0允许控制位
           EX0:外部中断0允许控制位
           EX1:外部中断1允许控制位
           当中断控制位为0时禁止中断,为1是允许中断
        IP:中断优先级控制寄存器
           -- -- PT2 PS PT1 PX1 PT0 PX0   PX0=0  PX1=1  IP=0X04;
           PX0:外部中断0优先级控制位
           PX1:外部中断1优先级控制位
           PT0:定时中断0优先级控制位
           PT1:定时中断1优先级控制位
           PT2:定时中断2优先级控制位
           PS:  串行中断优先级控制位
           优先级控制位为0时表示中断优先级为低,
                       为1时表示中断优先级为高,
           中断优先级高的中断源可再次中断中断优先级低的中断源
           同级间不能发生再次中断
        TCON:定时计数器控制寄存器
           TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0       IT0=1 : TCON=0X01
            0   0   0   0  0   0  0   1
           IT0:外部中断0触发方式选择位
              当IT0=0时,外部中断0为低电平触发中断
              当IT0=1时,外部中断0为下降沿触发中断,.优先选择
           IE0:外部中断0中断请求标志位
              当EA&EX0=1时,如果中断外部(P3.2)有信号时,
              IE0自动置1,当CPU响应中断后自动清零。

           IT1:外部中断1触发方式选择位
              当IT1=0时,外部中断1为低电平触发中断
              当IT1=1时,外部中断1为下降沿触发中断
           IE1:外部中断1中断请求标志位
              当EA&EX1=1时,如果中断外部脚(P3.3)有信号时,
              IE1自动置1,当CPU响应中断后自动清零。
(3)CPU外围模块的使用方法:
<1>相关控制字初始化;
<2>如果模块工作在中断模式,则编写响应中断功能的子程序。

单片机中断是指CPU在正常执行程序的过程中,由于计算机内部或外部发生了另一事件(如定时时间到,超压报警等),请求CPU迅速去处理,CPU暂时停止当前程序的运行,而转去处理所发生的事件。通俗的讲,就是单片机在中断发生时,就立即停止执行正在执行的内容,而去执行中断服务函数。

今天要做的一个实验,按下按键,停止主程序中的内容,立即转去执行中断服务函数。

我们主要看到原理图与代码,了解中断是什么,到底是怎么执行的

打开仿真软件,开始绘制原理图。
在这里插入图片描述
我们的目的是按下按键,CPU不在执行主程序,转去执行中断服务函数,我们为了更好的观察,主函数里让灯灭,中断服务函数让灯亮,只要灯亮了,那么就一定执行了中断服务函数。而中断服务函数执行条件就是外部中断引脚INT0或INT1检测到上升沿或者下降沿。(可以通过寄存器设置)


```c
#include <reg51.h>

sbit LED = P1^0;// 定义LED就是P1^0

void delayms(unsigned int t) //延时函数
{
	unsigned int a,b;
	for(a=0; a<t; a++)
	  for(b=0; b<120; b++);
}
void main(void)
{
	//设置INT0  (设置位寄存器)
	IT0=1;//跳变沿出发方式(下降沿)
	EX0=1;//打开INT0的中断允许。	
	EA=1;//打开总中断	
	while(1)
	{
	    LED = 0;	//注意,主函数是让led灭掉	
	}
}

/*外部中断0函数,只有INIT0引脚有下降沿才会触发,并且只会执行一次*/
/*外部中断0*/

void Int0()	interrupt 0		//外部中断0的中断函数
{
		LED = 1;
		delayms(1000);
}



在keil里编译,然后烧录到仿真,如果按下按键,灯亮一秒后熄灭,实验成功。不懂的话仔细分析代码与原理图,或者给我留言。
在这里插入图片描述
附带生成文件://download.csdn.net/download/mbs520/12168882

另外,提供给学者一本秘籍:《51精简版教程》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C51教程 第四个51程序:中断控制--外部中断0 的相关文章

  • Hive中的DDL操作

    参考文章 xff1a https www cnblogs com qingyunzong p 8723271 html 官方文档 xff1a https cwiki apache org confluence display Hive La
  • linux echo输出结果赋值给变量,shell变量n位补零

    name 61 96 echo 1 awk 39 printf 34 04d n 34 0 39 96 将 1 进行4位数补零 xff0c 后传递字符串给 name 将下面代码 xff0c 命名为 playVideo sh 的shell脚本
  • LCD1602和12864显示器-第1季第17部分-朱有鹏-专题视频课程

    LCD1602和12864显示器 第1季第17部分 3539人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第17个课程 xff0c 主要讲解LCD1602和LCD12864这两种单片机常用LCD显示器的显示原理 以及
  • CV小白实践--实现MNIST手写数字识别时遇到的问题

    1 RuntimeError size mismatch m1 800 x 4 m2 320 x 50 问题原因 xff1a 这个问题出现在神经网络最后一层卷积层与第一层全连接层之间 首先来看一下我实现的神经网络的结构 def init s
  • Hbase中Scan数据时的缓存优化以scan 过滤器的使用

    1 缓存优化 在hbase的java api 中 默认在scan 过程中scan next一次进行一次rpc请求 这导致scan的效率很低 设置scan的缓存优化很有必要 1 scan setBatch int 10 设置一次next 返回
  • 人脸识别之人脸检测(三)--Haar特征原理及实现

    本文主要由于OpenCV的haartraining程序 xff0c 对haar特征的补充及代码注释 原文 xff1a http www aiuxian com article p 2476165 html Haar特征的原理是什么 xff1
  • 网络基础(一)【解决mininet中xterm域名无法解析的问题】

    mininet是一个很好用的网络仿真实验平台 xff0c 基于网络命名空间技术的python封装 我是在linux虚拟机中安装了mininet环境 sudo mn mininet gt xterm h1 h2 启动一个xterm程序 xff
  • 多任务学习:Multi-Task Learning as Multi-Objective Optimization

    前言 最近在写一篇文章 xff0c 是一篇深度学习与安全相结合的文章 xff0c 模型的输出会交给两个损失函数 xff08 availability amp security xff09 进行损失计算 xff0c 进而反向传播 起初的想法是
  • 浅析Linux命令之alias

    转自 xff1a http man linuxde net alias 1 作用 用来设置指令的别名 我们可以使用该命令将一些较长的命令进行简化 使用alias时 xff0c 必须使用单引号将原来的命令引起来 xff0c 防止特殊字符导致错
  • Verilog实现串口通讯(UART)

    Verilog实现串口通讯 xff08 UART xff09 本代码参考了野火的相关教程 xff0c 实现了发送和接收回环 xff0c 同时可以通过串口数据控制LED灯的亮灭 xff0c 在电脑发送数据时要选择HEX发送模式 xff0c 发
  • Ubuntu 查看硬盘容量

    在服务器节点上使用硬盘较多 xff0c 被强制清盘多次 xff0c 清盘时需要查看文件夹占用情况 xff0c 并考虑是否重要来决定删除 因此必不可少一些查看硬盘占用的命令 1 du s h 43 路径 du s h 查看home目录下占用总
  • Matlab R2018a初始化问题

    前几天装的MATLAB2018 xff08 我装在C盘 xff0c 用的是在线安装 xff0c 自己下的License 破解了 xff09 xff0c 但是初始化问题一直没解决 xff0c 下面显示我遇到的问题 xff1a 等4 5分钟才就
  • vnc view安装与使用

    vnc view安装与使用 1 安装 vnc远程连接 xff0c 需要在服务器端安装vnc server 在客户端安装vnc viewer 这里我主要是研究如何在自己的电脑安装vnc viewer xff0c 来远程连接服务器 1 xff0
  • 温度传感器DS18B20-第2季第1部分-朱有鹏-专题视频课程

    温度传感器DS18B20 第2季第1部分 1700人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第2季第1个课程 xff0c 主要讲解单片机系统中常用的温度传感器DS18B20 本课程的目标是让大家进一步掌握时序的分析和编
  • Shell删除某个文件夹下指定字符开头的所有文件

    工作中遇到过日志文件夹里面存放的日志数量太多 xff0c 直接使用rm rf 删除提示参数太多 xff0c 其实是因为要删除的文件太多 xff0c 没法一次全部删除 xff0c 具体rm rf能够一次删除的数量是多少就不知道了 xff0c
  • Ubuntu 11.10 远程桌面Windows设置

    升级到Ubuntu 11 10时原来远程客户端tsclient不能用了 xff0c 那么怎么办 xff1f 两个途径可以 xff1a 1 Remmina远程桌面客户端 xff0c 如果在互联网下没有 xff0c 在新立得下安装即可 设定几乎
  • 模型的学习方式-迁移学习、多任务学习、小样本学习、元学习

    前言 无论是有监督学习还是无监督学习 半监督学习 无论算法是什么 xff0c 一直感觉机器学习 深度学习模型都是一种数据驱动的 换句话说 xff0c 足够且有质量的数据 xff0c 才能让模型学到一定的知识 xff0c 达到比较理想的效果
  • 【CVPR2019_论文汇总】(按方向划分,0401 更新中)

    转载链接 xff1a http bbs cvmart net topics 302 cvpr2019paper 作为计算机视觉领域三大顶会之一 xff0c CVPR2019 xff08 2019 6 16 6 19在美国洛杉矶举办 xff0
  • 基于MATLAB的卷积神经网络车牌识别系统

    车牌识别是基于车牌照片的车牌信息的识别工作 xff0c 车牌识别技术对我们的实际生活至关重要 xff0c 例如交通违规行为的增加 xff0c 拦截非法车辆 xff0c 在速度上能够进行快速识别能够很好地解决这些问题 获得的照片的质量是影响车
  • 互连网络的定义

    原文 xff1a http julong com cn Service FAQview asp FAQID 61 15 互联网络是一通过中间网络设备连接多个独立网络的集合 xff0c 其功能是形成一个覆盖范围更广的网络 网络互联技术意指工业

随机推荐

  • Win11本地安装Ubuntu 22.04 双系统简易教程

    1 制作启动U盘 首先找到一个硬盘容量不小于4G的空U盘 xff0c 需要对其进行格式化 然后下载Ubuntu 22 04的iso文件到本地 Ubuntu 22 04 1 LTS 中国地区下载链接 下载 UltraISO并制作启动U盘 Ul
  • 图文详解VMWare Workstation安装Ubuntu20.04虚拟机

    图文详解VMWare Workstation安装Ubuntu20 04虚拟机 0 准备工作1 新建虚拟机并进行初始配置2 安装虚拟机系统 0 准备工作 在使用VMWare Workstation进行Ubuntu20 04虚拟机安装前 xff
  • 理解数据库中的undo日志、redo日志、检查点

    数据库存放数据的文件 xff0c 本文称其为data file 数据库的内容在内存里是有缓存的 xff0c 这里命名为db buffer 某次操作 xff0c 我们取了数据库某表格中的数据 xff0c 这个数据会在内存中缓存一些时间 对这个
  • Token原理

    Q xff1a 分布式场景下如何生成token以及使用token的流程 xff1a 在分布式场景下 xff0c 可以采用以下方式生成 token 和进行权限认证 xff1a 1 生成 token xff1a 使用JWT xff08 JSON
  • 红外遥控其实so easy-第2季第2部分-朱有鹏-专题视频课程

    红外遥控其实so easy 第2季第2部分 1521人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第2季第2个课程 xff0c 主要讲解如何用单片机进行红外遥控解码 红外遥控是家电产品常用的控制方法 xff0c 通过本课程
  • idea ctrl+左键找到方法引用,选择 All Places的方法

    有时候在idea里点击某个方法想找到该方法在所有地方的引用 xff0c 但是有时候会发现idea默认是在项目文件里搜索 xff0c 这样就搜索不到jar包里的引用 xff0c 如果没有搜到项目里的引用 xff0c 弹窗就会一闪而过 xff0
  • 优雅地解决NullPointException

    null的困扰 通过上面代码示例 xff0c 我们可以发现使用null可能会带来的一系列困扰 xff1a 空指针异常 xff0c 导致代码运行时变得不可靠 xff0c 稍不留神可能就崩了使代码膨胀 xff0c 导致代码中充斥大量的null检
  • springboot 如何配置tomcat信息

    前言 前两天面试的时候 xff0c 面试官问我 xff1a 一个ip发请求过来 xff0c 是一个ip对应一个线程吗 xff1f 我突然愣住了 xff0c 对于SpringBoot如何处理请求好像从来没仔细思考过 xff0c 所以面试结束后
  • Visio2013里面的大括号

    打开Visio2013 xff0c 在左侧的 形状 里面 xff0c 选择 更多形状 gt 其他 Visio 方案 gt 标注 xff0c 然后就会在下面看到大括号了 xff0c 这个括号可以调整方向的 xff0c 把括号拉进 Visio
  • CNN几种经典模型比较

    LeNet5 LeNet5 诞生于 1994 年 xff0c 是最早的卷积神经网络之一 xff0c 并且推动了深度学习领域的发展 自从 1988 年开始 xff0c 在许多次成功的迭代后 xff0c 这项由 Yann LeCun 完成的开拓
  • matlab用mkdir在指定的文件夹下创建新的文件夹,并把图像保存在该文件夹内

    for i 61 1 size query image index 2 mkdir 39 指定的文件夹 39 num2str query image index i 在指定的文件路径下以变量名为名字创建新的文件夹 C 61 imgNamLi
  • MySQL安装之后如何启动

    安装好MySQL之后 xff0c 在MySQL的安装目录下找到MySQL server 的目录 xff08 默认安装目录在 xff1a C Program Files MySQL MySQL Server 5 7 xff09 xff0c 如
  • mysql 密码输入正确,登陆失败的原因

    从命令行输入密码登录mysql 的时候 xff0c 当密码输入正确 xff0c 而且出现如下提示的时候 xff1a 可能是因为你的mysql没有启动的原因造成的 xff0c 解决方法 xff1a 鼠标右键 我的电脑 xff08 或者是计算机
  • vo和dto的区别

    下面转自百度知道里的内容 xff0c 感觉是把dto和vo说反了 xff0c 但是也不排除确实有项目这么做的情况 xff0c 欢迎大家发表自己的意见 xff0c 我个人认为两者说反了 xff0c 不过说的还是通俗易懂的 按照标准来说 xff
  • java日期去掉时分秒,只保留年月日

    public class Test public static void main String args SimpleDateFormat sdf 61 new SimpleDateFormat 34 yyyy MM dd 34 Cale
  • 51单片机也能玩TFT彩屏-第2季第3部分-朱有鹏-专题视频课程

    51单片机也能玩TFT彩屏 第2季第3部分 2125人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第2季第3个课程 xff0c 主要讲解TFT液晶显示器的原理和编程显示线条 文字 图片等 本课程的学习目标是对较复杂的TFT
  • 大数据hadoop hdfs 读写流程

    1 HDFS读流程 1 首先调用FileSystem对象的open 方法 xff0c 其实获取的是一个DistributedFileSystem的实例 2 DistributedFileSystem用RPC调用元数据节点 xff0c 得到文
  • C#初学者教程系列19:Winform应用程序

    本文是C 初学者简单教程 xff0c 这是第19篇 感谢观看 xff0c 记得关注我 xff0c 后续还有更多教程文章 xff0c 谢谢 本文环境为Visual Studio 2019 一 Winform应用程序 Windows窗体应用程序
  • 用GPU来运行Python代码

    简介 前几天捣鼓了一下Ubuntu xff0c 正是想用一下我旧电脑上的N卡 xff0c 可以用GPU来跑代码 xff0c 体验一下多核的快乐 还好我这破电脑也是支持Cuda的 xff1a sudo lshw C display displ
  • C51教程 第四个51程序:中断控制--外部中断0

    内部资源之外部中断 中断类型 中断入口地址 中断序号 外部中断0 xff08 INT0 xff09 P3 2 0003H 0 外部中断1 xff08 INT1 xff09 P3 3 0013H 2 定时计数器0 xff08 T0 xff09