单片机课件 第五章_第1页
单片机课件 第五章_第2页
单片机课件 第五章_第3页
单片机课件 第五章_第4页
单片机课件 第五章_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才5.1 输入输出信息的传送方式 单片机常用的输入/输出设备有:键盘、A/D转换器、显示器、指示灯、微型打印机、D/A转换器等。 计算机与输入输出设备之间交换信息,有三种信息形式:数据信息、控制信息和状态信息。 计算机的CPU与外设,并不直接相连,而是通过接口电路进行连接。单片机系统的运行同其他微机系统一样,CPU不断地与外部输入/输出设备交换信息。CPU与外部设备交换信息通常有以下几种方式: 无条件传送方式,又称直接存储器存取(DMA)方式。 查询传送方式。 中断传送方式。 5.1.1 无条件传送方

2、式 这种数据传送方式有些类似于CPU和存储器之间的数据传送,即CPU总是认为外设在任何时刻都是处于“准备好”的状态。因此,这种传送方式不需要交换状态信息,只需在程序中加入访问外设的指令,数据传送便可以实现。 第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 5.1.2查询传送方式 查询传送也称为条件传送,可用于无条件传送不便于使用的场合,以解决外部设备与CPU之间的速度匹配问题。状态信息一般只需要一位二进制码,所以,在接口中只用要一个D触发器就可以用来保存和产生状态信息。例如,“准备好”用D触发器Q=1表示;“没准备好”用Q=0表示。图5-1(a

3、)为查询方式程序的一般流程图。 查询方式的过程为:查询等待数据传送,待到下一次数据传送时则重复上述过程。等待也可以不采用循环等待,而用软件插入固定延时的方法来完成,如图5-1(b)所示。 第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才5 MCS-51单片机中断系统与定时/计数器 查询方式的优点是通用性好,可以用于各类外部设备和CPU间的数据传送。缺点是需要有一个等待过程。输入状态信息准备好?传送数据传送数据延时启动外部数据NY(a) (b) 图5-1 查询方式流程图 5.1.3中断传送方式 CPU不主动查询外设,只执行自己的程序,当外设准备好需

4、要传送数据时,提出申请,若CPU准于请求,放下正在执行的程序,去传送外设的数据。这样的过程就叫“中断”。 第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 查询查询中断中断第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才5. 2 中断概述5.2.1中断概念 看电视中断处理中断请求实际生活中断返回电话铃响接听电话看电视主程序计算机事件发生事件处理主程序中断概念示意图 CPU进行工作A时发生了事件B,请求CPU马上处理 CPU暂时中断当前工作A,转去处理事件B 事件B处理完后,回到工作A被中断的地方继续

5、处理A工作第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才中断过程示意图第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 5.2.2 中断的功能 中断的功能主要表现在以下几方面:(1)实现CPU与外设速度的配合(2)实现实时控制(3)实现故障的及时发现(4)实现人机联系第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才5.2.3中断系统的功能 MCS-51的中断系统具有以下中断功能:能实现中断及返回。 能实现中断优先级排队。 能实现中断嵌套。返回中断中

6、断返 回低级中断主程序高级中断第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 5.3 MCS-51单片机中断源、中断源和中断响应 5.3.1 中断源 中断源是指能发出中断请求,引起中断的装置或事件。一个单片机系统通常有多个中断源,而单片机CPU在某一时刻只能响应一个中断源的中断请求,当多个中断源同时向CPU发出中断请求时,则必须按照“优先级别”进行排队,CPU首先选定其中中断级别最高的中断源为其服务,然后按由高到低的排队顺序逐一服务,完毕后返回断点地址,继续执行主程序。这就是“中断优先级”的概念。 第五章 MCS-51单片机中断系统与定时/计数

7、器基于KEIL和PROTEUS的单片机技术 侯俊才IE0EX0TF0IE1TF1TIESET1EX1ET0RIIP硬件查询高级中断请求低级中断请求中断源INT0INT1中断入口地址中断源10IEPX0PSPT1PX1PT0111111111100000EA11SCON11T0T1RXTXIT0IT100TCONAT89C51中断系统结构第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 a 外中断类 即外部中断0和外部中断1。 中断请求信号分别由引脚(P3.2)和P3.3)引入。 外部中断请求有两种信号方式:电平方式:当引脚上出现低电平时就向CPU

