中断函数中调用延时会影响其他中断?_C51编程11中断篇(中断原理1)

2023-05-16

在前面的IO篇中,使用到矩阵键盘与LED,主函数中对它们的功能函数,从而检测矩阵键盘是否被按下,LED是否需要被点亮。如下面的代码所示,在循环中,不断执行键盘扫描与显示。

/********************************************************* Function name :main* Description        :扫描键盘与显示* Parameter         :None* Return          :None**********************************************************/void main() {       sysinit();    while(1) {       //扫描键盘将键值码保存到一维数组      inputNum();             //显示数组        showsmg(0,table2[0]);      delay(5);  //添加延时函数,防止会有显示乱码,必须加      if(table2[1]==1){      showsmg(1,table2[1]);        delay(5);  //添加延时函数,防止会有显示乱码,必须加      }       } 

    从上面的代码中,循环中的inputNum()函数会被一直调用,CPU不断检测检矩阵键盘有没有被使用,从而进行按键处理。

    实际应用中,可能矩阵键盘很久才会被用到,不断扫描的方式,会影响CPU的利用率;为此希望按键被按下时, 才会执行按键代码处理代码,否则执行其他的功能代码。这样子inputNum()函数,就不应该放在主函数执行了,而是需要放在inputNum()函数放在中断服务程序中执行。

     中断是个什么概念?从上面的场景中可以看到

(1)CPU可以循环执行着主程序代码;

(2)矩阵键盘被按下(有中断源请求),打断主程序执行;

(3)中断响应,进入中断服务程序(执行按键处理程序);

(4)中断服务程序(按键处理程序)执行完后,中断返回;

(5)继续执行主函数代码。

4f989e13ebed1d619be79a0aa041d838.png

    中断的是否发生,是由外部因素决定(按键是否被按下,是人为因素)。程序中无法事先按安排好(不然键盘扫描函数可以放在主函数执行即可),因此中断服务程序的过程是由硬件自动完成的。

    中断的特点:

    1)分时操作:缓解慢速外设与快速CPU的矛盾(键盘使用与CPU利用率的矛盾)

    2)实时操作:外界变量可以根据要向CPU提出处理请求

    中断系统的功能:

    1)实现中断响应与中断返回

    根据中断请求优先级是否马上进行中断响应;

    执行中断响应时,需要将当前运行的状态(程序指针PC、寄存器、标志位)压入堆栈保存,保护现场,然后进入中断服务程序;

     中断服务程序执行完后,恢复原来的运行状态,恢复现场。

    2)中断优先权

    一般系统有多个中断源(可以请求中断的事件),它们进行中断请求时,需要区分优先级进行响应。

    3)中断嵌套

    中断可以实现嵌套,当CPU正在响应某个中断,这个时候有更高优先级的中断请求,高优先级的中断可以打断低优先级的中断,先高优先级中断,然后返回执行低优先级中断。

---------------------------------------------------------

如果觉得文章还不错,那就扫码关注吧!

42e1d4983724a62643a552faf36a60f0.png

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

