单片机功能部件_第1页
单片机功能部件_第2页
单片机功能部件_第3页
单片机功能部件_第4页
单片机功能部件_第5页
已阅读5页,还剩136页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MCS-51单片机内部功能部件 MCS-51系统扩展 MCS-51功能扩展 MCS-51单片机内部功能部件 1.第6章 中断系统 2.第7章 定时/计数器 3.第8章 串行通信接口 中断的概念中断的概念 现代的计算机都具有实时处理功能,能对外部发现代的计算机都具有实时处理功能,能对外部发 生的事件如人工干预、外部事件及意外故障做出及时生的事件如人工干预、外部事件及意外故障做出及时 的响应或处理,这是依靠计算机的中断系统来实现的。的响应或处理,这是依靠计算机的中断系统来实现的。 在在MCS51应用系统中,经常需要处理如下问题:应用系统中,经常需要处理如下问题: 1定时器问题定时器问题 在温度控制

2、系统中,需对受控对象的温度进行定在温度控制系统中,需对受控对象的温度进行定 时采样,两次采样之间的时间间隔是固定的,如每秒时采样,两次采样之间的时间间隔是固定的,如每秒 一次。在电机恒速控制系统中,需对受控电机的转速一次。在电机恒速控制系统中,需对受控电机的转速 进行定时采样,两次采样之间的时间间隔也是固定的,进行定时采样,两次采样之间的时间间隔也是固定的, 如每秒两次。为了定时采样,就必须使用定时器。当如每秒两次。为了定时采样,就必须使用定时器。当 CPU启动定时器后,就要等待定时器的定时超时标志,启动定时器后,就要等待定时器的定时超时标志, 然后就进行采样,周而复始,循环不止。然后就进行采

3、样,周而复始,循环不止。 2键盘按键问题键盘按键问题 键盘是计算机系统操作者对系统进行参数设置和状态键盘是计算机系统操作者对系统进行参数设置和状态 控制的常用设备,操作者何时对键盘进行操作是无法事先确控制的常用设备,操作者何时对键盘进行操作是无法事先确 定的。单片机应快速响应键盘操作。定的。单片机应快速响应键盘操作。 3串行通信问题串行通信问题 一个单片机控制系统可能与另一个计算机系统有联系,它一个单片机控制系统可能与另一个计算机系统有联系,它 们之间的数据交换是通过异步串行通信接口们之间的数据交换是通过异步串行通信接口RS-232C进行的。进行的。 MCS51单片机有一个串行通信控制器,当单

4、片机有一个串行通信控制器,当CPU将要发送的将要发送的 一个字节数据提交给串行通信控制器后,需要等串行通信控一个字节数据提交给串行通信控制器后,需要等串行通信控 制器把这个字节数据发送完毕,才能发送下一个字节数据。制器把这个字节数据发送完毕,才能发送下一个字节数据。 这时,这时,CPU要等待串行通信控制器的一个标志,表明串行通要等待串行通信控制器的一个标志,表明串行通 信控制器的发送缓冲器空闲,才能把下一个要发送字节数据信控制器的发送缓冲器空闲,才能把下一个要发送字节数据 提交给串行通信控制器。提交给串行通信控制器。CPU除了发送数据之外,还要接收除了发送数据之外,还要接收 对方发送来的数据,

5、而对方什么时候要发送数据是无法确定对方发送来的数据,而对方什么时候要发送数据是无法确定 的。的。MCS51单片机的串行通信控制器会自动处理数据接收,单片机的串行通信控制器会自动处理数据接收, 一旦接收到一个字节的数据,串行通信控制器会设置数据接一旦接收到一个字节的数据,串行通信控制器会设置数据接 收完成标志,收完成标志,CPU检测到该标志后,就从串行通信控制器中检测到该标志后,就从串行通信控制器中 将数据读出。将数据读出。 上述三个问题中,一个共性的问题是:上述三个问题中,一个共性的问题是:CPU需要对需要对 一个标志进行检测判断,以决定是否进行一项预定的工一个标志进行检测判断,以决定是否进行

6、一项预定的工 作(即执行一个特定的程序段)。对一个可能作(即执行一个特定的程序段)。对一个可能随机出现随机出现 的标志的标志进行检测判断,可以采用两种方法:查询进行检测判断,可以采用两种方法:查询/中断。中断。 查询是指查询是指CPU在程序流程中循环判断标志的改变。在程序流程中循环判断标志的改变。 如:启动定时器时,定时器的定时超时标志如:启动定时器时,定时器的定时超时标志TF为为0,定,定 时间隔到时,定时器将定时超时标志时间隔到时,定时器将定时超时标志TF置为置为1,程序中,程序中 CPU用循环结构判断该标志是否为用循环结构判断该标志是否为1等待定时结束:等待定时结束: while(TF

7、= = 0);); TF = 1; 调用采样函数,调用采样函数, (TF定时到标志)定时到标志) 或者在主函数的流程中按顺序判断各个标志或者在主函数的流程中按顺序判断各个标志 的状态,以确定要做的工作。的状态,以确定要做的工作。 while(1) if(TI) 调用发送函数;调用发送函数; if(RI) 调用接受函数;调用接受函数; if(keypress)调用按键处理函数;调用按键处理函数; 这里,这里,TI、RI、keypress分别为定时到标分别为定时到标 志、发送缓冲器空标志、接收缓冲器满标志和有志、发送缓冲器空标志、接收缓冲器满标志和有 键按下标志。键按下标志。 所谓中断是指,单片机

