您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 7西安交大-单片机课件chapt5
第5章MCS-51单片机的中断系统及定时器本章主要介绍51系列单片机中断系统和定时器问题,本章将介绍以下具体内容:定时/计数器----定时/计数器的定时和计数功能、定时器/计数器的控制寄存器、定时器/计数器的工作方式、定时/计数器用作外部中断扩展、定时中断联合举例。中断系统----中断源、中断方式、中断控制寄存器、中断响应、中断请求的撤除。CPU与外设之间传送数据的方式可以有以下几种:1.无条件传送方式2.查询方式3.中断传送方式4.DMA方式§§§§5.15.15.15.1输入输入输入输入////输出的控制方式输出的控制方式输出的控制方式输出的控制方式预备内容§§§§5.25.25.25.2MCS-51单片机的中断系统5.2.1.MCS-51单片机的中断系统结构一、中断的概念执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回RITITF1IE1TF0IE0中断请求标志ESET1EX1ET0EX0≥1PSPT1PX1PT0PX0高级低级二、二、二、二、MCS-51MCS-51MCS-51MCS-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.定时控制寄存器TCONIT0IE0IT1IE1TF0TF1D0D1D2D3D4D5D6D7中断请求标志触发方式选择0低电平1下降沿2.串行口控制寄存器SCONRITID0D1D2D3D4D5D6D7串行中断请求标志3.中断允许控制寄存器IEEX0ET0EX1ET1ESEAD0D1D2D3D4D5D6D74.中断优先级控制寄存器(IP)PX0PT0PX1PT1PSD0D1D2D3D4D5D6D70禁止,1允许0低级别,1高级别四、中断响应响应条件----CPU要响应中断需满足下列条件:①无同级或高级中断正在服务;②当前指令周期结束,如果查询中断请求的机器周期不是当前指令的最后一个周期,则不行;③若现行指令是RETI、RET或访问IE、IP指令,则需要执行到当前指令及下一条指令方可响应。响应过程--单片机响应中断后,自动执行下列操作:①置位中断优先级有效触发器,即关闭同级和低级中断:②调用入口地址,断点入栈,相当于LCALL指令;③进入中断服务程序。响应时间响应时间响应时间响应时间--------从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。(1)最快响应时间以外部中断的电平触发为最快。从查询中断请求信号到中断服务程序需要三个机器周期:1个周期(查询)+2个周期(长调用LCALL)(2)最长时间若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期:2个周期执行当前指令(其中含有1个周期查询)+4个周期乘除指令+2个周期长调用=8个周期。中断返回中断返回中断返回中断返回————中断处理程序的最后一条指令是RETI,它使CPU结束中断处理程序的执行,返回到断点处,继续执行主程序。5.2.3.中断程序举例p83图5-4图5-4为单片机数据传输示意图。外设数据经P1口输入单片机,每准备好一个数据,外设发出选通信号,经触发器和非门至INT0。P1口P3.0QDCLKCLR选通信号+5V1INT0数据8031数据传送过程:外设每准备好一个数据后,发出选通信号,使触发器输出1再经非门得0至INT0,向CPU发出中断请求,CPU响应这个中断请求后,在中断处理程序中先撤除中断请求信号,(通过P3.0=0,使INT0=1)再由P1口输入数据到单片机内部。P1口P3.0QDCLKCLR选通信号+5V1INT0数据8031程序清单:ORG0000HSTART:LJMPMAINORG0003HLJMPIINT0ORG0030H;主程序MAIN:CLRIT0;低电平触发SETBEASETBEX0;开中断MOVDPTR,#1000H...ORG0100HIINT0:PUSHPSW;中断处理程序PUSHACCCLRP3.0NOPNOPSETBP3.0;撤除INT0MOVA,P1;输入数据MOVX@DPTR,A;保存数据INCDPTR...POPACC;恢复现场POPPSWRETI;返回主程序定时/实现方式:1.软件定时;2.不可编程硬件定时;3.可编程定时。§§§§5.25.25.25.2MCS-51单片机的定时/计数器一、定时/计数器的定时和计数功能在TMOD中,各有一个控制位(C/T),分别用于控制定时/计数器T0和T1是工作在定时器方式还是计数器方式。1.1.1.1.定时功能定时功能定时功能定时功能----------------计数输入信号是内部时钟脉冲,每个机器周期使寄存器的值加1。所以,计数频率是振荡频率的1/12。2.2.2.2.计数功能计数功能计数功能计数功能----------------计数脉冲来自相应的外部输入引脚,T0为P3.4,T1为P3.5。定时/计数器的核心部件是二进制加1计数器(TH0、TL0或TH1、TL1)。二、定时器/计数器的控制寄存器与定时器/计数器有关的控制寄存器有:1111....定时器控制寄存器TCONIT0IE0IT1IE1TR0TF0TR1TF1D0D1D2D3D4D5D6D7中断请求标志触发方式选择启动定时/计数器0低电平1下降沿0停止1启动2.工作方式控制寄存器TMODT1控制T0控制M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7GATE—门控位C/T—计数/定时选择M1M0—工作方式选择计数脉冲输入三、定时器/计数器的工作方式定时器/计数器共有四种工作方式1.方式0—13位方式TF0T0TR0GATEINT01≥1&C/T=1振荡器1/12C/T=0TL0TH08位低5位13位计数器定时器计数器2.方式1—16位方式振荡器1/12TL0TH0TF01≥1&T0TR0GATEINT0C/T=0C/T=18位8位16位计数器3.方式2—8位自动装入时间常数方式TF0振荡器1/121≥1&T0TR0GATEINT0C/T=0C/T=1TL0TH04.方式3—2个8位方式仅T0可以工作在方式3—此时T0分成2个独立的计数器—TL0和TH0,前者用原来T0的控制信号(TR0、TF0),后者用原来T1的控制信号(TR1、TF1)。四、应用举例②计算计数器的计数初值:编程时将计数初值送THi、TLi;可编程器件在使用前需要进行初始化:①确定TMOD控制字:编程时将控制字送TMOD;例题1:设晶振频率fOSC=6MHz,使用定时器1以方式1产生周期为500μs的方波脉冲,并由P1.0输出。试以中断方式实现。③开中断(如果使用中断方式):编程实置位EA、ETi④TRi位置位控制定时器的启动和停止。P1.0P1.0P1.0P1.0①TMOD确定T1控制T0控制XXXX1000M0M1C/TGATEM0M1C/TGATE控制字10H要产生500μs的方波脉冲,只需在P1.0端以250μs为间隔,交替输出高低电平即可实现。为此,定时间应为250μs。使用6MHz晶振,则一个机器周期为2μs,设待求计数初值为X,则:②计算计数器的计数初值;(216–X)×2×10-6=250×10-6即216–X=125X=216-125=10000H-7DH=0FF83H所以,初值为:TH1=0FFH,TL1=83H③采用中断方式:编程时打开全局和局部中断。④由定时器控制寄存器TCON中的TR1位控制定时器的启动和停止。TR1=1,启动;TR1=0,停止。程序设计ORG0000HLJMPMAIN;主程序入口ORG001BHLJMPINTT1;T1中断入口INTT1:MOVTH1,#0FFH;重新设置初值MOVTL1,#83HCPLP1.0;输出取反RETIORG1000HMAIN:MOVTMOD,#10H;T1为方式1MOVTH1,#0FFHMOVTL1,#83H;初值SETBEA;允许中断SETBET1SETBTR1;启动定时SJMP$;等待中断主程序:中断处理程序:例题2:设晶振频率fOSC=6MHz,分别讨论各种工作方式下最长定时时间。解:1.由fOSC=6MHz可知,MC=2us;2.由于是加1计数,所以最长定时应是计数初值最小时(即为0时)的定时时间。所以此时有:方式0:(213–0)×2us=214us=16384us=16.384ms方式1:(216–0)×2us=217us=131.072ms方式2、3(28–0)×2us=29us=0.512ms注意:以上是当fOSC=6MHz,即MC=2us时各种方式下的定时时间,若fOSC=12MHz,则最长定时时间将缩短一半。五、定时/计数器用作外部中断扩展、定时/计数器用作外部中断扩展、定时/计数器用作外部中断扩展、定时/计数器用作外部中断扩展在计数方式下,如果把计数器预置为全1,则只要在计数输入端(T0或T1输入端)加一脉冲就可以使计数器溢出,产生溢出中断。这就是定时/计数器实现外部中断扩展的思想。具体方法是:①置定时/计数器为工作方式2,即自动加载式8位计数,以便在一次中断响应后,自动为下一次中断作准备;②TH和TL均置为FFH;③扩展的外部中断请求信号接计数脉冲输入端(T0或T1);④把扩展的外中断服务程序存放在所占用的定时/计数器中断入口地址处(000BH或001BH)。例:以T0实现一个外部中断扩展。则初始化程序为:MOVTMOD,#06H;00000110MOVTH0,#0FFHMOVTL0,#0FFHSETBEA;开全局中断SETBET0;开T0中断SETBTR0;准备计数将中断子程序放在T0中断入口处(000BH)。T0计数器方式T0方式2课堂练习P95题6、11、13题6—略题11思路:1.1000Hz方波,即周期是1ms,定时时间为500us,P1.1交替输出0、1电平,即可得到该方波。2.由定时时间知,用哪种方式都可实现500us定时。可用方式2(自动装入时间常数),比较简单。第五章上机实验(1)1.分别用2种定时方式使P1口输出信号,轮流点亮8个LED,每个LED点亮时间为50ms。方式1:利用调用延时子程序方式;方式2:利用定时器定时50ms,设晶振频率为12MHz;参考习题13。2.每个LED点亮时间为2s。参考P95~96接口实训(一)一.定时器/计数器应用实训。T1控制T0控制0100XXXXM0M1C/TGATEM0M1C/TGATE控制字02H3.题目中没有指明用T0还是T1,可任意,我们用T0。①确定TMOD控制字②计算计数器的计数初值;(28–X)×2×10-6=500×10-6即28–X=250X=28-250=100H-FAH=06H所以,初值为:TH0=06H,TL0=06H③采用中断方式:编程时打开全局中断:置位EA局部中断:置位ET0。④置位TR0位控制定时器的启动。程序设计ORG0000HLJMPMAIN;主程序入口ORG000BHLJMPINTT0;T0中断入口INTT
本文标题:7西安交大-单片机课件chapt5
链接地址:https://www.777doc.com/doc-4199605 .html