单片机原理及应用中断系统ppt课件.ppt

上传人:牧羊曲112 文档编号:1655590 上传时间:2022-12-13 格式:PPT 页数:55 大小:666KB
返回 下载 相关 举报
单片机原理及应用中断系统ppt课件.ppt_第1页
第1页 / 共55页
单片机原理及应用中断系统ppt课件.ppt_第2页
第2页 / 共55页
单片机原理及应用中断系统ppt课件.ppt_第3页
第3页 / 共55页
单片机原理及应用中断系统ppt课件.ppt_第4页
第4页 / 共55页
单片机原理及应用中断系统ppt课件.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《单片机原理及应用中断系统ppt课件.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用中断系统ppt课件.ppt(55页珍藏版)》请在三一办公上搜索。

1、中断系统,5.1 中断控制方式 5.2 MCS-51单片机的中断系统 5.3 中断的C51编程 5.4 外部中断的扩展, 什么是中断 生活举例:你正在家中看书突然电话铃响了你在书上做个记号去接电话并和来电话的人交谈门铃突然响了你让打电话的人先等等你去开门并和来人交谈谈话结束后关好门回到电话机旁继续通话通话结束后放下电话回到房间从做记号处继续看书。 这是一个典型的中断现象,即正常的工作过程被某个突发事件(内部的或外部的)打断。发生中断后执行的另一工作仍然可能被新的时间打断(中断嵌套)。 分析:某一特定时刻有多项任务需要一个人(CPU)做,但又不能同时做多项任务,只能采取中断方式“穿插完成”。,第

2、5章 中断系统, 中断的基本概念 所谓中断是指CPU对系统中或系统外发生的某个事件的一种响应过程,即CPU暂时停止现行程序的执行,而自动转去执行预先安排好的处理该事件的服务子程序。当处理结束后,再返回到被暂停程序的断点处,继续执行原来的程序。实现这种中断功能的硬件系统和软件系统统称为中断系统。 中断系统是计算机的重要组成部分。实时控制、故障自动处理时往往用到中断系统,计算机与外部设备间传送数据及实现人机联系也常常采用中断方式。,5.1 中断控制方式, 中断的基本概念 在中断系统中,通常将CPU正常运行的程序称为主程序,把引起中断的设备或事件称为中断源。由中断源向CPU所发出的请求中断的信号称为

3、中断请求信号,CPU接受中断申请终止现行程序而转去执行中断服务程序称为中断响应,服务于中断事件的程序称为中断服务程序,也称为中断处理程序。 现行程序被中断的地方称为断点,执行完中断服务程序后返回至源程序断点处称为中断返回,系统处理中断的整个过程称为中断。,5.1 中断控制方式, 引进中断的优点 分时操作: 计算机与外部设备交换信息时,存在着高速CPU和低速外设之间处理速度的矛盾。若采用软件查询方式,则不但占用了CPU操作时间,而且响应速度慢。中断功能正好解决了这个矛盾。每当外设做完一件事后,就发出中断申请,请求CPU中断其正在执行的程序,转去执行中断服务程序。中断处理完成后,CPU恢复执行主程

4、序,外设仍然继续工作。这样,CPU就可以同时命令多个外设(如键盘、打印机等)同时工作,从而提高CPU的工作效率。,5.1 中断控制方式, 引进中断的优点 实时处理: 在实时控制中,现场的各个参数随时间和现场情况不断变化。有了中断功能,外界的这些变化量可根据要求随时向CPU发中断请求,要求CPU及时处理,这种效果是查询方式无法做到的。 故障处理: 计算机在运行过程中,难免会出现一些无法预料的故障,如存储出错、运算溢出和电源突跳等,有了中断功能,当出现上述故障情况时,CPU就可以及时转去执行故障处理程序,自行处理故障而无需停机。,5.1 中断控制方式, 51单片机中断源 外部设备中断源 计算机的输

5、入/输出设备,如键盘、磁盘驱动器、打印机等,可通过接口电路向CPU申请中断。 故障源 故障源是产生故障信息的来源。它作为中断源,可以使CPU以中断方式对已经发生的故障做及时处理。 计算机的故障源有内部和外部之分。内部故障源一般是指执行指令时产生的错误情况,如除法中除以零,这种故障也称为内部软件中断;外部中断源主要有电源掉电等情况,当电源掉电而将至一定数值时,即发出中断请求,由计算机中断系统自动响应,并进行相应处理。,5.1 中断控制方式, 51单片机中断源 控制对象中断源 计算机做实时控制时,被控对象常常用作中断源。例如:电压、电流、温度等超过其上限或下限时,以及继电器、开关闭合与断开时,都可