8、内部有一个所谓中断是指,单片机内部有一个中断管理系统中断管理系统, 它对内部的定时器事件、串行通信的发送和接收事它对内部的定时器事件、串行通信的发送和接收事 件及外部事件(如键盘按键动作)等件及外部事件(如键盘按键动作)等进行自动的检进行自动的检 测测判断,判断,当有某个事件产生时,中断管理系统会置当有某个事件产生时,中断管理系统会置 位相应标志位相应标志通知通知CPU,请求请求CPU迅速去处理。迅速去处理。CPU 检测到某个标志时,会停止当前正在处理的程序流检测到某个标志时,会停止当前正在处理的程序流 程,转去处理所发生的事件(针对发生的事件,调程,转去处理所发生的事件(针对发生的事件,调

9、用某一特定的函数,称为该事件的用某一特定的函数,称为该事件的中断服务函数中断服务函数),), 处理完以后,再回到原来被中断的地方,继续执行处理完以后,再回到原来被中断的地方,继续执行 原来的程序。这个过程称为原来的程序。这个过程称为中断中断。(。(CPU对中断标对中断标 志的检测是在程序指令执行的周期中顺带进行的,志的检测是在程序指令执行的周期中顺带进行的, 不影响指令的连续执行。不影响指令的连续执行。 ) 注:程序中的一般函数是由主函数或其它函数调用注:程序中的一般函数是由主函数或其它函数调用 的,而中断服务函数不能被其它函数调用,它的执的,而中断服务函数不能被其它函数调用,它的执 行完全是

10、随机的。行完全是随机的。 中断管理系统可以处理的事件称为中断管理系统可以处理的事件称为中断源中断源。一。一 般计算机系统允许有多个中断源,当几个中断源同般计算机系统允许有多个中断源,当几个中断源同 时向时向CPU请求中断,要求为它们服务的时候,就存请求中断,要求为它们服务的时候,就存 在在CPU优先响应哪一个中断请求源的问题,一般根优先响应哪一个中断请求源的问题,一般根 据中断源(所发生的实时事件)的轻重缓急排队,据中断源(所发生的实时事件)的轻重缓急排队, 优先处理最紧急事件的中断请求,于是规定每一个优先处理最紧急事件的中断请求,于是规定每一个 中断源都有自己的中断源都有自己的中断优先级别中

11、断优先级别。 当当CPU正在处理一个中断源请求时,又发生了正在处理一个中断源请求时,又发生了 另一个优先级比它高的中断请求,如果另一个优先级比它高的中断请求,如果CPU能够暂能够暂 时中止执行当前的中断服务程序,转而去处理优先时中止执行当前的中断服务程序,转而去处理优先 级更高的中断请求,待处理完以后,再继续执行原级更高的中断请求,待处理完以后,再继续执行原 来的低级中断处理程序,这样的过程称为来的低级中断处理程序,这样的过程称为中断嵌套中断嵌套, 这样的中断系统称为多级中断系统。没有中断嵌套这样的中断系统称为多级中断系统。没有中断嵌套 功能的中断系统称为单级中断系统。功能的中断系统称为单级中

12、断系统。 中断系统要解决的问题 CPU在不断的执行指令中,是如何检测到随机发生的中 断请求 中断能够人为控制吗(允许中断或禁止中断) 中断是随机产生的,不能用一般的子程序调用,那么如 何处理中断处理子程序呢 当有多个中断时怎么处理 中断服务完毕,如何正确回到原断点处 MCS51中断系统中断系统 MCS51系列中不同型号单片机的中断源数量系列中不同型号单片机的中断源数量 是不同的(是不同的(511个),最典型的个),最典型的8051单片机有单片机有5 个中断源(外部中断个中断源(外部中断0、1,内部定时器中断,内部定时器中断0、1, 串口中断),具有两个中断优先级串口中断),具有两个中断优先级。

13、与中断系统有。与中断系统有 关的特殊功能寄存器有中断允许寄存器关的特殊功能寄存器有中断允许寄存器IE、中断优中断优 先级控制寄存器先级控制寄存器IP、中断控制寄存器中断控制寄存器TCON和和SCON 中有关位。中有关位。MCS51单片机基本的中断系统结构如单片机基本的中断系统结构如 图图41所示。所示。 外部中断 请求0 内部 定时器0 外部中断 请求1 内部 定时器1 内部 T 串行口 R 中断请求 标志寄存器 源允许总允许 允许中断寄存器 中断优先级 寄存器 中断源 标识符 中断源 标识符 高优先级 中断请求 中断矢量 低优先级 中断请求 中断矢量 T发送 R接收 INT0 INT1 查询

14、硬件 图41 MCS51的中断系统 1中断源与中断标志中断源与中断标志 MCS51中典型的中典型的8051单片机有单片机有5个个中断源:中断源: 两个外部两个外部中断:(中断:(P3.2 INT0、P3.3 INT1) 上上输入输入的外部中断源,低电平或负跳变有效,置位的外部中断源,低电平或负跳变有效,置位TCON中的中的 IE0和和IE1中断请求标志位;中断请求标志位; 三个内部三个内部中断源:定时器计数器中断源:定时器计数器T0、T1的溢出中断的溢出中断 源和串行口的发送源和串行口的发送/接收中断。对接收中断。对T0和和T1中断,当定中断,当定 时计数回时计数回0溢出时,由硬件自动置位溢出

15、时,由硬件自动置位TCON中的中的TF0 或或TF1中断请求标志位;对串行接收发送中断,当中断请求标志位;对串行接收发送中断,当 完成一串行完成一串行帧帧的接收发送时,由硬件自动置的接收发送时,由硬件自动置SCON 中的中断请求标志位中的中断请求标志位TI(发送)或发送)或RI(接收),必须接收),必须 由用户在中断服务程序中复位由用户在中断服务程序中复位TI或或RI。 中断控制寄存器中断控制寄存器TCON的各位(可位寻址):的各位(可位寻址): IE0:外部中断外部中断0请求源(请求源(INT0)标志。标志。 IE01,外部中断外部中断0正在向正在向CPU请求中断,当请求中断,当 CPU 响

16、应该中断时由硬件清零响应该中断时由硬件清零IE0(边沿触发方式)。边沿触发方式)。 IT0:外部中断源外部中断源 INT0 触发方式控制位。触发方式控制位。 IT0 0,外部中断外部中断0程控为程控为电平触发方式电平触发方式,当,当P3.2 输入低电平时,置位输入低电平时,置位IE0。IT0 1,外部中断外部中断0程程 控为控为边沿触发方式边沿触发方式,相继的两次采样,一个周期中,相继的两次采样,一个周期中 采样到为高电平,接着的下个周期中采样到为低电采样到为高电平,接着的下个周期中采样到为低电 平,则置平,则置1 IE0。 D7D6D5D4D3D2D1D0 TF1TR1TF0TR0IE1IT