8、申请中断,CPU响应中断后要采取措施撤消中断请求信号,使引脚恢复高电平。脉冲方式:当引脚上出现负跳变时,该负跳变经边沿检测器使IE0或IE1置1,向CPU申请中断。CPU响应中断后由硬件自动清除IE0和IE1。CPU在每个机器周期采样INT0和INT1,为了保证检测到负跳变,引脚上的高电平与低电平至少应各自保持一个机器周期。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 b. 定时中断 定时器/计数器计数溢出时,由硬件分别置TF0=1和TF1=1,向CPU申请中断。CPU响应中断后,由硬件自动清除TF0和TF1。第五章 MCS-51单片机中断系

9、统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 c.串行接口中断 串行接口的中断请求由发送或接收所引起。串行口发送了一帧信息,便由硬件置TI1,向CPU申请中断。串行口接收了一帧信息,便由硬件置RI1,向CPU申请中断。CPU响应中断后必须由软件清除TI和RI。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才5.3.2 中断控制 与中断控制有关的寄存器共四个,定时器控制寄存器 TCON串行口控制寄存器 SCON中断允许控制寄存器 IE中断优先控制寄存器 IP第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTE

10、US的单片机技术 侯俊才 a.定时器控制寄存器(TCON) 该寄存器地址为88H,其位地址为8FH88H。寄存器的内容及位地址表示如下:位地址8F8E8D8C8B8A8988位符号TF1TR1TF0TR0IE1IT1IE0IT0IE0 (IE1)外中断请求标志位当CPU采样到 (或) 端出现有效中断请求时,此位由硬件置1。在中断响应完成后转向中断服务时,再由硬件自动清零。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才位地址8F8E8D8C8B8A8988位符号TF1TR1TF0TR0IE1IT1IE0IT0 IT0(IT1)外中断请求信号方式控

11、制位 IT0(IT1)=1 脉冲方式(后沿负跳有效) IT0(IT1)=0 电平方式(低电平有效) 此位由软件置1或清0。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才b串行口控制寄存器(SCON) 该寄存器地址为98H,其位地址为9FH98H。位地址9F9E9D9C9B9A9998位符号SM0SM1SM2RENTB8RB8TIRITI串行口发送中断请求标志位 当发送完一帧串行数据后,由硬件置1,在转向中断服务程序后,必须用软件清0。RI串行口接收中断请求标志位 当接收完一帧串行数据后,由硬件置1;在转向中断服务程序后,必须用软件清0。第五章

12、MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才c. 中断允许控制寄存器(IE) 该寄存器地址为A8H,其位地址为AFHA8H。位地址AFAEADACABAAA9A8位符号EA1/0/0ES0ET11EX10ET00EX01EA中断允许总控制位EA=0 中断总禁止,禁止所有中断。EA=1 中断总允许。当中断总允许后,某个中断的禁止或允许由各中断源的中断允许控制位进行设置。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才EX0(EX1)外部中断允许控制位 EX0(EX1)0 禁止外中断 EX0(EX1)1 允

13、许外中断ET0(ET1)定时计数中断允许控制位 ET0(ET1)0 禁止定时(或计数)中断 ET0(ET1)1 允许定时(或计数)中断ES串行中断允许控制位 ES=0 禁止串行中断 ES=1 允许串行中断单片机复位后(IE)00H,中断系统处于禁止状态。中断允许与禁止,就是中断的开放与关闭。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才d中断优先级控制寄存器(IP) IP寄存器地址B8H,位地址为BFHB8H。位地址BFBEBDBCBBBAB9B8位符号/0/0/0PS0PT10PX10PT00PX01PX0外部中断0优先级设定位PT0定时中断

14、0优先级设定位PX1外部中断l优先级设定位PT1定时中断1优先级设定位PS 串行中断优先级设定位 为0时优先级为低;为1 优先级为高。 第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 中断优先级是为中断嵌套服务的,MCS51中断优先级的控制原则是:低优先级中断请求不能打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服务,从而实现中断嵌套。如果一个中断请求已被响应,则同级的其它中断响应将被禁止。如果同级的多个中断请求同时出现,则按CPU设定的自然优先级确定那个中断请求被响应。第五章 MCS-51单片机中断系统与定时/计数器基于KE