6、以作为中断源向CPU申请中断。 定时/计数脉冲中断源 定时器/计数器脉冲中断也有内部和外部之分。内部定时中断是由定时器/计数器溢出而自动产生的;外部计数中断则是由外部脉冲通过CPU的中断请求输入端引起的。,5.1 中断控制方式, 中断系统需解决的基本问题 中断源: 中断请求信号的来源。包括中断请求信号的产生及该信号怎样被CPU有效地识别。而且要求中断请求信号产生一次,只能被CPU接收和处理一次,即不能一次中断申请被CPU多次响应。这就涉及到中断请求信号的及时撤除问题。 中断响应与返回: CPU采集到中断请求信号后,怎样转向特定的中断服务子程序及执行完中断服务子程序怎样返回被中断的程序继续正确地

7、执行。中断响应与返回的过程中涉及到CPU响应中断的条件、现场保护等问题。,5.1 中断控制方式, 中断系统需解决的基本问题 优先级控制(优先级排队): 一个计算机应用系统,特别是计算机实时测控应用系统,往往有多个中断源,各中断源所要求的处理具有不同的轻重、缓急程度。与人处理问题的思路一样,希望重要紧急的事件先处理,而且如果当前处于正在处理某个事件的过程中,有更重要、更紧急的事件到来,就应当暂停当前事件的处理,转去处理新事件。这就是中断系统优先级控制所要解决的问题。中断优先级的控制形成了中断嵌套。,5.1 中断控制方式, 中断系统需解决的基本问题 中断嵌套: 当CPU响应某个中断请求而正在进行中

8、断处理时,若有更高优先级别的中断源发出中断申请,则CPU将自动中断正在执行的中断服务程序,并保存该中断程序断点(类似于子程序嵌套),转而去执行高级别中断的中断服务程序;当高级别中断处理完毕后,再继续执行被中断的中断处理程序。这个过程被称为中断嵌套。 只有高级别的中断能中断当前的中断服务程序,同级别或者低级别的中断不能中断当前的中断服务程序。,5.1 中断控制方式, 51单片机中断源 外部中断 外部中断是指从单片机外部引脚INT0、INT1输入中断请求信号的中断,即外部中断源有两个。输入/输出的中断请求、实时事件的中断请求、掉电和设备故障的中断请求都可以作为外部中断源,从引脚INT0、INT1输

9、入。 外部中断请求有两种触发方式:电平触发及跳变(边沿)触发。这两种触发方式可以通过对特殊功能寄存器TCON编程来选择。,5.2 MCS-51单片机的中断系统, 51单片机中断源 外部中断 特殊功能寄存器TCON的格式定义如下: IT0(IT1):外部中断0(或1)触发方式控制位。IT0(或IT1)被设置为“0”,则选择外部中断为电平触发方式;IT0(或IT1)被设置为“1”,则选择外部中断为跳变触发方式。,5.2 MCS-51单片机的中断系统, 51单片机中断源 TCON的格式 IE0(IE1):外部中断0(或外部中断1)的中断请求标志位。当IT0(或IT1)= 0,即电平触发方式时,CPU

10、在每个机器周期的 S5P2 采样 INTx(x=0,1)。若 INTx 引脚为低电平,将直接触发外部中断。跳变触发方式时,若第一个机器周期采样到 INTx 引脚为高电平,第二个机器周期采样到 INTx 引脚为低电平时,由硬件置位 IE0(或 IE1),并以此来向CPU请求中断。当 CPU 响应中断转向中断服务程序时由硬件将IE0(或 IE1)清零。,5.2 MCS-51单片机的中断系统, 51单片机中断源 外部中断 对于跳变触发的外部中断,CPU在每个机器周期都采样INTx。为了保证检测到负跳变,输入到INTx 引脚上的高电平与低电平至少应保持1个机器周期。对于电平触发的外部中断,由于CPU对

11、INTx引脚没有控制作用,也没有相应的中断请求标志位,因此需要外接电路来撤除中断请求信号。,5.2 MCS-51单片机的中断系统, 51单片机中断源 外部中断示例 外部中断请求信号通过 D 触发器加到单片机引脚上。当外部中断请求信号使 D 触发器的 CLK 端发生正跳变时,由于 D端接地,Q 端输出0,向单片机发出中断请求。,5.2 MCS-51单片机的中断系统, 51单片机中断源 外部中断示例 CPU响应中断后,利用一根口线,如 P1.0 作应答线,在中断服务程序中可用如下两条指令 ANL P1,#0FEH ORL P1,#01H来撤除中断请求。第一条指令使 P1.0 为0,而 P1口其它各