17、1IE0IT0 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

18、溢出中断标志位,溢出中断标志位,CPU执行中执行中 断服务程序时由硬件复位。断服务程序时由硬件复位。 TR1:定时计数器定时计数器T1运行控制位。运行控制位。 TF1:定时计数器定时计数器T1溢出中断标志位,溢出中断标志位,CPU执行中执行中 断服务程序时由硬件复位。断服务程序时由硬件复位。 串行口中断:串行口的接收中断标志串行口中断:串行口的接收中断标志RI(SCON.0) 和发送中断标志和发送中断标志TI(SCON.1)逻辑或以后作为内逻辑或以后作为内 部的一个中断源。当串行口发送完一个字符由内部部的一个中断源。当串行口发送完一个字符由内部 硬件置位发送中断标志硬件置位发送中断标志TI,接

19、收到一个字符后也由接收到一个字符后也由 内部硬件置位接收中断标志内部硬件置位接收中断标志RI。应该注意,应该注意,CPU响响 应串行口的中断时,并不清应串行口的中断时,并不清0 TI和和RI中断标志,中断标志, TI和和RI必须由软件清必须由软件清0(中断服务程序中必须有清(中断服务程序中必须有清 TI、RI的指令)。的指令)。 SCON:串行通信控制寄存器:串行通信控制寄存器 2中断控制中断控制 (1)中断允许寄存器)中断允许寄存器IE MCS51的的CPU对中断源的开放或屏蔽,即每一个对中断源的开放或屏蔽,即每一个 中断源是否被允许中断,是由内部的中断允许寄存中断源是否被允许中断,是由内部

20、的中断允许寄存 器器IE(IE为特殊功能寄存器,它的字节地址为特殊功能寄存器,它的字节地址A8H, 可位寻址)控制的,其格式如下:可位寻址)控制的,其格式如下: EA:CPU的中断开放标志。的中断开放标志。 EA 1,CPU开放中断;开放中断; EA 0,CPU屏蔽所有的中断申请。屏蔽所有的中断申请。 EX0:外部中断外部中断0中断允许位。中断允许位。 EX0 1,允许中断;允许中断; EX0 0,禁止中断。禁止中断。 D7D6D5D4D3D2D1D0 EA ESET1EX1ET0EX0 ET0:T0的溢出中断允许位。的溢出中断允许位。 ET0 1,允许允许T0中断;中断; ET0 0,禁止禁

21、止T0中断。中断。 EX1:外部中断外部中断1中断允许位。中断允许位。 EX1 1,允许外部中断允许外部中断1中断;中断; EX1 0,禁止外部中断禁止外部中断1中断。中断。 ET1:定时器计数器定时器计数器 T1的溢出中断允许位。的溢出中断允许位。 ET1 1,允许允许T1中断;中断; ET1 0禁止禁止T1中断。中断。 ES: 串行口中断允许位。串行口中断允许位。 ES 1,允许串行口中断;允许串行口中断; ES 0禁止串行口中断。禁止串行口中断。 (2)中断优先级控制)中断优先级控制 MCS51有两个中断优先级,每一中断请求源可编程为有两个中断优先级,每一中断请求源可编程为 高优先级中断

22、或低优先级中断,实现二级中断嵌套。一高优先级中断或低优先级中断,实现二级中断嵌套。一 个正在被执行的低优先级中断服务程序能被高优先级中个正在被执行的低优先级中断服务程序能被高优先级中 断所中断,断所中断,但不能被另一个同级的或低优先级中断源所但不能被另一个同级的或低优先级中断源所 中断。中断。若若CPU正在执行高优先级的中断服务程序,则不正在执行高优先级的中断服务程序,则不 能被任何中断源所中断,一直执行到结束,遇到返回指能被任何中断源所中断,一直执行到结束,遇到返回指 令令RETI,返回主程序后再执行一条指令才能响应新的中返回主程序后再执行一条指令才能响应新的中 断源申请。断源申请。 *为了