15、IL和PROTEUS的单片机技术 侯俊才 MCS51同一优先级中断源的优先级排列顺序: 外部中断0定时中断0外部中断1定时中断1串行中断 第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才5.3.3 中断响应过程a.中断响应条件 CPU响应中断的条件有:有中断源发出中断请求。中断总允许位EA1,即CPU开中断。申请中断的中断源的中断允许位为1,即中断没有被屏蔽。无同级或更高级中断正在被服务。当前的指令周期已经结束。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才第五章 MCS-51单片机中断系统与定时

16、/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 若现行指令为RETI或者是访问IE或IP指令时,该指令以及紧接着的另一条指令已经执行完毕。但是如果遇上下列条件之一,硬件将受阻:(1)正在执行同级或高级中断服务程序。 (2)当前的查询周期不是执行指令的最后一个机器周期。 (3)正在执行RETI或任何仿问IE或IP的指令。 CPU响应中断时先置“1”相应的优先级触发器,然后执行硬件LCALL(压栈与转移),同时清“0”中断请求标志(TI、RI除外)。 b.中断响应过程(1)先使相应优先级状态触发器置1;(2)执行一个子程序的调用: 1)硬件清零相应中断请求标志(TI、RI除外) 2)将当

17、前PC内容压入堆栈保护断点; 3)将中断服务子程序入口地址送PC转移。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才c. 中断响应时间 响应时间-从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。(1)最快响应时间 以外部中断的电平触发为最快。 1个周期(查询)2个周期(长调用LCALL)(2)最长时间 若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期: 2个周期执行当前指令(其中含有1个周期查询)4个周期乘除指令2个周期长调用8个周期。第五章 MCS-51单片机中断系统与定时/计数器基于KE

18、IL和PROTEUS的单片机技术 侯俊才d.中断处理 中断处理(又称中断服务)程序从入口地址开始执行,直到返回指令“RETI”为止,这个过程称为中断处理。此过程一般包括两部分内容,一是保护现场,二是处理中断源的请求。 e.中断返回 中断处理程序的最后一条指令是RETI,它使CPU结束中断处理程序的执行,返回到断点处,继续执行主程序。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 5.3.4 中断技术应用举例 主程序和中断服务程序。 a. 主程序 (1) 主程序的起始地址。MCS-51单片机复位后,PC=0000H,而各中断源的入口地址为0003

19、H0023H。因此,在编写程序时应在0000H处使用一条转移指令,跳过上述区域。主程序则以转移指令的目的地址作为其起始地址。 第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 ORG0000HLJMPMAINORG0003HLJMPSUMORG1000HMAIN:第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 b.中断系统的初始化内容。 MCS-51中断系统的功能是通过前述特殊功能寄存器进行统一管理的,中断系统的初始化是指用户对这些特殊功能寄存器中的各控制位进行赋值。 初始化包括:相应中断源开中断

20、;设定所涉及中断源的中断优先级;若为外部中断,应规定其触发方式。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才例: 编写INT1*为低电平触发的初始化程序。(1)采用位操作指令实现 CLRIT1 ;电平触发方式SETBEA;总中断允许SETBEX1;设置外部中断1允许SETBPX1;设置INT1*为高优先级断(2)采用字节操作指令MOVTCON,#00H MOVIE,#84HMOVIP,#04H第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才例:利用INT0*实现单步操作。 MCS-51中断系统有

21、个特点,当执行中断返回指令RETI后,至少还要执行一条指令,才能响应新的中断请求。 单步操作是通过外部中断INT0*引脚上的低电平实现,即按一次键执行一条指令。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 ORG0000HLJMPMAINORG0003HLJMPINT0ORG0200HMAIN:MOV SP, #60H SETBPX0;设置INT0*为高优先级断 CLRIT0;电平触发方式 SETBEX0;允许外部中断0中断 SETBEA;总中断允许INT0:JNBP3.2,INT0 ;判断按键弹起否HEAR:JBP3.2,HEAR ;等待按

22、键释放否RETIEND第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才例:外部中断源扩展。 当外部中断源多于2个时,可采用硬件申请与软件查询的方法扩展外部中断。 80511EXT0EXT1EXT2EXT3P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7LED R第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 ORG 0000HJLMP MAINORG 0003HLJMP EXINT ;转外部中断1服务程序 MAIN: ORG 0200HEXINT:PUSH PSWPUSH Acc;