12、位的状态不变。由于 P1.0 与直接置1端 S相连,故 D触发器 Q = 1,撤除了中断请求信号 。第二条指令将 P1.0 变成1,从而使S = 1,使以后产生的新的外部中断请求信号又能向单片机申请中断。,5.2 MCS-51单片机的中断系统, 51单片机中断源 内部中断 内部中断是单片机芯片内部产生的中断。MCS-51单片机(51子系列)的内部中断有定时器/计数器T0、T1的溢出中断,串行口的发送/接收中断。 当定时器/计数器T0、T1的定时(或计数)溢出时由硬件自动置位TCON的TF0或TF1位,同时向CPU申请中断。CPU响应中断而转向中断服务程序时,由硬件自动将TF0或TF1清零,即C

13、PU响应T0和T1中断后能自动撤除中断请求信号。,5.2 MCS-51单片机的中断系统, 51单片机中断源 内部中断 当串行口发送完或接收完一帧信息,由接口硬件自动置位SCON 的 TI 或 RI ,以此向 CPU 申请中断。CPU 响应中断后,接口硬件不能自动将 TI 或 RI 清零,即 CPU 响应中断后不能自动撤除中断请求信号,需用户采用软件的方法将 TI 或 RI 清零,来撤除中断请求信号。,5.2 MCS-51单片机的中断系统, 中断控制 中断允许控制(IE) MCS-51单片机中没有专设的开中断和关中断指令,对各中断源的中断开放或关闭是由内部的中断允许寄存器IE的各位来控制的。IE

14、各位的定义如下: EA:中断允许总控位。EA=0,屏蔽所有的中断请求;EA=1,开放中断。EA的作用是使中断允许形成两级控制。即各中断源首先受EA位的控制;其次还要受各中断源自己的中断允许总控位控制。,5.2 MCS-51单片机的中断系统, 中断控制 中断允许控制(IE) ET2:定时器/计数器T2的溢出中断允许位,只用于52子系列,51子系列无此位。ET2=0,禁止T2中断;ET2=1,允许T2中断。 ES:串行口中断允许位。ES=0,禁止串行口中断;ES=1允许串行口中断。 ET1:定时器/计数器T1的溢出中断允许位。T1=0,禁止T1中断;ET1=1,允许T1中断。,5.2 MCS-51

15、单片机的中断系统, 中断控制 中断允许控制(IE) EX1:外部中断1的中断允许位。EX1=0,禁止外部中断1中断;EX1=1,允许外部中断1中断。 ET0:定时器/计数器T0的溢出中断允许位。ET0=0,禁止T0中断;ET0=1,允许T0中断。 EX0:外部中断0的中断允许位。EX0=0,禁止外部中断0中断;EX0=1允许外部中断0中断。,5.2 MCS-51单片机的中断系统, 中断控制 中断优先级控制 51单片机的中断源有两个中断优先级,可实现二级中断嵌套。中断系统遵循如下三条规则: (1)正在进行的中断过程不能被新的同级或低优先级的中断请求所中断,一直到该中断服务程序结束,返回了主程序且

16、执行了主程序中的一条指令后,CPU才响应新的中断请求。 (2)正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。 (3)CPU同时接收到几个中断请求时,首先响应优先级最高的中断请求。,5.2 MCS-51单片机的中断系统, 中断控制 中断优先级控制 中断优先级控制规则中前两条是靠中断系统中的两个优先级状态触发器来保证的。这两个触发器分别用来指示CPU是否正在执行高优先级及低优先级的中断服务程序。当某个中断得到响应时,由硬件根据其优先级将相应的一个优先级状态触发器置1。若高优先级的状态触发器为1,则屏蔽所有后来的中断请求;若低优先级的状态触发器为1,则屏蔽后来的同一优先

17、级的中断请求。当中断相应结束后,对应的优先级状态触发器被硬件自动清零。,5.2 MCS-51单片机的中断系统, 中断控制 中断优先级寄存器IP PT2:定时器/计数器T2的中断优先级控制位,只用于52子系列。 PS:串行口的中断优先级控制位。 PT1:定时器/计数器T1的中断优先级控制位。 PX1:外部中断1的中断优先级控制位。 PT0:定时器/计数器T0的中断优先级控制位。 PX0:外部中断0的中断优先级控制位。,5.2 MCS-51单片机的中断系统, 中断控制 中断优先级控制 由于51单片机有多个中断源,但优先级只有两个,所以会有多个中断源处于同一优先级中。在同一级中的中断源默认的优先级由