23、实现上述功能,为了实现上述功能,MCS51的中断系统有两个不可寻的中断系统有两个不可寻 址的优先级状态触发器,一个指出址的优先级状态触发器,一个指出CPU是否正在执行高是否正在执行高 优先级中断服务程序,另一个指出优先级中断服务程序,另一个指出CPU是否正在执行低是否正在执行低 级中断服务程序。这两个触发器的级中断服务程序。这两个触发器的1状态分别屏蔽状态分别屏蔽 所有的中断申请和同一优先级的其他中断源申请。所有的中断申请和同一优先级的其他中断源申请。 另外,另外,MCS51的片内有一个中断优先级寄存器的片内有一个中断优先级寄存器IP(IP 为特殊功能寄存器,它的字节地址为为特殊功能寄存器,它

24、的字节地址为B8H,可位寻址),可位寻址), 其格式如下:其格式如下: PX0:外部中断外部中断0中断优先级控制位。中断优先级控制位。 PX0 1,外部中断外部中断0中断定义为高优先级中断;中断定义为高优先级中断; PX0 0,外部中断外部中断0中断定义为低优先级中断。中断定义为低优先级中断。 PT0:定时器定时器T0中断优先级控制位。中断优先级控制位。 PT0 1,定时器定时器T0中断定义为高优先级中断;中断定义为高优先级中断; PT0 0,定时器定时器T0中断定义为低优先级中断。中断定义为低优先级中断。 PX1:外部中断外部中断1中断优先级控制位。中断优先级控制位。 PX1 = 1,外部中

25、断外部中断1中断定义为高优先级中断;中断定义为高优先级中断; PX1 0,外部中断外部中断1中断定义为低优先级中断。中断定义为低优先级中断。 PT1:定时器定时器T1中断优先级控制位。中断优先级控制位。 PT1 1,定时器定时器T1中断定义为高优先级中断;中断定义为高优先级中断; PT1 0,定时器定时器T1中断定义为低优先级中断。中断定义为低优先级中断。 D7D6D5D4D3D2D1D0 PSPT1PX1PT0PX0 PS:串行口中断优先级控制位。串行口中断优先级控制位。 PS 1,串行口中断定义为高优先级中断;串行口中断定义为高优先级中断; PS 0,行口中断定义为低优先级中断。行口中断定

26、义为低优先级中断。 在在 CPU接收到接收到同样优先级同样优先级的几个中断请求源时,的几个中断请求源时, 一个内部的硬件查询序列确定优先服务于哪一个中一个内部的硬件查询序列确定优先服务于哪一个中 断申请,这样在同一个优先级里,由查询序列确定断申请,这样在同一个优先级里,由查询序列确定 了优先级结构,其优先级别排列如下:了优先级结构,其优先级别排列如下: 外部中断外部中断0 最高最高 定时器定时器T0中断中断 外部中断外部中断1 定时器定时器T1中断中断 串行口中断串行口中断 最低最低 # MCS51复位以后,特殊功能寄存器复位以后,特殊功能寄存器IE、IP 的内容均为的内容均为0,由初始化程序

27、对,由初始化程序对IE、IP编程,以开编程,以开 放中央处理器放中央处理器CPU中断、允许某些中断源中断和改中断、允许某些中断源中断和改 变中断的优先级。变中断的优先级。 *3中断响应过程中断响应过程 MCS51的的CPU在每一个机器周期顺序检查每一在每一个机器周期顺序检查每一 个中断源。在个中断源。在机器周期的机器周期的S6采样采样并按优先级处理所并按优先级处理所 有被激活的中断请求,如果没有被下述条件所阻止,有被激活的中断请求,如果没有被下述条件所阻止, 将在下一个机器周期的状态将在下一个机器周期的状态S1响应激活了的最高级响应激活了的最高级 中断请求。中断请求。 CPU正在处理相同的或更

28、高优先级的中断;正在处理相同的或更高优先级的中断; 现行的机器周期不是所执行指令的最后一个机器周现行的机器周期不是所执行指令的最后一个机器周 期;期; 正在执行的指令是中断返回指令(RETI)或者是对 IE、IP的写操作指令(执行这些指令后至少再执行一 条指令后才会响应中断)。 *如果上述条件中有一个存在,CPU将丢弃中断 查询的结果;若一个条件也不存在,将在紧接着的 下一个机器周期执行中断查询的结果。 处理器响应中断时,先置位相应的优先级状态 触发器(该触发器指出CPU开始处理的中断优先级 别),然后执行一条硬件子程序调用,清0中断请求 源申请标志(TI和RI除外)。接着把程序计数部PC 的

29、内容压入堆栈(但不保护PSW),将被响应的中 断服务程序的入口地址送程序计数器PC,各中断源 服务程序的入口地址为: 外部中断00003H 定时器T0000BH 外部中断10013H 定时器T1001BH 串行口中断0023H 通常在中断入口,安排一条跳转指令,以转移到用户设 计的中断处理程序入口。 CPU执行中断处理程序一直到RETI指令为止。RETI 指令是表示中断服务程序的结束,CPU执行完这条指令 后,清0响应中断时所置位的优先级状态触发器,然后从 堆栈中弹出顶上的两个字节到程序计数器 PC,CPU从 原来打断处重新执行被中断的程序。由此可见,用户的 中断服务程序末尾必须安排一条返回指

30、令RETI,CPU现 场的保护和恢复必须由用户的中断服务程序实现。 * *一、中断处理过程一、中断处理过程 中断处理过程分为四个阶段:中断请求,中断处理过程分为四个阶段:中断请求, 中断响应,中断处理、中断返回。中断响应,中断处理、中断返回。MCSMCS5151系列单系列单 片机的中断过程流程如图片机的中断过程流程如图6.26.2所示。所示。 N N Y Y Y N 执执 行行 指指 令令 中断标志中断标志1? (中断请求中断请求?) 指令指令 最后一个最后一个T周期周期? EA=1? 允允 许许 位位 = 1? CPU 判判 别优别优 先权先权 ,响响 应优应优 先权高先权高 的中断的中断

