您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第5章单片机的中断系统
第5章MCS-51单片机的中断系统及定时器本章主要介绍51系列单片机中断系统和定时器问题,本章将介绍以下具体内容:定时/计数器----定时/计数器的定时和计数功能、定时器/计数器的控制寄存器、定时器/计数器的工作方式、定时/计数器用作外部中断扩展、定时中断联合举例。中断系统----中断源、中断方式、中断控制寄存器、中断响应、中断请求的撤除。CPU与外设之间传送数据的方式可以有以下几种:1.无条件传送方式2.查询方式3.中断传送方式4.DMA方式§5.1输入/输出的控制方式预备内容§5.2MCS-51单片机的中断系统5.2.1.MCS-51单片机的中断系统结构一、中断的概念执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回IE0TF0IE1TF1TIRI中断请求标志EX0ET0EX1ET1ES≥1PX0PT0PX1PT1PS高级低级二、MCS-51单片机的中断系统(图5-2)内部查询内部查询入口地址入口地址INT0INT1T0T1TIRI中断允许控制中断优先级EA中断源一、中断源共有五个中断源,分别是外部中断两个、定时中断两个和串行中断一个,它们是:外部中断0--INT0,由P3.2提供,外部中断1—INT1,由P3.3提供,外部中断有两种信号方式,即电平方式和脉冲方式。T0溢出中断;由片内定时/计数器0提供T1溢出中断;由片内定时/计数器1提供串行口中断RI/TI;由片内串行口提供5.2.2.MCS-51中断源二、中断方式单片机的中断为固定入口式中断,即一响应中断就转入固定入口地址执行中断服务程序。具体入口如下:中断源入口地址INT00003HT0000BHINT10013HT1001BHRI/TI0023H在这些单元中往往是一些跳转指令,跳到真正的中断服务程序,这是因为给每个中断源安排的空间只有8个单元。三、中断控制的寄存器与中断控制有关的控制寄存器有四个:TCON----定时控制寄存器,IE----中断允许控制寄存器,IP----中断优先级控制寄存器,SCON----及串行口控制寄存器。1.定时控制寄存器TCOND7D6D5D4D3D2D1D0TF1TF0IE1IT1IE0IT0中断请求标志触发方式选择0低电平1下降沿2.串行口控制寄存器SCOND7D6D5D4D3D2D1D0TIRI串行中断请求标志3.中断允许控制寄存器IED7D6D5D4D3D2D1D0EAESET1EX1ET0EX04.中断优先级控制寄存器(IP)D7D6D5D4D3D2D1D0PSPT1PX1PT0PX00禁止,1允许0低级别,1高级别INT0、INT1、T0、T1中断请求标志放在TCON中串行中断请求标志放在SCON中。中断请求控制寄存器TCOND7D6D5D4D3D2D1D0位名称TF1—TF0—IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H功能T1中断标志—T0中断标志—中断标志触发方式中断标志触发方式TCON的结构、位名称、位地址和功能如下:5.2.3外中断触发方式IT0:外中断0触发方式设置位IT0=0,外中断1为低电平触发CPU在每一个机器周期的S5P2期间对P3.2引脚采样,若P3.2为低电平,则使IE0置1,否则IE0清0。D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TCON格式如下:5.2.3外中断触发方式IT0=1,外中断0为下降沿触发CPU在每一个机器周期的S5P2期间对P3.2引脚采样,若上一个机器周期检测为高电平,紧挨着的下一个机器周期为低电平,则使IE0置1。IT1:外中断1触发方式控制位。功能同IT0D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TCON格式如下:串行控制寄存器SCONTCOND7D6D5D4D3D2D1D0位名称——————TIRI位地址——————99H98H功能——————串行发送中断标志串行接收中断标志①TI——串行口发送中断请求标志②RI——串行口接收中断请求标志串行口中断请求标志RI:为接收中断请求标志位。当串行口接收到一帧数据后,RI被置1,请求中断,CPU响应中断后,不会被硬件清0,需要软件清0。TI:为发送中断请求标志位。当串行口发送完一帧数据后,TI被置1,请求中断,CPU响应中断后,不会被硬件清0,需要软件清0。5.2.4中断请求标志SCON(98H)D7D6D5D4D3D2D1D0TIRI80C51对中断源的开放或关闭由中断允许控制寄存器IE控制。中断允许控制寄存器IEIE的结构、位名称和位地址如下:IED7D6D5D4D3D2D1D0位名称EA——ESET1EX1ET0EX0位地址AFH——ACHABHAAHA9HA8H中断源CPU——串行口T1T0PS:串行口中断优先级控制位。PT1:定时计数器T1中断优先级控制位。PX1:外部中断1中断优先级控制位。PT0:定时计数器T0中断优先级控制位。PX0:外部中断0中断优先级控制位。注意:单片机复位后,IP寄存器被清0,所有中断源为低级中断。中断优先级控制寄存器(IP)D7D6D5D4D3D2D1D0PSPT1PX1PT0PX0中断优先级控制中断源同级内优先权排列外部中断0中断定时器/计数器0中断外部中断1中断定时器/计数器1中断串行接口中断最高最低自然优先权顺序:例5-1假设允许INT0、INT1、T0、T1中断,试设置IE的值。按字节操作:IE=0x8f;按位操作:EX0=1;//允许外部中断0中断ET0=1;//允许定时器/计数器0中断EX1=1;//允许外部中断1中断ET1=1;//开定时器/计数器1中断EA=1;//开总中断控制位5.2.5中断允许控制例5-2编写程序段,设置单片机的两个外部中断和串行口中断为高优先级,二个定时器的中断为低优先级。C语言程序按字节操作:IP=0x15;按位操作:PX0=1;//设置外中断0为高级中断PX1=1;//设置外中断1为高级中断PS=1;//设置串行口中断为高优先级5.2.6中断优先级控制C语言的中断程序结构如下:(1)main()函数。与汇编的主程序类似,要完成中断系统的初始化。要有一个循环,等待中断发生。(2)中断处理函数。中断处理函数在定义时,要有interruptn说明中断号。C51中断程序设计C51编译器支持在C源程序中直接嵌入中断服务程序,C51提供的中断函数定义语法如下:返回值类型函数名interruptn[usingm]n:中断编号,取值范围为0~4m:工作寄存器组号(如不声明,默认为0)中断通道和中断源中断系统的初始化步骤:①根据需要确定各中断源的优先级别,设置中断优先级寄存器IP中相应的位。②根据需要确定外部中断的触发方式,设置定时器控制寄存器TCON中相应的IT0位和IT1位。③设置总中断控制位EA,设置中断源对应的中断允许控制位。5.4.1中断应用程序结构外部中断程序模板main(){IT0=1;//中断边沿触发EX0=1;//允许外部中断0EA=1;//总允许while(1);//等待中断}int0()interrupt0{P2_0=!P2_0;//中断内容}前面不需要函数说明不能有返回值不能有形参主程序中没有调用中断函数的语句中断函数与一般函数的区别中断函数一般函数前面不需要函数说明前面需要函数说明不能有返回值可以有返回值不能有形参可以有形参主程序中不需要调用语句主程序中需要调用语句函数执行时间是随机的函数执行时间是确定的函数的入口地址是固定的函数的入口地址是随机的外部中断应用举例例5-3如图5-10所示,将P0口的P0.0~P0.3作为输入位输入4个开关的状态,P2.0~P2.3作为输出显示开关状态。要求利用89C52外部中断0将开关所设的数据读入单片机内,并依次通过P2.0~P2.3输出,驱动发光二极管,以检查P0.0~P0.3输入的电平情况(若输入为低电平则相应的LED亮)。要求采用中断边沿触发方式,每中断一次,完成一次读/写操作。外部中断应用举例#includereg52.hvoidmain(){IT0=1;//选择边沿触发方式EX0=1;//允许外部中断0EA=1;//总中断允许while(1);//等待中断}voidint0_serv(void)interrupt0{//外部中断服务函数P0=0x0f;//设P0.0~P0.3为输入P2=P0;//P0的值输出到P2使LED发光}例5-4用单片机中断方式设计一4路故障声光报警系统。C语言程序清单:#includereg52.hsbitsound=P3^7;voidmain(){IT1=0;//选择低电平触发方式EX1=1;//允许外部中断1EA=1;P2=0x0f;while(1);//等待中断}voidint1_serv()interrupt2{//外部中断1中断服务函数unsignedchari;sound=~sound;//输出方波到蜂鸣器发声for(i=0;i100;i++);//发声延时,控制声音频率}5.3.2硬件设计(例5)图5.3.1外部中断原理电路图5.5.2硬件设计(例6)图5.5.1外部中断原理电路图本章完
本文标题:第5章单片机的中断系统
链接地址:https://www.777doc.com/doc-3811818 .html