博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《51单片机应用开发从入门到精通》——2.7 中断的控制及设置
阅读量:6220 次
发布时间:2019-06-21

本文共 2016 字,大约阅读时间需要 6 分钟。

本节书摘来异步社区《51单片机应用开发从入门到精通》一书中的第2章,第2.7节,作者:张华杰 ,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.7 中断的控制及设置

51单片机应用开发从入门到精通

中断系统结构如图2-6所示,从图可见,中断控制的实质是对4个特殊功能寄存器TCON、SCON、IE和IP进行管理和控制。只要按照人们的要求对这些寄存器的相应位进行设置(存入0或1,一般设置1为开通),就能完成对中断的有效管理和控制。

2.7.1 中断允许控制寄存器IE

1.IE的格式及位的含义

寄存器IE的地址为A8H,作用是控制各中断源的开放与关闭。它实行两级控制,IE中有个总的控制位EA,当EA = 0时,屏蔽所有的中断请求;而当EA = 1时,CPU开放总中断。

849a4ae96c70dac78277af73dfece3cc79c83e1f

各个中断源的请求是否被开放,还要看IE中各个中断源自己的中断允许控制位的状态。IE的格式及各位的含义如图2-7所示。

179519be818a1e170b03cdfff0ddfef13cd15789

EA:中断允许总控制位。EA = 0时,中断总禁止,关闭所有中断;EA = 1,中断总允许。中断总允许后各中断的禁止或允许则由中断源的中断允许控制位进行设置。它们之间的关系类似于电表控制盘上的总开关及各户的分开关一样。

EX0:外部中断0(INT0)允许控制位。EX0 = 0时,禁止外部中断0中断;EX0 = 1时,允许外部中断0中断。
EX1:外部中断1(INT1)允许控制位,其功能与EX0类同。
ET0:定时器/计数器T0的溢出中断允许控制位。ET0 = 0时,禁止定时器/计数器T0中断;ET0 = 1时,允许定时器/计数器T0中断。
ET1:定时器/计数器T1的溢出中断允许控制位,其功能与ET0类同。
ES:串行中断允许控制位。ES = 0时,禁止串行中断;ES = 1时,允许串行中断。
2.IE的设置举例
假如程序需要使用外部中断0(INT0),只要将寄存器IE的外部中断允许控制位和中断允许总控制位设置为1即可,可通过下面的语句来实现:

MOV  IE, #10000001B   ;INT0中断开通```####2.7.2 中断优先级控制寄存器IP1.IP的格式及位的含义寄存器IP的地址为B8H,作用是控制中断的优先级,其格式及各位的含义如图2-8所示。
PX0:外部中断0优先级设置位。PX1:外部中断1优先级设置位。PT0:定时器/计数器中断0优先级设置位。PT1:定时器/计数器中断1优先级设置位。PS:串行中断优先级设置位。中断优先级只分高与低两个级别,各位为0时,为低优先级;各位为1时,为高优先级。2.IP的设置举例假如程序需要使外部中断0为高优先级,只要将IP的第一位设置为1即可,可通过下面的语句来实现:

MOV IP, #00000001B ;INT0中断优先`

3.中断优先级控制原则
(1)低优先级中断请求不能打断高优先级的中断处理;反之,则可以。

(2)如果一个中断请求已被响应,则同级的其他中断响应被禁止。

(3)如果同级的多个中断请求同时出现,则按次序从高到低依次为:外部中断0、定时/计数中断0、外部中断1、定时/计数中断1、串行中断。

2.7.3 定时器控制寄存器TCON

1.TCON的格式及位的含义

寄存器TCON的地址为88H。TCON既有定时器/计数器的控制功能,又有中断控制功能。其中,与中断有关的控制位共6位,其格式及各位的含义如图2-9所示。

4c640e69b0b9598a8ea1d354097b23c736fcefdc

IT0:选择外部中断INT0的中断触发方式,IT0 = 0时采用电平触发方式;IT0 = 1时采用脉冲触发方式。

IT1:选择外部中断INT1的中断触发方式,其功能与IT0类同。
IE0:外部中断INT0的中断请求标志位。当检测到INT0引脚有中断请求信号时,此位由硬件置1;在中断响应完成后转向中断处理子程序时,再由硬件自动清0。
IE1:外部中断INT1的中断请求标志位,其功能与IE0类似。
TF0:片内定时器/计数器0溢出中断请求标志位。当定时器/计数器0溢出发生时,此位由硬件置1;在中断响应完成后转向中断处理子程序时,再由硬件自动清0。
TF1:片内定时器/计数器1溢出中断请求标志位,其功能与TF0类同。
2.TCON的设置举例
从上面寄存器各位的含意可以看出,在对寄存器TCON的设置上只要注意设置触发方式即可。

例如,程序需要使用外部中断INT0,并采用电平触发方式。此时只要将TCON的第一位设置为0即可,通过下面语句来实现:

MOV  TCON, #00000000B  ;设置INT0为电平触发```####2.7.4 串行口控制寄存器SCON寄存器SCON的地址为98H,其中与中断有关的控制位共两位,其格式及各位的含义如图2-10所示。
TI:串行口发送中断请求标志位。当发送完一帧串行数据后,由硬件置1;在转向中断处理程序后,用软件清0。

转载地址:http://ezmja.baihongyu.com/

你可能感兴趣的文章
php类库安装xml simplexml
查看>>
Asp.Net SignalR Hub集线器
查看>>
关于集成抽取进程重启后的现象分析
查看>>
56.如何清除已经设置的npm config配置
查看>>
028——VUE中事件修饰符once
查看>>
FineUIPro v5.1.0 发布了!
查看>>
easyui的日期控件
查看>>
[WPF 容易忽视的细节] —— Exception in WPF's Converter
查看>>
网易严选的wkwebview测试之路
查看>>
Dubbo高可用
查看>>
折叠代码块 C#中用 #region和#endregion java中用 //region和//endregion
查看>>
高性能mysql学习笔记
查看>>
[ffmpeg] 音频样本
查看>>
jQuery 3D圆盘旋转焦点图 支持鼠标滚轮
查看>>
非常实用全面的 C++框架,库类等资源
查看>>
VS Code 常用插件
查看>>
kubectl top查看k8s pod的cpu , memory使用率情况
查看>>
fputs
查看>>
手写代码生成器
查看>>
SQL Server 维护计划备份主分区
查看>>