31、断点的断点的PC进栈进栈, 中断服务入口地址送中断服务入口地址送PC 撤撤 除除 中中 断断 标标 志志 中中 断断 服服 务务 中中 断断 返返 回回, 断断 点点 出出 栈栈 送送 PC 中断请求中断请求. 中断响应中断响应 中断服务中断服务 中断返回中断返回 中断请求、中断响应过程由硬件完成。中断请求、中断响应过程由硬件完成。 中断服务程序应根据需要进行编写。程序中要注意保护中断服务程序应根据需要进行编写。程序中要注意保护 现场和恢复现场。现场和恢复现场。 中断返回是通过执行一条中断返回是通过执行一条RETIRETI中断返回指令,使堆栈中中断返回指令,使堆栈中 被压入的断被压入的断 点地

32、址送点地址送PCPC,从而返回主程序的断点继续执,从而返回主程序的断点继续执 行主程序。另外行主程序。另外RETIRETI还有恢复优先级状态触发器还有恢复优先级状态触发器 的作用,的作用, 因此不能以因此不能以RETRET指令代替指令代替“RETIRETI”指令。指令。 * *二、中断请求的撤除二、中断请求的撤除 CPUCPU响应中断后,应撤除该中断请求标志,否则响应中断后,应撤除该中断请求标志,否则会再次中断。会再次中断。 u对定时计数器对定时计数器T0、T1的溢出中断,的溢出中断,CPU响应中断后,硬件响应中断后,硬件 自动清除中断请求标志自动清除中断请求标志TF0 TF1。 u 对边沿触

33、发的外部中断对边沿触发的外部中断INT1和和INT0,CPU响应中断后硬件响应中断后硬件 自动清除中断请求标志自动清除中断请求标志IE0和和IE1。 u 对于串行口中断,对于串行口中断,CPU响应中断后,没有用硬件清除中断请响应中断后,没有用硬件清除中断请 求标志求标志TI、RI,即这些中断标志,即这些中断标志 不会自动清除,必须用软件清不会自动清除,必须用软件清 除,这是在编串行通信中断服务中应该注意的。除,这是在编串行通信中断服务中应该注意的。 u 对电平触发的外部中断,对电平触发的外部中断,CPU在响应中断时也不会自动清除在响应中断时也不会自动清除 中断标志,因此,在中断标志,因此,在C

34、PU响应中断后应立即撤除响应中断后应立即撤除INT1或或INT0的的 低电平信号。低电平信号。 *4外部中断响应时间 INT0和INT1电平在每一个机器周期的S5P2被 采样并锁存到IE0、IE2中,这个新置入的IE0、 IEI状态等到下一个机器周期才被查询电路查 询到。如果中断被激活,并且满足响应条件, CPU接着执行一条硬件子程序调用指令以转 到相应的服务程序入口,该调用指令本身需两 个机器周期。这样,在产生外部中断请求到开 始执行中断服务程序的第一条指令之间,最少 需要三个完整的机器周期。 如果中断请求被前面列出的三个条件之一所阻止, 则需要更长的响应时间。如果已经在处理同级或更 高级中

35、断,额外的等待时间明显地取决于别的中断 服务程序的处理过程。当没有处理同级或更高级中 断时,如果正在处理的指令没有执行到最后的机器 周期,所需的额外等待时间不会多于3个机器周期, 因为最长的指令(乘法指令MUL和除法指令 DIV) 也只有 4个机器周期,如果正在执行的指令为IE、IP 的指令,额外的等待时间不会多于 5个机器周期(最 多需一个周期完成正在处理的指令,完成下一条指 令(设MUL或DIV)4个机器周期)。这样,在一个 单一中断优先级的系统里,外部中断响应时间总是 在38个机器周期之间。 *外部中断触发方式选择 1电平触发方式 若外部中断定为电平触发方式,外部引脚中断输入 必须有效(

36、保持低电平),直到CPU实际响应该中 断时为止,同时在中断服务程序返回之前,外部中 断输入必须无效(高电平),否则CPU返回后会再 次引起中断。所以电平触发方式适合于外部中断输 入以低电平输入的、而且中断服务程序能清除外部 中断输入请求信号的情况。在用户系统中,可将中 断输入信号经一个D触发器接入,并使D触发器的D 端接地,当外部中断请求的正脉冲信号出现在D触发 器的CLK端时,D触发器的Q端产生负电平,INTx有 效,发出中断请求,CPU执行中断服务程序时,利 用一根口线,如P1.0,输出一负电平脉冲使D触发器 置位,撤消中断请求。 2边沿触发方式 外部中断若定义为边沿触发方式,外部中断申请

37、 触发器能锁存外部中断输入线上的负跳变,即使 CPU暂时不能响应,中断申请标志也不会丢失。在 这种方式里,如果相继连续两次采样,一个周期采 样到外部中断输入为高电平,下个周期采样到低电 平,则置位中断申请触发器,直到CPU响应此中断 时才清0。这样不会丢失中断,但输入的脉冲宽度至 少保持12个时钟周期(若晶振频率为6MHz,即 2S)才能被CPU采样到。外部中断的边沿触发方 式适合于以脉冲形式输入的外部输入请求,如 ADC0809的AD转换结果的标志信号EOC为正脉冲, 取反后连到8031的INTx,就可以中断方式读取AD 的转换结果。 中断服务程序及例程 使用MCS51的中断,要为使用到的中