中断函数中调用延时会影响其他中断?_C51编程11中断篇(中断原理1) 的相关文章

  • keil c语言的头文件,Keil C51中C语言编程的头文件包含方法.pdf

    1 Keil C51中 C 语言编程的头文件包含方法 一 首先摘抄一写 keil 官方网站的说明 了解其系统自带的头文件在哪里及如何预处理 1 译文 主页 Vision4 用户手册 文件夹结构 主页 关于 Vision 文件夹结构 安装程序
  • Arduino和C51开发OLED显示屏

    技术 xff1a 51单片机 Arduino OLED显示屏 U8glib 概述 OLED显示屏常常用作为智能产品的显示设备 xff0c 本文简单介绍OLED显示屏的使用方法 详细 代码下载 xff1a http www demodashi
  • keil c语言的头文件,Keil_C51中C语言编程的头文件包含方法.pdf

    Keil C51中C语言编程的头文件包含方法 Keil C51中C语言编程的头文件包含方法 一 首先摘抄一写keil官方网站的说明 xff0c 了解其系统自带的头文件在哪里及如何预处理 1 译文 Vision4 主页 用户手册 文件夹结构
  • 中断函数中调用延时会影响其他中断?_C51编程11中断篇(中断原理1)

    在前面的IO篇中 xff0c 使用到矩阵键盘与LED xff0c 主函数中对它们的功能函数 xff0c 从而检测矩阵键盘是否被按下 xff0c LED是否需要被点亮 如下面的代码所示 xff0c 在循环中 xff0c 不断执行键盘扫描与显示
  • keil C51 中使用虚拟串口调试串口

    功能介绍 xff1a 在不使用51开发板下 xff0c 使用keil C51中的软件仿真 和虚拟串口软件VSPD完成串口通信的过程 类似的还有一篇关于STM32调试串口的 keil MDK 中使用虚拟串口调试串口 操作步骤如下 xff1a
  • keil5软件共用C51和ARM

    第一步 xff1a 创建文件夹keil mdk正常安装并破解MDK5 第二步 xff1a 创建另一个文件夹keil c51安装C51 将该文件夹里面的C51文件夹复制粘贴到keil mdk文件夹里与ARM文件夹保持同一目录 第三步 xff1
  • Keil4中C51的debug调试步骤技巧

    1 选择相应的调试仿真连接器 xff1a 选择 xff1a project gt Options for Target 如下图所示 xff1a 然后在弹出对话框的Debug选项下选择仿真器的型号 xff1a 2 进入调试 xff1a 3 部
  • KEIL C51出现 runtime error R6002 floating point support not loaded解决办法

    将未出现过该错误的电脑中Keil的 ARM ARMCC bin armlink exe复制 xff0c 覆盖掉报错电脑中的Keil安装目录下 ARM ARMCC bin armlink exe即可 每天出现该报错 xff0c 覆盖即可 文件
  • Keil C51详细设置及调试方法

    http blog chinaunix net uid 20734916 id 3995349 html 20 4 1 常用调试命令 在对工程成功地进行编译 xff08 汇编 xff09 连接以后 xff0c 在主菜单中打开 调试 栏 xf
  • Keil C51详细安装教程(最新版)

    Keil C51 0x00 说在前面0x01 资源获取0x02 软件安装0x03 还有一步 xff08 重要 xff09 0x04 小问题 0x00 说在前面 x1f4e2 Keil 5常用的分两个版本 xff0c C51和MDK C51用
  • keil C51脚本编译

    rem 使用bat编译C51项目 64 echo off amp setlocal enabledelayedexpansion set BIN PATH 61 C Keil v5 C51 set path 61 BIN PATH BIN
  • CC2530学习(一)环境配置

    CC2530F256是一款将各种丰富的功能系统地集成到一片LSI Large Scale Integrated circuit 大规模集成电路 的片上系统 System on Chip 简称SoC 内嵌增强型51内核的单片机 芯片后缀256
  • 【Keil编译问题】RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT

    Keil编译问题 RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT Keil编译信息提示内容 然而在Keil软件file菜单 license manage许可菜单里面查看信息 又是注册成功
  • LCD1602芯片的使用——简单易懂

    题目 想在LCD1602上显示两行如下字样 huaianxinxi wantin 想完成上面的显示必须掌握LCD1602芯片的基本知识 将在程序下面附上LCD1602芯片的基本知识 供大家参考 我实现的比较简单 没有什么花哨的显示 大家首先
  • 单片机原理及应用复习

    关于这个复习的资源 或者网址 点击 第一章 单片机的基础知识 1 什么是单片机 特点 将通用微型计算机基本功能部件集成在一块芯片上构成的一种专用微计算机系统 嵌入式系统 用于解决小型被控对象的智能化问题 SCM或MCU 组成 特点 体积小
  • C51——IO口配置

    I O口配置 STC89C51RC RD 系列单片机所有I O口均 新增P4口 有3种工作类型 准双向口 弱上拉 标准8051输出模式 仅为输入 高阻 或开漏输出功能 STC89C51RC RD 系列单片机的P1 P2 P3 P4 上电复位
  • C51定时器和计数器 timer and counter

    代码 include
  • C51流水灯 running water lamp

    include
  • C51简介及Keil的使用

    前言 此文档主要是针对有一定C C 编程基础 并打算用Keil从事C51开发的开发人员 C51涉及的知识比较多 但是入门基本的开发 还是容易的 C51简介 1 C51概念 C51继承于C语言 主要运行于51内核的单片机平台 单片机 单片微型
  • c51简单delay函数i的值跟延时的时间呈线性关系

    c51简单delay函数i的值跟延时的时间呈线性关系 一 简单delay函数 晶振频率 11 0592 MHZ define uchar unsigned char void Delay uchar i while i 二 证明 1 调试计

随机推荐