中断概念 : 计算机执行某程序时,发生了紧急事件或有特殊请求,CPU暂停某程序的执行, 转而去处理上述事件或请求,处理完毕后再重新执行某程序的过程叫做中断。

数据的输入/输出传送方式:

(1)无条件传送方式: 一方对另一方来说总是准备好的。

(2)查询传送方式(LOOK UP): 传送前一方先查询另一方的状态,若已经准备好就传送,否则就继续查询/等待。

(3)中断传送方式(IRQ): 一方通过申请中断的方式与另一方进行数据传送。

(4)直接存储器存取方式(DMA): 双方直接通过总线传送数据, 不经CPU中转。适用于数据量大高速通讯的设备不占用CPU时间。

中断传送方式特点:

数据传送的双方平时各自做自己的工作,一旦甲方要求与乙方进行数据传送,就主动发出信号提出申请,乙方接到申请后若同意传送,安排好当前的工作,再响应与甲方发生数据传送。完事后,回去继续做打断前的工作。

引起CPU中断的根源,称为中断源。

中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。

对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。

实现上述中断功能的部件称为中断系统(中断机构)。

中断功能强弱是计算机性能优劣的重要标志

提高CPU效率

解决速度矛盾

实现并行工作

应付突发事件……

51子系列允许5个中断源:

外部中断源(2个):

INT0——由P3.2端口线引入,低电平或下降沿引起。

INT1——由P3.3端口线引入,低电平或下降沿引起。

这两个外部中断源标志和它们的触发方式控制位由特殊功能寄存器TCON的低4位控制。

内部中断源(3个):

T0——定时器/计数器0中断,由T0回零溢出引起。

T1——定时器/计数器1中断,由T1回零溢出引起。

TI/RI——串行I/O中断,串行端口完成一帧字符发送/接收后引起。

这3个内部中断源的控制位分别锁存在特殊功能寄存器TCON和SCON中。

1、中断请求标志TCON(88H)可位寻址 TCON:Timer控制寄存器,低4位管理外部中断 作用:设置外部中断触发方式,标注外部中断请求。

IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。 IT0/IT1:外部中断请求的触发方式选择位: =0:在INT0/INT1端申请中断的信号低电平有效; =1:在INT0/INT1端申请中断的信号负跳变有效。

外部中断及中断请求的撤除

低电平/负脉冲→INT0/INT1引脚可触发中断

IT0/IT1:INT0/1的触发方式选择位: IT0/IT1 =0 时,INT0/INT1是低电平有效; IT0/IT1 =1 时,INT0/INT1是负跳变有效。

低电平触发 引脚上的低电平须持续到中断发生。若中断返回前仍未及时撤除低电平,将再次中断。

负脉冲触发 CPU在前一机器周期采到INT0/INT1引脚为高,后一机器周期采到为低才认为是一次中断请求。CPU 可记忆申请、可自动撤除中断申请。

  1. #include <reg52.h>
  2.  
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5.  
  6. uint count;
  7. void delay(uint z)
  8. {
  9. uint x,y;
  10. for(x = z; x > ; x--)
  11. for(y = ; y > ; y--);
  12. }
  13.  
  14. /*中断服务特殊功能寄存器配置*/
  15. void init()
  16. {
  17.  
  18. TMOD = 0x01; //定时器16为计数工作模式
  19. TH0 =0x4b;
  20. TL0 =0xfd; //50ms
  21. ET0 = ; //开定时器0中断
  22. TR0 = ;//启动定时器0
  23. EA = ; //开总中断
  24. }
  25.  
  26. void main()
  27. {
  28. init();
  29. while()
  30. {
  31. P1 = 0xff;
  32. }
  33. }
  34.  
  35. /*中断服务程序*/
  36. void timer0() interrupt
  37. {
  38. TH0 =0x4b;
  39. TL0 =0xfd; //50ms
  40. count++;
  41. if (count == )
  42. {
  43. P1 = ;
  44. delay();
  45. count = ;
  46. }
  47. }