38、断源编写 中断服务程序。C51为中断服务程序的编写提供了方 便的方法。C51的中断服务程序是一种特殊的函数, 它的说明形式为: void 函数名(void) interrupt n using m 函数体语句 这里,interrupt和using是为编写C51中断服务程序而 引入的关键字,interrupt表示该函数是一个中断服务 函数,interrupt后的整数n表示该中断服务函数是对 应哪一个中断源。 每个中断源都有系统指定的中断编号: 中 断 源 中 断 编 号 外部中断00 定时器T01 外部中断12 定时器T13 串行口中断4 using指定该中断服务程序要使用的工作寄存器组 号,m

39、为03。 关键字interrupt和using只能用于中断服务函数的 说明而不能用于其它函数。 程序中的任何函数都不能调用中断服务函数,中 断服务函数是由系统调用的。 例:例:INT0端口接一开关,端口接一开关,P1.0接一发光二极管。接一发光二极管。 开关闭合(接地)时,发光二极管改变一次状态。开关闭合(接地)时,发光二极管改变一次状态。 #include “reg51.h” #include “intrins.h” Sbit P10=P10 void delay(void) int a = 5000; while(a) _nop_( ); /*INTRINS.H中说明的内部函数中说明的内部

40、函数*/ P1.0 INT0 void 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); /*输入端先置输入端先置1,灯灭,灯灭*/ P1=4; /* 读入开关状态,并左移四位,读入开关状态,并左移四位, 使开关反映在发光二极管上使开关反映在发光二极管上*/ main() EA=1; /*开中断总开关开中断总开关*/ E

41、X0=1; /*允许允许INT0中断中断*/ IT0=1; /*下降沿产生中断下降沿产生中断*/ while(1); /*等待中断等待中断*/ P1.1 89C51 P1.0 P1.2 P1.4 P1.3 P1.5 P1.6 code char tab16= 0 x3f,0 x06,0 x5b, 0 x4F,0 x66,0 x6d,0 x7d, 0 x07, 0 x7f,0 x6f,0 x77, 0 x7c,0 x39, 0 x5e,0 x79,0 x71; int( ) interrupt 2 i+; /*计中断次数计中断次数*/ P1=tabi; /*查表,次数送显示查表,次数送显示*/

42、main() EA=1; EX1=1; IT1=1; ap5: P1=0 x3f; /*显示显示“0”*/ for(i=0;i16;); /*当当I16等待中断等待中断*/ goto ap5; /*当当i=16重复下重复下 一轮一轮16次中次中*/ 法二:在中断服务程序中控制中断次数法二:在中断服务程序中控制中断次数 #include char i; code char tab16= 0 x3f,0 x06, 0 x5b,0 x4F0 x66, 0 x6d,0 x7d,0 x07, 0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e, 0 x79,0 x71; int()

43、interrupt 2 i+ if (i16)P1=tabi; elsei=0;P1=0 x3f; main() EA=1;EX1=1; IT1=1; P1=0 x3f; while(1); /*等待中断等待中断*/ 89C51 P1.0 P1.7 INT1 +5V 作业:中断控制流水灯 定时定时/计数器计数器 定时定时/计数器控制寄存器计数器控制寄存器 定时定时/计数器运行控制计数器运行控制 定时定时/计数器工作方式计数器工作方式 通常实现定时通常实现定时/计数有计数有3种主要方法种主要方法: 软件定时,软件定时,即让机器执行一个程序段,这段程序本身没即让机器执行一个程序段,这段程序本身没

44、有具体的执行目的,只是为了磨时间。执行这段程序所有具体的执行目的,只是为了磨时间。执行这段程序所 需要的时间就是延时时间。这种程序前面已设计过。这需要的时间就是延时时间。这种程序前面已设计过。这 种方法定时占用种方法定时占用CPU执行时间,降低了执行时间,降低了CPU利用率。利用率。 数字电路硬件定时:数字电路硬件定时:采用小规模集成电路器件如采用小规模集成电路器件如555, 外接定时部件外接定时部件(电阻和电容电阻和电容)构成。这样的定时电路简单,构成。这样的定时电路简单, 但要改变定时范围,必须改变电阻和电容,这种定时电但要改变定时范围,必须改变电阻和电容,这种定时电 路在硬件连接好以后,

45、修改不方便。路在硬件连接好以后,修改不方便。 可编程定时可编程定时/计数器计数器是为方便微型计算机系统的设计和是为方便微型计算机系统的设计和 应用而研制的,它是硬件定时,又很容易地通过软件来应用而研制的,它是硬件定时,又很容易地通过软件来 确定和改变它的定时值,通过初始化编程,能够满足各确定和改变它的定时值,通过初始化编程,能够满足各 种不同的定时和计数要求,因而在嵌入式系统的设计和种不同的定时和计数要求,因而在嵌入式系统的设计和 应用中得到广泛的应用。(基本原理)应用中得到广泛的应用。(基本原理) 8051型有两个型有两个十六位十六位定时定时/计数器计数器T0、T1,有四种工有四种工 作方式