23、保护现场。JB P1.0, EXT0 JB P1.1, EXT1 JB P1.2, EXT2 JB P1.3, EXT3 DONE: POP AccPOP PSW ;恢复现场。RETI;中断返回。 第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 EXT0: SETBP1.4 AJMP DONEEXT1: SETBP1.5 AJMP DONEEXT2: SETBP1.6 AJMP DONEEXT3: SETBP1.7 AJMP DONE END第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 c.中

24、断程序设计举例 例: 统计脉冲触发方式的的个数,若满100个,则停止统计并将P1.0置1。ORG 0000HLJMPMAINORG0003HLJMPSUMORG0100HMAIN:MOV A,#00H;主程序开始 SETBIT0 ;设置脉冲触发方式SETBEX0;设置外部中断0允许SETBEA;总中断允许SJMP $;等待中断第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才SUM:INCACJNEA,#100, QUITCLR EA;总中断禁止CLREX0;外部中断0禁止 SETBP1.0;置位P1.0QUIT:RETI;中断返回END第五章 M

25、CS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才5.4 定时/计数器的概述5.4.1定时器/计数器的结构 定时器/计数器的结构如图所示。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 8051单片机有2个16位的定时/计数器:定时器0(T0)和定时器1(T1)。它们都有定时器或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。 T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成。这些功能都由特殊功能寄存器TMOD和TCON所控制。作计数器时,通过引脚T0(P3.4)和T1