18、系统按下列顺序确定。,5.2 MCS-51单片机的中断系统, 中断控制系统逻辑结构示意图,5.2 MCS-51单片机的中断系统, 中断响应的条件 单片机响应中断的条件为中断源有请求(中断允许寄存器 IE 相应位置1),且CPU开中断(即 EA=1 )。这样,在每个机器周期的 S5P2 期间,对所有中断源按用户设置的优先级和内部规定的优先级进行顺序检测,并可在 S6 期间找到所有有效的中断请求。,5.2 MCS-51单片机的中断系统, 中断响应的条件 如有中断请求,且满足下列条件,则在下一个机器周期的S1期间响应中断,否则将丢弃中断采样的结果。 无同级或高级中断正在处理。 现行指令执行到最后1个

19、机器周期且已结束。 若现行指令为RETI或访问IE、IP的指令时,执行完该指令且紧随其后的另一条指令也已执行完毕。,5.2 MCS-51单片机的中断系统, 中断响应过程 CPU响应中断后硬件将自动执行如下操作: (1)根据中断请求源的优先级高低,对相应的优先级状态触发器置1。 (2)保护断点,即把程序计数器PC的内容压入堆栈保存。 (3)清内部硬件可清除的中断请求标志位(IE0、IE1、TF0、TF1)。 (4)把被响应的中断服务程序入口地址送入PC,从而转入相应的中断服务程序执行。,5.2 MCS-51单片机的中断系统, 中断入口地址 各中断源对应的中断服务程序入口地址如下表所示: CPU响

20、应中断后,将从上述入口地址开始执行相应的中断服务程序。中断服务程序的最后一条指令必须是中断返回指令 RETI 。,5.2 MCS-51单片机的中断系统, 中断响应过程 中断服务程序的最后一条指令必须是中断返回指令RETI。CPU执行该指令时,先将相应的优先级状态触发器清0,然后从堆栈中弹出断点地址到PC,从而返回至断点处继续原程序的执行过程。 51单片机中断响应后,仅保护断点信息而不保护现场信息,如ACC、工作寄存器 Rn、PSW 等存储器的值,且不能自动清除串行口中断标志 TI 和 RI ,也无法清除由电平触发的外部中断请求信号。所以用户在编制中断服务程序时需要格外注意。,5.2 MCS-5

21、1单片机的中断系统, 中断响应时间 所谓中断响应时间是指从CPU检测到中断请求信号到转入中断服务程序入口所需要的机器周期数。 MCS-51单片机响应中断的最短时间为3个机器周期。若CPU检测到中断请求信号时间正好是一条指令的最后一个机器周期,则不需等待就可以立即响应。 响应中断的过程就是由内部硬件执行一条长调用指令,需要2个机器周期,加上检测需要1个机器周期,一共需要3个机器周期即可执行中断服务程序。,5.2 MCS-51单片机的中断系统, 中断响应时间 中断响应的最长时间由下列情况所决定:若中断检测时正在执行 RETI 或访问 IE 或 IP 指令的第一个机器周期,这样包括检测在内需要 2

22、个机器周期(以上三条指令均需两个机器周期);若紧接着要执行的指令恰好是执行时间最长的乘/除法指令,其执行时间均为4个机器周期;再用2个机器周期执行一条长调用指令才转入中断服务程序。所以共需8个机器周期。 其它情况下的中断响应时间一般为38个机器周期。,5.2 MCS-51单片机的中断系统, 中断函数定义 C51的中断服务程序是一种特殊的程序,其定义如下: void 函数名( void ) interrupt n using m 函数体语句; 这里的 interrupt 和 using 是为编写C51中断服务程序而引入的关键字, interrupt 表示该函数是一个中断服务程序,其后的 n 是指

23、该中断服务程序对应于哪一个中断源; using 用于指定该中断服务程序要使用的工作寄存器组编号, m 的取值范围为 0 3。 若不使用关键字 using ,则编译系统会自动给该服务函数分配寄存器组,并将当前工作寄存器组的8个寄存器压入堆栈。 用户程序中不允许任何程序调用中断服务程序。,5.3 中断系统的C51编程, 中断函数定义 C51的中断源及其中断编号如下:,5.3 中断系统的C51编程, 中断函数定义 编写中断函数时,应注意以下几点: (1)中断函数不带任何参数,否则会导致编译出错。 (2)中断函数不能有返回值,所以函数类型应为void。 (3)中断函数必须由中断源触发而自动调用,不得直