46、。作方式。 MCS51系列单片机的定时系列单片机的定时/计数器有几计数器有几 个相关的特殊功能寄存器:个相关的特殊功能寄存器: 方式控制寄存器方式控制寄存器TMOD; 加法计数寄存器加法计数寄存器TH0、TH1 (高八位)(高八位) TL0、TL1 (低八位);低八位); 定时定时/计数到标志计数到标志TF0、TF1(中断控制寄存器中断控制寄存器TCON) 定时定时/计数器启停控制位计数器启停控制位TR0、TR1(TCON) 定时定时/计数器中断允许位计数器中断允许位ET0、ET1(中断允许寄存中断允许寄存IE) 定时定时/计数器中断优先级控制位计数器中断优先级控制位PT0、PT1(中断优中断

47、优IP) 1. 定时工作方式定时工作方式 设置为定时工作方式时,定时器计数的脉冲是由设置为定时工作方式时,定时器计数的脉冲是由51单片机片内单片机片内 振荡器经振荡器经12分频后产生的。分频后产生的。 每经过一个机器周期定时器每经过一个机器周期定时器(T0或或T1)的数值加的数值加1直至计数满产生直至计数满产生 溢出。溢出。 如:当如:当8051采用采用12MHz晶体时,每个机器周期为晶体时,每个机器周期为1s,计,计5 个机器个机器 周期即为周期即为5 s,即定时,即定时5 s 。 2. 计数工作方式计数工作方式 设置为计数工作方式时,定时设置为计数工作方式时,定时/计数器对引脚计数器对引脚

48、 P3.4 (T0)和和P3.5 (T1)输入的外部脉冲信号计数。输入的外部脉冲信号计数。 当输入脉冲信号产生由当输入脉冲信号产生由1至至0的下降沿时,定时器的值的下降沿时,定时器的值 加加 1。测。测 量过程是:量过程是: CPU前一个机器周期采样脉冲值为高,下一个机器周前一个机器周期采样脉冲值为高,下一个机器周 期采样脉冲值为低,则计数器加期采样脉冲值为低,则计数器加 1。 由于检测一个由于检测一个1 1至至0 0的跳变需要二个机器周期,故最高计数的跳变需要二个机器周期,故最高计数 频率为振荡频率的二十四分之一。频率为振荡频率的二十四分之一。 虽然对输入信号的占空比无特殊要求,但为了确保某

49、个电平虽然对输入信号的占空比无特殊要求,但为了确保某个电平 在变化之前至少被采样一次,要求电平保持时间至少是一个完整在变化之前至少被采样一次,要求电平保持时间至少是一个完整 的机器周期。的机器周期。 无论是定时还是计数,当软件设定了定时无论是定时还是计数,当软件设定了定时/计数器的工作方式,计数器的工作方式, 启动以后,定时启动以后,定时/计数器就按规定的方式工作,不占用计数器就按规定的方式工作,不占用CPU的操作的操作 时间,此时时间,此时CPU可执行其他程序,到了计满规定的时间或规定的可执行其他程序,到了计满规定的时间或规定的 个数(定时个数(定时/计数器溢出),定时计数器溢出),定时/计

50、数器会给出溢出标志,你可以计数器会给出溢出标志,你可以 通过查询或中断方式通过查询或中断方式了解是否溢出。这种工作的方式如同人带的了解是否溢出。这种工作的方式如同人带的 手表,人在工作或睡觉,而手表依然滴滴答答行走,你可以通过手表,人在工作或睡觉,而手表依然滴滴答答行走,你可以通过 看表或设闹钟方式,到了规定的时间,干你想干的事。看表或设闹钟方式,到了规定的时间,干你想干的事。 定时计数器定时计数器方式控制方式控制寄存器寄存器TMOD 定时计数器的工作方式由定时计数器的工作方式由TMOD的各位控制,的各位控制, TMOD的格式为:的格式为: TMOD的低四位为的低四位为T0的方式字,高四位为的

51、方式字,高四位为T1的方的方 式字。式字。TMOD不能位寻址,必须整体赋值不能位寻址,必须整体赋值。TMOD各各 位的含义如下位的含义如下: 1. 工作方式选择位工作方式选择位M1、M0 M1、M0的状态决定定时器的工作方式:的状态决定定时器的工作方式: D7D6D5D4D3D2D1D0 GATEC/T M1 M0GATEC/TM1M0 2. 定时和外部事件计数方式选择位定时和外部事件计数方式选择位C/T C/T0为定时器方式。在该方式中,以振荡器输出时为定时器方式。在该方式中,以振荡器输出时 钟脉冲钟脉冲(fosc)的十二分频信号(即机器周期)作为计数信号,的十二分频信号(即机器周期)作为计

52、数信号, 也就是每一个机器周期也就是每一个机器周期,定时器加定时器加1,若晶振为,若晶振为 12MHz,则定时器计数频率为则定时器计数频率为1MHz,计数的脉冲周期为计数的脉冲周期为 1S。定时器从初值开始加定时器从初值开始加1计数直至定时器溢出。计数直至定时器溢出。 M1M0 功功 能能 说说 明明 0 0 1 1 0 1 0 1 方式方式0,为,为13位的定时计数器位的定时计数器 方式方式1,为,为16位的定时计数器位的定时计数器 方式方式2,为常数自动重装入的,为常数自动重装入的8位定时计数器位定时计数器 方式方式3,T0分分为两个为两个8位定时计数器,位定时计数器, T1在该方式时停止