26、(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。计数的最高频率一般为振荡频率的1/24。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才5.4.2 定时和计数两种功能a计数功能 计数:对外部事件进行计数。 外部事件的发生以输入脉冲表示,因此计数功能的实质就是对外来脉冲进行计数。外部输入的脉冲在负跳变时有效,进行计数器加1(加法计数) 。 计数输入端:T0(P3.4 )和T1(P3.5)。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 定时器/计数器在每个机器周期

27、的S5P2期间采样T0/T1引脚,若采样结果表明上一周期为高电平,下一周期为低电平,则TL加1。新的计数值在检测到负跳变后的S3P1期间置入加法计数器。由于需要两个机器周期才能识别高电平到低电平的跳变,所以外部计数脉冲的频率应小于fosc/24,且高电平与低电平的持续时间均不得小于一个机器周期。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才b定时功能 实现方法:通过计数器的计数实现。 与计数功能的不同之处:计数脉冲来自单片机的内部,即每个机器周期产生一个计数脉冲,也就是每个机器周期计数器加1。 一个机器周期=12个振荡周期, 故,计数频率为振荡

28、频率的1/12。 若:单片机晶振6MHz,则计数频率为0.5MHz, 2微秒计数器加1。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 将控制字写入定时器/计数器的过程叫定时器/计数器的初始化。 初始化内容: 规定T0、T1的工作方式;(TMOD) 将工作方式控制字写入方式寄存器赋定时/计数初值;(TH0,TL0;TH1,TL1)规定T0、T1的工作状态。(TR0/TR1) 将工作状态控制字写入控制寄存器第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才5.4.3工作模式寄存器和控制寄存器a定时器工

29、作方式寄存器(TMOD,89H)作用:设置两个定时器/计数器工作方式。但TMOD寄存器不能位寻址,只能用字节传送指令设置其内容。位序号 D7D6D5D4 D3D2D1D0位符号GATEC/TM1M0GATEC/TM1M0 T1 T0第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才5.5 定时器/计数器的四种工作方式由定时计数器的工作方式控制寄存器可知定时/计数0和定时/计数器1有4种工作方式,即第五章 MCS-51单片机中断系统与定时/计数器位序号 D7D6D5D4 D3D2D1D0位符号GATEC/TM1M0GATEC/TM1M0 00:方式0

30、,用作13位定时/计数器 01:方式1,用作16位定时/计数器 10:方式2,用作可重置数的8位定时/计数器 11:方式3,用作两个独立8位定时/计数器(对T0有效)M1M0(1) 方式0 13位计数器结构的工作方式。下图是定时器/计数器0在工作方式0下的逻辑结构(T1的结构和操作与T0完全相同)。第五章 MCS-51单片机中断系统与定时/计数器(1) 方式0 13位计数器结构的工作方式。下图是定时器/计数器0在工作方式0下的逻辑结构(T1的结构和操作与T0完全相同)。第五章 MCS-51单片机中断系统与定时/计数器13位的计数器由TH0的8位和TL0的低5位组成,TL0的高3位不用CT计数、

31、定时选择位:为1时,对外部脉冲计数;为0时,对机器周期计数,也就是定时溢出标志位(1) 方式0 13位计数器结构的工作方式。下图是定时器/计数器0在工作方式0下的逻辑结构(T1的结构和操作与T0完全相同)。第五章 MCS-51单片机中断系统与定时/计数器当GATE0时, 若TR0=1,接通计数控制开关K,启动T0在原计数值上加1计数,直至溢出。 若TR00,则控制开关K断开,停止计数。(1) 方式0 13位计数器结构的工作方式。下图是定时器/计数器0在工作方式0下的逻辑结构(T1的结构和操作与T0完全相同)。第五章 MCS-51单片机中断系统与定时/计数器当GATE1,且TR01时, 或门、与

32、门全部打开,通过引脚的信号直接开启或关断定时/计数器: 为高电平时,允许计数; 为低电平时,停止计数。 由于定时器/计数器以加1方式计数,当定时器/计数器计数时,假定要求的计数长度为N,则应装入定时器/计数器的初值X为: X213N 因此,方式0的计数的长度范围为18192。 注意:在算出初值后,对TH0和TL0写数时,先将初值对应的二进制数的低5位写入TL0,其余数写入TH0的8位中。对TL0的高三位没有要求,但是要写000,否则编译时可以通过,但仿真时会出错。 第五章 MCS-51单片机中断系统与定时/计数器 第五章 MCS-51单片机中断系统与定时/计数器定时/计数器方式0的应用举例。例

33、1 利用单片机的定时/计数器T0对外部脉冲计数,每计满5个脉冲后,改变一次接在P2.0的LED的亮灭状态。要求采用T0的工作方式0,用中断方式。解:因为采用方式0,计数5次引起中断,所以计数初值为 X=213-5=8192-5=8187 =11111111 11011B 因为T0对外部脉冲计数,C/T取1;启动计数由程序完成,GATE位取0,所以为 TMOD=0000 0100B高8位送TH0低5位送TL0汇编语言程序如下: ORG 0000H LJMP START ORG 000BH LJMP COUNT ORG 0030HSTART:MOV SP, #30H ;开堆栈 MOV TMOD,

34、#04H ;方式命令字 MOV TH0,#0FFH ;计数初值高位送TH0 MOV TL0,#1BH ;计数初值低5位送TL0的低5位,高三位补0 SETB ET0 ;开T0中断 SETB EA ;开总中断 SETB TR0 ;启动计数 SJMP $ ;等待中断第五章 MCS-51单片机中断系统与定时/计数器COUNT: ;中断程序 CPL P2.0 ;改变P1.0管脚上LED的亮灭 MOV TH0,#0FFH ;重新赋值 MOV TL0,#1BH RETI ;中断返回 END第五章 MCS-51单片机中断系统与定时/计数器例2 利用外部触发方式实现例1的功能。解:因为T0对外部脉冲计数,C/

35、T取1,计数长度和例1一样, 所以初值为 X=213-5=8192-5=8187 =11111111 11011B 因为采用外部触发方式,所以GATE=1,C/T=1,所以 TMOD=0000 1100B汇编语言程序如下: ORG 0000H LJMP START ORG 000BH LJMP COUNT ORG 0030H第五章 MCS-51单片机中断系统与定时/计数器START:MOV SP, #30H ;开堆栈 MOV TMOD, #0CH ;方式命令字 MOV TH0,#0FFH ;计数初值高位送TH0 MOV TL0,#1BH ;计数初值低5位送TL0的低5位,高三位补0 SETB

36、ET0 ;开T0中断 SETB EA ;开总中断 SETB TR0 ;开启内部计数功能 SJMP $ ;等待中断COUNT: ;中断程序 CPL P2.0 ;改变P1.0管脚上LED的亮灭 MOV TH0,#0FFH ;重新赋值 MOV TL0,#1BH RETI ;中断返回 END第五章 MCS-51单片机中断系统与定时/计数器例3 利用单片机的定时/计数器T0实现计时1s功能,满计时1s时,改变一次接在P2.0的LED的亮灭状态。要求采用T0的工作方式0,用中断方式。 晶振fosc=12MHz.解:因为fosc=12MHz,所以1s需要的机器周期数为106,让定时器每次定时5ms,那么定时

37、200次即可达到1s的时长。所以取 X=5000=10011100 01000B 因为T0实现计时功能,C/T取0;启动计数由程序完成,GATE位取0,所以为 TMOD=0000 0000B第五章 MCS-51单片机中断系统与定时/计数器汇编语言程序如下:ORG 0000H LJMP START ORG 000BH LJMP COUNT ORG 0030HSTART:MOV SP, #30H ;开堆栈 MOV R7,#200 ;1s内定时器溢出次数 MOV TMOD, #00H ;方式命令字,实现定时功能 MOV TH0,#9CH ;计数初值高位送TH0 MOV TL0,#08H ;计数初值低

38、5位送TL0的低5位,高三位补0 SETB ET0 ;开T0中断 SETB EA ;开总中断 SETB TR0 ;启动计数 SJMP $ ;等待中断第五章 MCS-51单片机中断系统与定时/计数器COUNT: ;中断程序 DJNZ R7,GOON CPL P2.0 ;改变P1.0管脚上LED的亮灭 MOV R7,#200GOON: MOV TH0,#9CH ;重新赋值 MOV TL0,#08H RETI ;中断返回 END第五章 MCS-51单片机中断系统与定时/计数器 (2)方式1 当工作方式控制寄存器的M1M0=01时,相应的定时/计数器工作于方式1,此时计数器是一个16位计数器,由TH

39、8位和TL8位构成。其工作原理与方式0相似,只是计数器长度不同。 当定时器/计数器用于计数工作方式时,假定要求的计数长度为N,则应装入定时器/计数器的初值X216N。 在方式1下,计数的长度范围为165536。方式1的逻辑结构见下图。 第五章 MCS-51单片机中断系统与定时/计数器(3)方式2 当工作方式控制寄存器的M1M0=10时,相应的定时/计数器工作于方式2,方式2具有自动重新加载功能,即自动加载计数初值。在该工作方式下,把16位计数器分为两部分,即以TL作计数器,以TH作预置寄存器,初始化时把计数初值分别装入TL和TH中。方式2的逻辑结构见下图。 第五章 MCS-51单片机中断系统与

40、定时/计数器 假定要求的计数长度为N,则应装入定时器/计数器的初值X28N。其计数长度范围为1256。 当计数溢出时,由预置寄存器TH以硬件方法自动给计数器TL重新加载,继续计数,循环重复。由此可知,不必在中断程序中再次给计数器赋初值。 (4) 方式3 前三种工作方式下,在具体某一种方式下T0和T1的设置和使用方法是完全相同的。但是在工作方式3下,二者的设置和使用却是不同的,因此要分开介绍。 a. 在工作方式3下,T0被拆成两个独立的8位计数器TL0和TH0。其中TL0既可以作计数使用,又可以作定时使用。 第五章 MCS-51单片机中断系统与定时/计数器 方式3下,T0的各控制位、引脚和中断源

41、,即、GATE、TR0、TF0、 和T0(P3.4)引脚、 (P3.2)引脚全归它使用。 功能和操作与方式1完全相同,只是计数范围不同。而且逻辑电路结构也很相似,如图所示。第五章 MCS-51单片机中断系统与定时/计数器 此时TH0只可用作简单的定时器使用。而且由于T0的控制位已被TL0独占,因此只好借用定时器/计数器1的控制位TR1和TF1,即以计数溢出去置位TF1,而定时的启动和停止则受TR1的状态控制。 由于TL0既能作定时器使用也能作计数器使用,而TH0只能作定时器使用,却不能作计数器使用。因此,在工作方式3下,T0可以构成两个定时器或一个定时器和一个计数器。 第五章 MCS-51单片

42、机中断系统与定时/计数器 b.工作方式3下的定时器/计数器1 T1无工作方式3,T1只能工作在方式0、1或方式2下,因为在方式3下它的运行控制位TR1及计数溢出标志位TF1已被T0借用。方式3时T1的逻辑结构如图所示。第五章 MCS-51单片机中断系统与定时/计数器 此时,T1通常是作为串行口的波特率发生器使用,以确定串行通信的速率。因为已经没有计数溢出标志位TF1可供使用,因此只能把计数溢出直接送给串行口。 若将T1强行设置为模式3,就会使T1立即停止工作。第五章 MCS-51单片机中断系统与定时/计数器初值计数值定时时间方式00819118192(18192)S方式106553516553

43、6(165536) S方式202551256(1256) S方式3TL002551256(1256) STH00255(1256) S以晶振fosc=12MHz计算第五章 MCS-51单片机中断系统与定时/计数器工作方式及计数、初值总结: 5.6定时/计数器应用举例 编程时应注意的问题: a. 能正确写入控制字(即初始化定时器/计数器) b. 会进行定时/计数初值的计算。 写入控制字的次序: (1) 把工作方式控制字写入TMOD寄存器; (2) 把定时/计数初值装入TL0、TH0(或TL1、TH1) (3) 置位TR0(或TR1)以启动计数 (4) 置位ET0(或ET1)允许定时器/计数器中断

44、(如果需要); (5) 置位EA使CPU开放中断。 第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才定时器/计数器初值的计算: 计数初值最大计数值需要计数的值最大计数值在不同工作方式下是不同的,方式0为:8192方式1为:65536方式2为:256方式3为:256如果定时,需要计数的值=定时时间/机器周期第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才例:设单片机晶振频率fosc6MHz,使用定时器0以方式0产生周期为2ms的等宽正方波脉冲,并由P1.0输出。以中断方式完成。 (1)计算计数初值 实

45、现正方波脉冲的方法:P1.0端以1ms为周期交替输出高低电平。 则:定时时间应为1ms。 若晶振为6MHz,则一个机器周期2us。 设待求的计数初值为X,则: (213X)2us1000us 得:X769211110000 01100B TH10F0H, TL10CH。第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才(2)TMOD寄存器初始化 T1在方式0下, M1M000; 定时功能,应使C/T0; 实现T1的运行控制,则GATE0。 所以: TMOD00H。 (3)由定时器控制寄存器TCON中的TR1位控制定时的启动和停止,则TR11,启动;

46、TR10,停止。位序号 D7D6D5D4 D3D2D1D0位符号GATEC/TM1M0GATEC/TM1M000000000第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才(4)程序清单: ORG 0000HLJMPSTARTORG000BHLJMPTINTSTART:MOV SP,#60HMOV TMOD,#00H ;设置T1工作方式0MOV TL0,#0CHMOV TH0,#0F0H ;设置计数初值 SETB EA SETB ET0 SETB TR1 ;启动T1运行 SETB P1.0 ;高电平 SJMP $第五章 MCS-51单片机中断系统

47、与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 TINT:CPLP1.0 ;输出取反 MOV TL0,#0CH ;重新设置计数初值 MOV TH0,#0F0H RETI END ;程序结束第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才例:设单片机晶振频率fosc6MHz,使用定时器1以方式1产生周期为2s的等宽正方波脉冲,并由P1.7输出。以中断方式完成。(1)计算计数初值设待求的计数初值为X,则: (216X)2us1000,000us 得: X155363CB0H, 则: TH13CH,TL10B0H。 (2)TMOD寄存器

48、初始化第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才位序号 D7D6D5D4 D3D2D1D0位符号GATEC/TM1M0GATEC/TM1M000010000 M1M001, C/T 0, GATE0 所以: TMOD10H第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才程序清单: ORG 0000HLJMP STARTORG 001BHLJMP TINT ORG 0100HSTART:MOV SP,#60HMOV TMOD,#10H;设置T1工作方式0MOV TH1,#3CH;设置计数初值MOV TL1,#0B0H SETB EA SETB ET1 SETB TR1 ;启动T1运行 SETB P1.7 ;高电平SJMP $第五章 MCS-51单片机中断系统与定时/计数器基于KEIL和PROTEUS的单片机技术 侯俊才 ORG 0400H TINT: MOVTL0,#0B0H ;重新设置计数初值MOVTH0,#3CHCPLP1.7 ;输出取反LOOP:RETIEND ;程序结束第五章 MCS-51单片机中断系统与定时/计数器基于K

温馨提示

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

评论

0/150

提交评论