24、接调用,因此也不用提前声明。 (4)中断函数要精简,避免因执行时间过长影响其它中断的响应。,5.3 中断系统的C51编程, 中断举例 例1:用按钮控制指示灯的“亮灭”状态。在单片机 INT0 引脚接一个按钮,P1.0 引脚上接一个发光二极管。每按一次按钮,则发光二极管的亮灭状态转换一次。 每次按下按钮时,会在单片机的INT0引脚上产生一个负脉冲,如果将单片机外部中断0的触发方式设为边沿跳变触发,则单片机检测到这个负脉冲之后就会调用外部中断0服务程序。,5.3 中断系统的C51编程, 中断举例 例1:用按钮控制指示灯的“亮灭”状态。 #include /寄存器声明头文件 sbit p1_0 =

25、P10; /发光二极管控制引脚位定义 void INT0_srv(void) interrupt 0 using 1 /外部中断0处理程序 p1_0 =! p1_0; /二极管状态翻转 void main( ) p1_0 = 0; IT0 = 1; /外部中断0为边沿触发方式 EA = 1; /中断允许 EX0 = 1; /外部中断0允许 while( 1 ); ,5.3 中断系统的C51编程, 中断举例 例1:用按钮控制指示灯的“亮灭”状态。 仿真运行结果显示,每当用户按下按钮时,二极管出现一次亮灭状态的切换。 如果将上述程序中的“ IT0 = 1 ”语句修改为“ IT0 = 0”,则当按下

26、按钮时,二极管会出现连续亮灭的状态切换现象。请读者独立思考其原因。,5.3 中断系统的C51编程, 中断举例 例2:如下图所示,P0口连接了8个发光二极管,INT1 引脚上接了一个按键 S1,要求每次按键动作时均能改变8个发光二级管的亮灭状态。,5.3 中断系统的C51编程, 中断举例 例2:C51程序如下。 #include #define LED P0 sbit KEY = P33; bit flag = 0; void delay( unsigned char n ) /延时子函数; unsigned char a; for( a=0 ; an ; a+ ); main( void )

27、/主程序 IT1 = 1; /设置边沿触发方式 EA = 1; EX1 = 1; LED = 0 xff; /发光二极管初值(全灭),5.3 中断系统的C51编程, 中断举例 例2:C51程序如下。 while( 1 ) /主程序内部循环体 if( flag = 1 ) /有外部中断的按键 delay(100); /延迟一段时间,判断是否为抖动 if( KEY = 0 ) /还有按键,说明不是抖动 while( !KEY ); /等待按键松开 LED = LED; /改变发光二级管的亮灭(全亮) flag = 0; /上次外部中断已经处理完毕,清除该变量 EX1 = 1; /再次开放外部中断

28、,5.3 中断系统的C51编程, 中断举例 例2:C51程序如下。 void int1(void) interrupt 2/外部中断1服务程序 flag = 1; /有按键按下则设置中断标志变量flag为1 EX1 = 0; /屏蔽外部中断1,暂时不允许再次产生外部中断1 ,5.3 中断系统的C51编程, 利用查询法扩展外部中断源 在外部中断源比较多时,可以在51单片机的一个外部中断请求端INT0( 或INT1),利用“线与”的方式连接多个外部中断,无论哪个中断源发出中断请求(低电平有效),都会触发 INT0(或 INT1)中断,这些中断源同时分别接到单片机输入端口的各个引脚,然后在 INT0

29、 (或 INT1 )的中断服务程序中采用查询法顺序检索引起中断的中断源。当对应的中断源被服务后(中断服务程序被执行),该中断源应撤销其中断请求(将电平恢复为高电平)。 注意:软件的查询顺序决定了扩展的多个中断的优先级顺序。,5.4 外部中断的扩充, 利用查询法扩展外部中断源例:使用按钮来模拟外部中断源。共扩展了4个外部中断,当某个外部中断源有中断请求时,在中断服务程序中,会将与其对应的发光二极管点亮。,5.4 外部中断的扩充, 利用查询法扩展外部中断源例:使用按钮来模拟外部中断源。C51 程序如下: #include / 头文件 sbit int0 = P20; /扩展中断1位定义 sbit