53、在该方式时停止 C/T1为外部事件计数器方式,这种方式为外部事件计数器方式,这种方式 将外部引脚(将外部引脚(T0为为P3.4、T1为为P3.5)上的输上的输 入脉冲作为计数脉冲。(下降沿进行计数)入脉冲作为计数脉冲。(下降沿进行计数) 外部事件计数时最高计数频率为晶振频外部事件计数时最高计数频率为晶振频 率的二十四分之一,外部输入脉冲高电平和率的二十四分之一,外部输入脉冲高电平和 低电平时间必须在一个机器周期以上。低电平时间必须在一个机器周期以上。 对外部输入脉冲计数的目的通常是为了对外部输入脉冲计数的目的通常是为了 测试脉冲的周期、频率或对输入的脉冲数进测试脉冲的周期、频率或对输入的脉冲数

54、进 行累加。行累加。 3. 门控位门控位GATE GATE与与TR0、TR1配合决定定时配合决定定时/计数器的启停。计数器的启停。 GATE = 0时,定时器时,定时器/计数器的启停只受定时器计数器的启停只受定时器 运行控制位(运行控制位(TR0、TR1)的控制。的控制。 (软件启动) GATE = 1时,定时器时,定时器/计数器的启停除受计数器的启停除受TR0、 TR1控制外,还受外部引脚(控制外,还受外部引脚(INT0、 INT1)输入电输入电 平的控制(平的控制(为高为高)。即)。即TR0和和INT0控制控制T0的运行,的运行, TR1和和INT1控制控制T1的运行的运行 (软硬启动)

55、定时器运行控制位定时器运行控制位 在特殊功能寄存器在特殊功能寄存器 TCON中存放着定时器的运行控制位中存放着定时器的运行控制位 和溢出标志位。和溢出标志位。 1定时器定时器T0运行控制位运行控制位TR0 TR0(TCON.4)由软件置位和清零。由软件置位和清零。 当当GATE=0时,时,T0的计数仅由的计数仅由TR0控制,控制,TR0=1时允许时允许T0计计 数,数,TR0=0时禁止时禁止T0计数,这时,定时器仅由软件控制。计数,这时,定时器仅由软件控制。 当当GATE=1时,仅当时,仅当TR0=1且且P3.2的输入信号为的输入信号为高电平高电平时时T0 才计数,当才计数,当TR0为为0或或

56、P3.2的输入为低电平时都禁止的输入为低电平时都禁止T0计数,这计数,这 时,若置时,若置TR0为为1,则定时器仅由引脚信号的状态控制启停,因,则定时器仅由引脚信号的状态控制启停,因 而是硬件控制的。用而是硬件控制的。用TR0和和INT0一起控制定时器的启停,则为一起控制定时器的启停,则为 软、硬件配合控制。软、硬件配合控制。 2定时器定时器 T1运行控制位运行控制位TR1 定时定时/计数器的工作方式计数器的工作方式 MCS51的定时器有方式的定时器有方式0、方式、方式1、方式、方式2和和 方式方式3这这4种工作方式。种工作方式。 1.方式方式0 当当M1M0=00时,定时器工作于方式时,定时

57、器工作于方式0。 12振荡器 T0端 TR0 GATE INT0端 C/T = 0 C/T = 1 TL0 (5位) TH0 (8位) TF0中断 控制 定时计数器0工作方式0 与 方式方式 0为为13位的计数器,由位的计数器,由TL0的低的低5位和位和TH0的的8位位 组成,组成,TL0低低5位计数溢出时向位计数溢出时向TH0进位,进位,TH0计数溢出时计数溢出时 置位溢出标志置位溢出标志TF0。若若T0工作于定时方式,设计数初值为工作于定时方式,设计数初值为 a,晶振频率为晶振频率为12MHz,则则T0从初值开始计数到溢出的定从初值开始计数到溢出的定 时时间为时时间为 t(213a)1S。

58、 2. 方式方式1 当当M1M0=01时,定时器工作于方式时,定时器工作于方式1。 12振荡器 T1端 TR1 GATE INT1端 C/T = 0 C/T = 1 TL1 (8位) TH1 (8位) TF1中断 控制 定时计数器工作方式1 T1工作于方式工作于方式1时,由时,由TH1作为高作为高8位,位,TL1作为低作为低 8位,构成一个十六位的计数器。若位,构成一个十六位的计数器。若T1工作于定时方式工作于定时方式1, 计数初值为计数初值为 a,晶振频率为晶振频率为12MHz,则则T1从计数初值计从计数初值计 数到溢出的定时时间为数到溢出的定时时间为t =(216a)S。 3. 方式方式2

59、 M1M0=10时,定时器计数器工作于方式时,定时器计数器工作于方式2,方式,方式 2为自动恢复初值的为自动恢复初值的 8位计数器。位计数器。TL1作为作为8位计数器,位计数器, TH1作为计数初值寄存器。作为计数初值寄存器。 t =(28a)S。 12振荡器 T1端 TR1 GATE INT1端 C/T = 0 C/T = 1 TL1 (8位) TH1 (8位) TF1中断 控制 定时/计数器工作方式2 重新装入 *4.方式方式3 M1M0=11时,被设置为方式时,被设置为方式3。 12 fosc T0端 TR0 GATE INT0端 C/T = 0 C/T = 1 TL0 (8位) TF0

60、 中断 控制 定时/计数器工作方式3 1/12 fosc 1/12 fosc TR1 TF1 中断 1/12 fosc TH0 (8位) 控制 若若T1设置为工作方式设置为工作方式3时,则使时,则使T1停止计数。停止计数。若若 T0被设置为方式被设置为方式3,则,则T0分为两个独立的分为两个独立的8位计数位计数 器器TL0和和TH0。 TL0可作为八位定时可作为八位定时/计数器,可使用计数器,可使用T0的所有的所有 状态控制位(状态控制位(GATE、TR0、INT0(P3.2)、)、T0 (P3.4)、)、TF0等),等),TL0计数溢出时置位溢出标计数溢出时置位溢出标 志志TF0,TL0计数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论