单片机功能部件.ppt
《单片机功能部件.ppt》由会员分享,可在线阅读,更多相关《单片机功能部件.ppt(141页珍藏版)》请在三一办公上搜索。
1、MCS-51单片机内部功能部件MCS-51系统扩展MCS-51功能扩展,MCS-51单片机内部功能部件,第6章 中断系统第7章 定时/计数器第8章 串行通信接口,中断的概念 现代的计算机都具有实时处理功能,能对外部发生的事件如人工干预、外部事件及意外故障做出及时的响应或处理,这是依靠计算机的中断系统来实现的。在MCS51应用系统中,经常需要处理如下问题:1定时器问题 在温度控制系统中,需对受控对象的温度进行定时采样,两次采样之间的时间间隔是固定的,如每秒一次。在电机恒速控制系统中,需对受控电机的转速进行定时采样,两次采样之间的时间间隔也是固定的,如每秒两次。为了定时采样,就必须使用定时器。当C
2、PU启动定时器后,就要等待定时器的定时超时标志,然后就进行采样,周而复始,循环不止。,2键盘按键问题 键盘是计算机系统操作者对系统进行参数设置和状态控制的常用设备,操作者何时对键盘进行操作是无法事先确定的。单片机应快速响应键盘操作。3串行通信问题 一个单片机控制系统可能与另一个计算机系统有联系,它们之间的数据交换是通过异步串行通信接口RS-232C进行的。MCS51单片机有一个串行通信控制器,当CPU将要发送的一个字节数据提交给串行通信控制器后,需要等串行通信控制器把这个字节数据发送完毕,才能发送下一个字节数据。这时,CPU要等待串行通信控制器的一个标志,表明串行通信控制器的发送缓冲器空闲,才
3、能把下一个要发送字节数据提交给串行通信控制器。CPU除了发送数据之外,还要接收对方发送来的数据,而对方什么时候要发送数据是无法确定的。MCS51单片机的串行通信控制器会自动处理数据接收,一旦接收到一个字节的数据,串行通信控制器会设置数据接收完成标志,CPU检测到该标志后,就从串行通信控制器中将数据读出。,上述三个问题中,一个共性的问题是:CPU需要对一个标志进行检测判断,以决定是否进行一项预定的工作(即执行一个特定的程序段)。对一个可能随机出现的标志进行检测判断,可以采用两种方法:查询/中断。查询是指CPU在程序流程中循环判断标志的改变。如:启动定时器时,定时器的定时超时标志TF为0,定时间隔
4、到时,定时器将定时超时标志TF置为1,程序中CPU用循环结构判断该标志是否为1等待定时结束:while(TF=0);TF=1;调用采样函数,(TF定时到标志),或者在主函数的流程中按顺序判断各个标志的状态,以确定要做的工作。while(1)if(TI)调用发送函数;if(RI)调用接受函数;if(keypress)调用按键处理函数;这里,TI、RI、keypress分别为定时到标志、发送缓冲器空标志、接收缓冲器满标志和有键按下标志。,所谓中断是指,单片机内部有一个中断管理系统,它对内部的定时器事件、串行通信的发送和接收事件及外部事件(如键盘按键动作)等进行自动的检测判断,当有某个事件产生时,中
5、断管理系统会置位相应标志通知CPU,请求CPU迅速去处理。CPU检测到某个标志时,会停止当前正在处理的程序流程,转去处理所发生的事件(针对发生的事件,调用某一特定的函数,称为该事件的中断服务函数),处理完以后,再回到原来被中断的地方,继续执行原来的程序。这个过程称为中断。(CPU对中断标志的检测是在程序指令执行的周期中顺带进行的,不影响指令的连续执行。)注:程序中的一般函数是由主函数或其它函数调用的,而中断服务函数不能被其它函数调用,它的执行完全是随机的。,中断管理系统可以处理的事件称为中断源。一般计算机系统允许有多个中断源,当几个中断源同时向CPU请求中断,要求为它们服务的时候,就存在CPU
6、优先响应哪一个中断请求源的问题,一般根据中断源(所发生的实时事件)的轻重缓急排队,优先处理最紧急事件的中断请求,于是规定每一个中断源都有自己的中断优先级别。当CPU正在处理一个中断源请求时,又发生了另一个优先级比它高的中断请求,如果CPU能够暂时中止执行当前的中断服务程序,转而去处理优先级更高的中断请求,待处理完以后,再继续执行原来的低级中断处理程序,这样的过程称为中断嵌套,这样的中断系统称为多级中断系统。没有中断嵌套功能的中断系统称为单级中断系统。,中断系统要解决的问题,CPU在不断的执行指令中,是如何检测到随机发生的中断请求中断能够人为控制吗(允许中断或禁止中断)中断是随机产生的,不能用一
7、般的子程序调用,那么如何处理中断处理子程序呢当有多个中断时怎么处理中断服务完毕,如何正确回到原断点处,MCS51中断系统 MCS51系列中不同型号单片机的中断源数量是不同的(511个),最典型的8051单片机有5个中断源(外部中断0、1,内部定时器中断0、1,串口中断),具有两个中断优先级。与中断系统有关的特殊功能寄存器有中断允许寄存器IE、中断优先级控制寄存器IP、中断控制寄存器TCON和SCON中有关位。MCS51单片机基本的中断系统结构如图41所示。,1中断源与中断标志 MCS51中典型的8051单片机有5个中断源:两个外部中断:(P3.2 INT0、P3.3 INT1)上输入的外部中断
8、源,低电平或负跳变有效,置位TCON中的IE0和IE1中断请求标志位;三个内部中断源:定时器计数器T0、T1的溢出中断源和串行口的发送/接收中断。对T0和T1中断,当定时计数回0溢出时,由硬件自动置位TCON中的TF0或TF1中断请求标志位;对串行接收发送中断,当完成一串行帧的接收发送时,由硬件自动置SCON中的中断请求标志位TI(发送)或RI(接收),必须由用户在中断服务程序中复位TI或RI。,中断控制寄存器TCON的各位(可位寻址):IE0:外部中断0请求源(INT0)标志。IE01,外部中断0正在向CPU请求中断,当 CPU响应该中断时由硬件清零IE0(边沿触发方式)。IT0:外部中断源
9、 INT0 触发方式控制位。IT0 0,外部中断0程控为电平触发方式,当P3.2输入低电平时,置位IE0。IT0 1,外部中断0程控为边沿触发方式,相继的两次采样,一个周期中采样到为高电平,接着的下个周期中采样到为低电平,则置1 IE0。,IE1:外部中断1请求(INT1,P3.3)标志。IE1 1外部中断1向 CPU请求中断,当 CPU响应外部中断时,由硬件清0 IE1(边沿触发方式)。IT1:外部中断1触发方式控制位。IT1 0,外部中断1程控为电平触发方式,IT1 1,外部中断1为边沿触发方式。其功能和IT0类似。TR0:定时计数器T0运行控制位。(启动/停止)TF0:定时计数器T0溢出
10、中断标志位,CPU执行中断服务程序时由硬件复位。TR1:定时计数器T1运行控制位。TF1:定时计数器T1溢出中断标志位,CPU执行中断服务程序时由硬件复位。,串行口中断:串行口的接收中断标志RI(SCON.0)和发送中断标志TI(SCON.1)逻辑或以后作为内部的一个中断源。当串行口发送完一个字符由内部硬件置位发送中断标志TI,接收到一个字符后也由内部硬件置位接收中断标志RI。应该注意,CPU响应串行口的中断时,并不清0 TI和RI中断标志,TI和RI必须由软件清0(中断服务程序中必须有清 TI、RI的指令)。SCON:串行通信控制寄存器,2中断控制(1)中断允许寄存器IEMCS51的CPU对
11、中断源的开放或屏蔽,即每一个中断源是否被允许中断,是由内部的中断允许寄存器IE(IE为特殊功能寄存器,它的字节地址A8H,可位寻址)控制的,其格式如下:EA:CPU的中断开放标志。EA 1,CPU开放中断;EA 0,CPU屏蔽所有的中断申请。EX0:外部中断0中断允许位。EX0 1,允许中断;EX0 0,禁止中断。,ET0:T0的溢出中断允许位。ET0 1,允许T0中断;ET0 0,禁止T0中断。EX1:外部中断1中断允许位。EX1 1,允许外部中断1中断;EX1 0,禁止外部中断1中断。ET1:定时器计数器 T1的溢出中断允许位。ET1 1,允许T1中断;ET1 0禁止T1中断。ES:串行口
12、中断允许位。ES 1,允许串行口中断;ES 0禁止串行口中断。,(2)中断优先级控制MCS51有两个中断优先级,每一中断请求源可编程为高优先级中断或低优先级中断,实现二级中断嵌套。一个正在被执行的低优先级中断服务程序能被高优先级中断所中断,但不能被另一个同级的或低优先级中断源所中断。若CPU正在执行高优先级的中断服务程序,则不能被任何中断源所中断,一直执行到结束,遇到返回指令RETI,返回主程序后再执行一条指令才能响应新的中断源申请。*为了实现上述功能,MCS51的中断系统有两个不可寻址的优先级状态触发器,一个指出CPU是否正在执行高优先级中断服务程序,另一个指出CPU是否正在执行低级中断服务
13、程序。这两个触发器的1状态分别屏蔽所有的中断申请和同一优先级的其他中断源申请。另外,MCS51的片内有一个中断优先级寄存器IP(IP为特殊功能寄存器,它的字节地址为B8H,可位寻址),其格式如下:,PX0:外部中断0中断优先级控制位。PX0 1,外部中断0中断定义为高优先级中断;PX0 0,外部中断0中断定义为低优先级中断。PT0:定时器T0中断优先级控制位。PT0 1,定时器T0中断定义为高优先级中断;PT0 0,定时器T0中断定义为低优先级中断。PX1:外部中断1中断优先级控制位。PX1=1,外部中断1中断定义为高优先级中断;PX1 0,外部中断1中断定义为低优先级中断。PT1:定时器T1
14、中断优先级控制位。PT1 1,定时器T1中断定义为高优先级中断;PT1 0,定时器T1中断定义为低优先级中断。,PS:串行口中断优先级控制位。PS 1,串行口中断定义为高优先级中断;PS 0,行口中断定义为低优先级中断。在 CPU接收到同样优先级的几个中断请求源时,一个内部的硬件查询序列确定优先服务于哪一个中断申请,这样在同一个优先级里,由查询序列确定了优先级结构,其优先级别排列如下:外部中断0 最高 定时器T0中断 外部中断1 定时器T1中断 串行口中断 最低,#MCS51复位以后,特殊功能寄存器IE、IP的内容均为0,由初始化程序对IE、IP编程,以开放中央处理器CPU中断、允许某些中断源
15、中断和改变中断的优先级。*3中断响应过程 MCS51的CPU在每一个机器周期顺序检查每一个中断源。在机器周期的S6采样并按优先级处理所有被激活的中断请求,如果没有被下述条件所阻止,将在下一个机器周期的状态S1响应激活了的最高级中断请求。CPU正在处理相同的或更高优先级的中断;现行的机器周期不是所执行指令的最后一个机器周期;,正在执行的指令是中断返回指令(RETI)或者是对IE、IP的写操作指令(执行这些指令后至少再执行一条指令后才会响应中断)。*如果上述条件中有一个存在,CPU将丢弃中断查询的结果;若一个条件也不存在,将在紧接着的下一个机器周期执行中断查询的结果。处理器响应中断时,先置位相应的
16、优先级状态触发器(该触发器指出CPU开始处理的中断优先级别),然后执行一条硬件子程序调用,清0中断请求源申请标志(TI和RI除外)。接着把程序计数部PC的内容压入堆栈(但不保护PSW),将被响应的中断服务程序的入口地址送程序计数器PC,各中断源服务程序的入口地址为:,外部中断00003H定时器T0000BH外部中断10013H定时器T1001BH串行口中断0023H通常在中断入口,安排一条跳转指令,以转移到用户设计的中断处理程序入口。CPU执行中断处理程序一直到RETI指令为止。RETI指令是表示中断服务程序的结束,CPU执行完这条指令后,清0响应中断时所置位的优先级状态触发器,然后从堆栈中弹
17、出顶上的两个字节到程序计数器 PC,CPU从原来打断处重新执行被中断的程序。由此可见,用户的中断服务程序末尾必须安排一条返回指令RETI,CPU现场的保护和恢复必须由用户的中断服务程序实现。,*一、中断处理过程 中断处理过程分为四个阶段:中断请求,中断响应,中断处理、中断返回。MCS51系列单 片机的中断过程流程如图6.2所示。,N,N,Y,Y,Y,N,执 行 指 令,中断标志1?(中断请求?),指令最后一个T周期?,EA=1?允 许 位=1?,CPU 判 别优 先权,响 应优 先权高 的中断,断点的PC进栈,中断服务入口地址送PC,撤 除 中 断 标 志,中 断 服 务,中 断 返 回,断
18、点 出 栈 送 PC,中断请求.,中断响应,中断服务,中断返回,中断请求、中断响应过程由硬件完成。中断服务程序应根据需要进行编写。程序中要注意保护现场和恢复现场。中断返回是通过执行一条RETI中断返回指令,使堆栈中被压入的断 点地址送PC,从而返回主程序的断点继续执行主程序。另外RETI还有恢复优先级状态触发器 的作用,因此不能以RET指令代替“RETI”指令。,*二、中断请求的撤除 CPU响应中断后,应撤除该中断请求标志,否则会再次中断。对定时计数器T0、T1的溢出中断,CPU响应中断后,硬件自动清除中断请求标志TF0 TF1。对边沿触发的外部中断INT1和INT0,CPU响应中断后硬件自动
19、清除中断请求标志IE0和IE1。对于串行口中断,CPU响应中断后,没有用硬件清除中断请求标志TI、RI,即这些中断标志 不会自动清除,必须用软件清除,这是在编串行通信中断服务中应该注意的。对电平触发的外部中断,CPU在响应中断时也不会自动清除中断标志,因此,在CPU响应中断后应立即撤除INT1或INT0的低电平信号。,*4外部中断响应时间INT0和INT1电平在每一个机器周期的S5P2被采样并锁存到IE0、IE2中,这个新置入的IE0、IEI状态等到下一个机器周期才被查询电路查询到。如果中断被激活,并且满足响应条件,CPU接着执行一条硬件子程序调用指令以转到相应的服务程序入口,该调用指令本身需
20、两个机器周期。这样,在产生外部中断请求到开始执行中断服务程序的第一条指令之间,最少需要三个完整的机器周期。,如果中断请求被前面列出的三个条件之一所阻止,则需要更长的响应时间。如果已经在处理同级或更高级中断,额外的等待时间明显地取决于别的中断服务程序的处理过程。当没有处理同级或更高级中断时,如果正在处理的指令没有执行到最后的机器周期,所需的额外等待时间不会多于3个机器周期,因为最长的指令(乘法指令MUL和除法指令 DIV)也只有 4个机器周期,如果正在执行的指令为IE、IP的指令,额外的等待时间不会多于 5个机器周期(最多需一个周期完成正在处理的指令,完成下一条指令(设MUL或DIV)4个机器周
21、期)。这样,在一个单一中断优先级的系统里,外部中断响应时间总是在38个机器周期之间。,*外部中断触发方式选择1电平触发方式 若外部中断定为电平触发方式,外部引脚中断输入必须有效(保持低电平),直到CPU实际响应该中断时为止,同时在中断服务程序返回之前,外部中断输入必须无效(高电平),否则CPU返回后会再次引起中断。所以电平触发方式适合于外部中断输入以低电平输入的、而且中断服务程序能清除外部中断输入请求信号的情况。在用户系统中,可将中断输入信号经一个D触发器接入,并使D触发器的D端接地,当外部中断请求的正脉冲信号出现在D触发器的CLK端时,D触发器的Q端产生负电平,INTx有效,发出中断请求,C
22、PU执行中断服务程序时,利用一根口线,如P1.0,输出一负电平脉冲使D触发器置位,撤消中断请求。,2边沿触发方式外部中断若定义为边沿触发方式,外部中断申请触发器能锁存外部中断输入线上的负跳变,即使CPU暂时不能响应,中断申请标志也不会丢失。在这种方式里,如果相继连续两次采样,一个周期采样到外部中断输入为高电平,下个周期采样到低电平,则置位中断申请触发器,直到CPU响应此中断时才清0。这样不会丢失中断,但输入的脉冲宽度至少保持12个时钟周期(若晶振频率为6MHz,即 2S)才能被CPU采样到。外部中断的边沿触发方式适合于以脉冲形式输入的外部输入请求,如ADC0809的AD转换结果的标志信号EOC
23、为正脉冲,取反后连到8031的INTx,就可以中断方式读取AD的转换结果。,中断服务程序及例程使用MCS51的中断,要为使用到的中断源编写中断服务程序。C51为中断服务程序的编写提供了方便的方法。C51的中断服务程序是一种特殊的函数,它的说明形式为:void 函数名(void)interrupt n using m 函数体语句 这里,interrupt和using是为编写C51中断服务程序而引入的关键字,interrupt表示该函数是一个中断服务函数,interrupt后的整数n表示该中断服务函数是对应哪一个中断源。,每个中断源都有系统指定的中断编号:中 断 源 中 断 编 号外部中断00定时
24、器T01外部中断12定时器T13串行口中断4using指定该中断服务程序要使用的工作寄存器组号,m为03。关键字interrupt和using只能用于中断服务函数的说明而不能用于其它函数。程序中的任何函数都不能调用中断服务函数,中断服务函数是由系统调用的。,例:INT0端口接一开关,P1.0接一发光二极管。开关闭合(接地)时,发光二极管改变一次状态。#include“reg51.h”#include“intrins.h”Sbit P10=P10void delay(void)int a=5000;while(a)_nop_();/*INTRINS.H中说明的内部函数*/,P1.0,INT0,v
25、oid int0_srv(void)interrupt 0 using 1 delay();if(INT0=0)P10=!P10;while(INT0=0);void main()P10=0;初始化TCON、IE、IP EA=1;IT0=0;EX0=1;while(1);,例6-1,例如,对本节的例1用C语言编程#includeint0()interrupt 0/*INT0中断函数*/P1=0 x0f;/*输入端先置1,灯灭*/P1=4;/*读入开关状态,并左移四位,使开关反映在发光二极管上*/main()EA=1;/*开中断总开关*/EX0=1;/*允许INT0中断*/IT0=1;/*下降沿
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 功能 部件

链接地址:https://www.31ppt.com/p-6103492.html