MCU 51-5中断的更多相关文章

  1. 51单片机中断interrupt……using……

    51单片机中断细节的一些问题. interrupt0:外部中断0interrupt1:定时器中断0interrupt2:外部中断interrupt3:定时器中断1interrupt4:串口 using ...

  2. c语言编写51单片机中断程序,执行过程是怎样的?

    Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序:#include<reg52.h>  void main(void)  {   EA=1;      //开放总中断   E ...

  3. ET 与RETI 基于51单片机中断跳出指令“RETI”浅议

    最近在基于51单片机编程的过程中出现了个很奇怪的问题“程序执行中在寄存器EA=1,ET0=1,TR0=1条件下,单TF0=1时并没有执行中断”.在有过单片机中断编程经历者都知道当EA=1,ET0=1的 ...

  4. MCU & 51单片机

  5. [IC]浅谈嵌入式MCU软件开发之中断优先级与中断嵌套

    转自:https://mp.weixin.qq.com/s?__biz=MzI0MDk0ODcxMw==&mid=2247483680&idx=1&sn=c5fd069ab3f ...

  6. 痞子衡嵌入式:嵌入式MCU中通用的三重中断控制设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是嵌入式MCU中通用的三重中断控制设计. 我们知道在 MCU 裸机中程序代码之所以能完成多任务并行实时处理功能,其实主要是靠中断来调度的, ...

  7. AVR 嵌入式单片机芯片的中断系统介绍

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  8. GD32 ------ 使用外部中断,中断函数需要延时才能读到真正电平

    MCU:GD32F103RCT6 中断引脚没有外界上拉电阻 中断配置如下: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFI ...

  9. RT-thread内核之异常与中断

    一.什么是中断? 中断有两种,一种是CPU本身在执行程序的过程中产生的,一种是由CPU外部产生的. cpu外部中断,就是通常所讲的“中断”(interrupt).对于执行程序来说,这种“中断”的发生完 ...

  10. 【STM32H7教程】第21章 STM32H7的NVIC中断分组和配置(重要)

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第21章       STM32H7的NVIC中断分组和配置( ...

随机推荐

  1. TensorFlow从0到1之常量、变量和占位符详解(6)

    最基本的 TensorFlow 提供了一个库来定义和执行对张量的各种数学运算.张量,可理解为一个 n 维矩阵,所有类型的数据,包括标量.矢量和矩阵等都是特殊类型的张量.   TensorFlow 支持 ...

  2. 从零开始的Spring Boot(4、Spring Boot整合JSP和Freemarker)

    Spring Boot整合JSP和Freemarker 写在前面 从零开始的Spring Boot(3.Spring Boot静态资源和文件上传) https://www.cnblogs.com/ga ...

  3. cb03a_c++_数据结构_顺序容器_STL_stack

    /*cb03a_c++_数据结构_顺序容器_STL_stack堆栈:LIFO--Last In First Out后进先出,用于系统程序设计自适应容器(容器适配器),不是独立的容器,是一个适配器栈适配 ...

  4. c++ UDP套接字客服端代码示范

    c++ UDP套接字客服端代码示范 #include<winsock2.h> //包含头文件 #include<stdio.h> #include<windows.h&g ...

  5. jmeter正则提取器提取一个值或多个值

    [安装Dummy插件] 这个插件可以模拟服务器返回,相当于一个mockserver了. 首先安装Dummy,选项--插件管理--可选插件--Dummy. [模拟响应] 添加线程组,在线程组下添加Dum ...

  6. 解决Mac中anaconda作图中文异常显示的问题

    说明 本篇主要针对在MAC系统中Anaconda环境下,matplotlib显示不了中文的问题,提出解决Python绘图时中文显示的方法. 运行环境 macOS Mojave 10.14.6 Pyth ...

  7. django OperationalError: unable to open database file 创建数据库

  8. python 3内置函数

    2018-07-14 enumerate() 用于指定下标 例: m = ['a','b','c'] for i,j in enumerate(m,1): print(i,j) 输出: 1 a 2 b ...

  9. vue+iview多条联动,for循环data是函数

    问题:多条for循环出的数据二级联动for循环出多条数据,每条数据都有一个二级联动,每次下拉一级联动,二级的选项都是变化的. 思考刚开始一直想不出如何实现二级联动下拉的数据动态变化,因为之前一直都是v ...

  10. jmeter在non-GUI模式下用法

    用法 jmeter -n -t HTTPRequesttest.jmx -l testHistory/testResult.jtl -e -o testHistory/testReport 参数说明 ...