30、int1 = P21; /扩展中断2位定义 sbit int2 = P22; /扩展中断3位定义 sbit int3 = P23; /扩展中断4位定义 sbit led0 = P10; /发光二极管1位定义 sbit led1 = P11; /发光二极管2位定义 sbit led2 = P12; /发光二极管3位定义 sbit led3 = P13; /发光二极管4位定义,5.4 外部中断的扩充, 利用查询法扩展外部中断源例:使用按钮来模拟外部中断源。C51 程序如下: void INT0_srv( void ) interrupt 0 using 1 / 中断服务程序 P1 = 0 xff;

31、 /熄灭所有发光二极管; if( int0 = 0 ) led0 = 0; /扩展中断1处理 if( int1 = 0 ) led1 = 0; /扩展中断2处理 if( int2 = 0 ) led2 = 0; /扩展中断3处理 if( int3 = 0 ) led3 = 0; /扩展中断4处理 void main( ) / 主程序 IT0 = 1; / 外部中断0为边沿触发 EA = 1; /开总中断 EX0 = 1; /外部中断0允许while(1); ,5.4 外部中断的扩充, 利用定时器扩展外部中断源 方法:首先把定时器/计数器设置成计数方式,并预置满值(再来一个脉冲则计数器溢出),然

32、后把外部中断源输入到 P3.4 口或 P3.5 口(计数器外部脉冲输入端 T0 或T1 ),这样就可以利用定时器/计数器(内部中断源)作为单片机的外部中断了。 注意: 这种方法的中断服务的入口地址为 000BH 或001BH。为了使每出现一个从高到低的脉冲都产生一个中断,可以把定时器/计数器设置为 8 位自动重装方式(方式2),且其初值和重装值均设为 0FFH 。,5.4 外部中断的扩充, 利用定时器扩展外部中断源 C51程序如下: #include void timer0_int( void ) interrupt 1 / T/C0中断处理程序 . void timer1_int( void

33、 ) interrupt 3 / T/C1中断处理程序 . ,5.4 外部中断的扩充, 利用定时器扩展外部中断源 C51程序如下: void main( ) / 主程序 . TMOD = 0 x66; /两个定时/计数器都设置为8位自动重装模式 TL0 = 0 xFF; /设定重载初值 TH0 = 0 xFF; TL1 = 0 xFF; TH1 = 0 xFF; TCON = 0 x50; /开始计数 IE = 0 x9F; /中断使能 . ,5.4 外部中断的扩充, 单片机的 P0 口接了 8 个发光二极管,要求使用定时器 T0 中断实现流水灯控制,流水灯频率为每0.5秒钟更替一次(假设单片

34、机外接11.0592MHz的晶振)。,5.5 定时器中断编程实例, 单片机的 P0 口接了 8 个发光二极管,要求使用定时器 T0 中断实现流水灯控制,流水灯频率为每0.5秒钟更替一次(假设单片机外接11.0592MHz的晶振)。分析:使用定时器T0中断初始化包括以下几个方面:(1)确定计数初值以及定时器工作方式,即配置TMOD;(2)开放定时器中断,即设定EA=1,ET0=1;(3)启动定时器T0工作,即TR0=1;(4)由于定时器/计数器方式0或方式1下不具有自动重装初值功能,所以每次中断后必须重新装载计数初值;(5)计数值计算:0.5 10 = 0.05s = 50ms = 50000s

35、 50000(111.059212)= 40680 考虑语句执行时间:40680 + 3 = 40683,5.5 定时器中断编程实例, C51程序如下: #include unsigned char cnt = 0; /用于中断次数计数 unsigned char led = 0 xfe; /初始化流水灯 int main( void ) TMOD = 0 x01; /16位定时方式 TH0 = ( 65536-46083 )/256; /初始化T0的高8位 TL0 = ( 65536-46083 )%256; /初始化T0的低8位 EA = 1; /开中断 ET0 = 1; TR0 = 1;

36、 /启动 T0 工作 while( 1 ); ,5.5 定时器中断编程实例, C51程序如下: void T0_int( void ) interrupt 1 cnt+; if( cnt = 10 )/0.5秒钟的时间到了 cnt = 0; /清除次数统计 led = ( led 1 ) | 1; /更新流水灯数据(末位补1) if( led = 0 xff ) /第8盏灯亮之后更改为第1盏灯亮 led = 0 xfe; P0 = led; / 显示流水灯 TH0 = ( 65536-46083 )/256; /初始化T0的高8位 TL0 = ( 65536-46083 )%256; /初始化T0的低8位 ,5.5 定时器中断编程实例,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号