第5章 80C51 单片机的中断与定时

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

LOGO单片机基础教程主讲人:李月华南华大学口扩展第2章80C51单片机的硬件结构第8章80C51单片机串行通信第3章80C51单片机指令系统第9章单片机串行扩展第4章80C51单片机汇编语言程序设计第10章单片机A/D及D/A转换接口第5章80C51单片机的中断与定时第11章8位单片机的发展第6章单片机并行存储器扩展第12章单片机应用单片机的定时器/计数器280C51单片机的中断系统1一、中断概述1、中断源中断源指引起正在执行的程序中断,转而执行中断服务程序的设备或事件。可分为硬中断、软中断。MCS-51单片机的5个中断源:①外部中断2个:、,中断请求信号分别由P3.2、P3.3输入,低电平有效、脉冲下降沿有效可选。入口地址:0003H,0013H。②定时/计数溢出中断2个:T0、T1,计数溢出时置“1”TF0、TF1位,从而发出内部中断请求。入口地址:000BH,001BH。0INT1INT③串行中断1个:串行接收或发送完一帧数据时就产生一个内部中断请求RI或TI。入口地址:0023H。2、中断处理过程包含:中断请求、中断响应、中断服务、中断返回四个阶段.①中断请求:中断源将相应请求中断的标志位置“1”,表示发出请求,并由CPU查询。②中断响应:在一条指令的最后一个周期按优先级顺序查询中断标志,为“1”并满足响应条件时响应。响应操作:断点压栈→撤除中断标志→关闭低同级中断允许→中断入口地址送PC。实际上响应中断的主要操作是有硬件自动产生一条长调用指令LCALL。③中断服务:根据入口地址转中断服务程序,包含保护现场、执行中断主体、恢复现场。④中断返回:断点出栈→开放中断允许→返回原程序。3、中断优先级及其嵌套优先级2个---高优先级、低优先级,可通过SFR寄存器IP设置。中断嵌套原则为高优先级的中断不能被低优先的中断所中断,同级中断不能相互中断。、中断控制的特点①中断是随机发生的,并且是可编程的。②通过执行特定功能的程序段而获得预定目5、MCS-51中断汇集二、中断控制通过对特殊功能寄存器TCON、SCON、IE、IP等四个寄存器的设定而实现。1、中断请求控制(1)定时中断、外中断请求控制寄存器TCON,字节地址88H,位地址8FH~88H,与中断请求有关的各位表示如下:TF1、TF0:T1/T0溢出中断请求标志。IE1、IE0:外中断/请求标志。IT1、IT0:外中断/触发方式定义位,“1”—后沿触发(2)串行中断请求控制寄存器SCON串行中断请求由TI、RI的逻辑“或”得到。即不论是发送标志还是接收标志,都将发生串行中断请求。字节地址98H,位地址9FH~98H,与中断请求有关的各位表示如下:TI为发送中断,RI为接收中断,为“1”时,请求中断,响应后必须由用户软件清零。(3)中断请求的撤销中断响应后,必须及时清除TCON、SCON中的已响应中断请求标志,否则,会引起中断的重复查询和响应。①外中断请求的撤销:对于边沿触发方式:由于触发信号过后就消失,撤销自然也就是自动的。对于电平触发方式:需通过软硬件结合的方法来实现撤销。②定时中断请求的撤销:定时中断后,硬件自动清“0”。③串行中断请求的撤销:不能自动清“0”,须用软件的方法在中断服务子程序中进行清“0”。2、中断允许控制由SFR寄存器IE设置,分二级允许控制。以EA位作为总控,以各中断源的允许位作为分控。,位地址AFH~A8H,与中断允许有关的各位表示如下:单片机复位后,(IE)=00H,因此,整个中断系统为禁止状态。3、中断优先级控制由SFR寄存器IP设置,有2个优先级,相应位置“1”,为高优先级。相应位置“0”,为低优先级。,位地址BFH~B8H,与中断允许有关的各位表示如下:注意:5个中断允许位全部置“1”时,和全部清0效果一样,为同优先级中断,按自然优先级处理,即为外中断0→T0→外中断1→T1→串行口,优先级依次从高到低。三、中断应用1、中断应用的准备工作(1)中断初始化设置:定义SP、IP、IE和外中断触发方式选择;(2)中断服务程序:中断入口、现场保护、中断主体程序、恢复现场返回。2、应用举例例5-1通过P1.0~P1.7控制发光二极管,输出两种节日灯,并利用外中断P3.2,在两种状态之间切换。分析:主程序中状态:亮1灯左移循环,中断程序中的状态:以1秒间隔8灯依次亮起,再依次熄灭,循环3次后返回。主流程图(略),程序如下:ORG0000HLJMPSTARTORG0003H;中断入口LJMP0100HORG0030HSTART:MOVSP,#60HSETBIT0;设定下跳有效SETBEX0;开中SETBEAMOVIP,#01HMOVA,#01HLOOP:MOVP1,ARLALCALLDELAYAJMPLOOP中断服务程序:ORG0100HPUSHACCCLRAMOVR0,#00HLOOP1:SETBCRLCAMOVP1,ALCALLDELAYJNBACC.7,LOOP1LOOP2:CLRCRLCAMOVP1,ALCALLDELAYJBACC.7,LOOP2INCR0CJNER0,#03H,LOOP1POPACCRETIDELAY:(略);1秒延时单片机的定时器/计数器一、定时/计数器构成1、定时方法软件延时通过执行循环而获得延时,短时间延时;硬件延时由硬件电路实现延时,长时间延时;可编程定时通过对系统时钟脉冲的计数而获得延时。2、MCS-51单片机的定时/计数器16位定时/计数器T0、T1,分别由4个8位计数器组成,均属SFR寄存器。T0由TH0、TL0构成,字节地址为8CH、8AH;T1由TH1、TL1构成,字节地址为8DH、8BH;、MCS-51单片机定时/计数器的功能归根结底是计数器。(1)定时功能对片内机器周期进行计数,即每个机器周期产生一个计数脉冲,计数加1。(2)计数功能对片外从T0(P3.4)、T1(P3.5)引脚输入的外部脉冲信号进行计数,下降沿计数加1。二、定时/计数器的控制寄存器与定时/计数器有关的控制寄存器有3个:1、定时器控制寄存器TCON(88H)SFR寄存器TCON既参与定时控制又参与中断控制,有关定时控制的有4位,表示如下::当T1/T0的计数器计数溢出时,该位置“1”。TR1/TR0:T1/T0运行控制位。软件将其置“1”时,启动T1/T0工作。2、设定定时器工作方式寄存器TMOD(89H)SFR寄存器TMOD用于2个定时器/计数器T1/T0的工作方式设定,各位的含义表示如下:门控位,定义T1/T0的启动方式,逻辑如图:C/:定时/计数功能选择位。为“0”,作定时器用;为“1”,作计数器用。M1M0:工作方式选择位。00方式013位计数器01方式116位计数器10方式2初值自动重装8位计数器T位计数器,仅适用于T03、中断允许控制寄存器IE(A8H)三、定时器/计数器工作方式1、工作方式0M1M0=00——13位计数器(1)结构由TH0的全部8位和TL0的低5位构成,如下页图。当TL0低5位计数满时直接向TH0进位,并当全部13位计数满溢出时,TF0置“1”。(2)TMOD值:作定时器:TMOD=00000000=00H作计数器:TMOD=00000100=04H(3)计数初值最大计数值为213=8192△T=(213—计数初值)×机器周(12/fosc)计数初值=213—欲计数脉冲数=213—△T/机器周期、工作方式1M1M0=01——16位计数器方式1时的电路逻辑结构如图所示作定时器,TMOD=01H;作计数器,TMOD=05H;△T=(216—计数初值)×机器周期(12/fosc)计数初值=216—欲计数脉冲数=216—△T/机器周期例如:定时500us,fosc=6MHz时,初值=216—500/2=65536-250=65286=FF06H那么:TH0=FFH,TL0=06H3、工作方式2M1M0=10——自动复位的8位计数器以TL0作计数器,而TH0作为预置寄存器。当计数满溢出时,TF0置“1”,同时TH0将计数初值以硬件方法自动装入TL0。逻辑结构,如图所示:作定时器,TMOD=02H;作计数器,TMOD=06H;最大计数值为28=256,若fosc=12MHz,则方式2的最大定时间为256us。当作为定时器用时,定时时间的计算公式:△T=(28—计数初值)×机器周期(12/fosc)计数初值=28—欲计数脉冲数=28—△T/机器周期例如:定时500,fosc=6MHz时,初值=28—500/2=6=06H则:TH0=TL0=06H4、工作方式3M1M0=11——2个8位计数器(仅限于T0)在T0方式3下,T0、T1的设置和使用是不同的。(1)T0方式3TL0:使用T0原有控制资源,功能与方式0、1相同。TH0:借用T1的TR1、TF1,只能对片内机器周期脉冲计数,作8位定时器。、T1电路逻辑结构,如图所示(2)T0方式3下的T1T0方式3时,T1仍然可工作于方式0~方式2,如上页图所示。C/控制位仍可使T1工作在定时器或计数器方式,只是由于其TR1、TF1被T0的TH0占用,因而没有计数溢出标志可供使用,计数溢出时只能将输出结果送至串行口,即用作串行口波特率发生器。T0方式3下的T1方式2,因定时初值能自动恢复,用作波特率发生器更为合适。四、定时/计数器的应用【例5-2】已知fosc=6MHz,利用T1定时500us,在P1.0口输出周期为1ms的方波脉冲,使用方式0~方式2编程。解:1)方波波形如图所示:2)计数初值:方式0:计数初值=213—欲计数脉冲数=213—△T/机器周期=213-500/2=1F06H∴TH1=F8H,TL1=06H方式1:计数初值=216—欲计数脉冲数=216—△T/机器周期=216-500/2=FF06H∴TH1=FFH,TL1=06H方式2:计数初值=28—欲计数脉冲数=28—△T/机器周期=28-500/2=06H∴TH1=TL1=06H3)定时到达P1.0的翻转方法:查询方式、中断方式4)流程、程序如下::采用查询方式程序:流程:ORG0030HSTART:MOVTMOD,#00HMOVTH1,#0F8HMOVTL1,#06H

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功