第5章80C51的中断系统及定时计数器(2)定时计数器概要.ppt_第1页
第5章80C51的中断系统及定时计数器(2)定时计数器概要.ppt_第2页
第5章80C51的中断系统及定时计数器(2)定时计数器概要.ppt_第3页
第5章80C51的中断系统及定时计数器(2)定时计数器概要.ppt_第4页
第5章80C51的中断系统及定时计数器(2)定时计数器概要.ppt_第5页
免费预览已结束,剩余44页可下载查看

下载本文档

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

文档简介

第5章80C51的中断系统及定时/计数器,2020/5/3,1,80C51单片机的中断系统,5.1,80C51单片机的中断处理过程,5.2,80C51单片机的定时/计数器,5.3,80C52的定时/计数器2(不讲),5.4,复习数电中的计数器、定时器,提出要求:1、有参与计数的实体(计数长度可变)2、有计数脉冲的引入,有溢出位3、可以置入初值,溢出,计数脉冲,置入初值,计数长度为n的计数器,定时器/计数器可由触发器构成,计数状态满足一定条件时有输出,有置入初值的途径,最大计数长度:,最大定时时间:,对于加1计数器,若初值为x,则记录m个脉冲后溢出。,结论:为实现m个脉冲的计数,则需置入初值x,,2、定时(延时)t,1、计数m个脉冲,任务的类型:,计算:置入初值。,计算:置入初值。,5.380C51单片机的定时/计数器,2020/5/3,5,5.3.1定时/计数器的结构和工作原理,2种工作模式:(1)计数器工作模式(2)定时器工作模式4种工作方式(方式0-方式3)。,由图看到:,1、两个可编程的定时器/计数器T1、T0。,2、出现的SFR有:TH0、TL0、TH1、TL1TMOD、TCON,借助于SFR,实现:,两种不同的计数脉冲的引入,并借助于TMOD用于区分模式。,用TMOD来安排工作方式。,2020/5/3,7,定时/计数器的工作原理,实质是16位加1计数器,定时器模式时,是对内部机器周期计数。计数值乘以机器周期就是定时时间计数器模式时,是对外部事件计数。脉冲由T0(P3.4)或T1(P3.5)引脚输入。,注意:(若计数值为m,计数初值为X)溢出信号使TF0或TF1置1,并发出中断请求,16位时有:m=65536-X,或X=65536-m12MHz晶振时,计数频率低于0.5MHz,2020/5/3,9,注意:TMOD不能进行位寻址,2020/5/3,10,控制寄存器TCON,2020/5/3,11,5.3.3定时/计数器的工作方式,T0有方式0、1、2、3;T1有方式0、1、2。以T0为例说明。,方式0:13位方式,2020/5/3,12,C/T=1时,则为计数模式,有:X=213-m=8192-mC/T=0时,则为定时模式,有:X=213-m=8192-m,m=t/Tcy,【例5-3】若计数个数m为2,求计数初值。X=81922=8190=1FFEH=1111111111110B,初值计算:,上述初值如何分配给TH0、TL0,注意:方式0的计数初值高8位和低5位确定麻烦,实际应用中常由16位的方式1取代。,2020/5/3,13,方式1:16位方式,X=216-m=65536-m计数范围:165536计数初值要分成2个字节分别送入TH0、TL0,2020/5/3,14,【例5-4】若要求定时器T0工作于方式1,定时时间为1ms,当晶振为6MHz时,求送入TH0和TL0的计数初值各为多少?应怎样送入TH0和TL0?,由于晶振为6MHz,所以机器周期Tcy为2S,因此:m=t/Tcy=110-3/210-6500X216-m65536-50065036FE0CH,也可以利用以下2条指令完成:MOVTL0,#(65536-500)MOD256;余数为计数初值的低字节MOVTH0,#(65536-500)/256;商为计数初值的高字节,用传送指令分别将FEH送入TH0中,0CH送入TL0中即可。,举例,2020/5/3,15,方式2:8位自动重装方式,X=28-m=256-m计数范围:1256特别适合与脉冲信号发生器,2020/5/3,16,方式3:(仅T0有此方式,T1的方式3将停止计数),TL0进行8位定时/计数TH0进行8位定时(T1方式2时,可出借TR1、TF1),2020/5/3,17,5.3.4定时/计数器用于外部中断扩展,例:用T0扩展一个外部中断源。将T0设置为计数器方式,按方式2工作,TH0、TL0的初值均为0FFH,T0允许中断,CPU开放中断。其初始化程序如下:MOVTMOD,#06H;置T0为计数器方式2MOVTL0,#0FFH;置计数初值MOVTH0,#0FFHSETBTR0;启动T0工作SETBEA;CPU开中断SETBET0;允许T0中断,T0外部引脚上出现一个下降沿信号时,TL0计数加1,产生溢出,将TF0置1,向CPU发出中断请求,2020/5/3,18,5.3.5定时/计数器应用举例,初始化程序应完成:对TMOD赋值,以确定T0和T1的工作方式;求初值,并写入TH0、TL0或TH1、TL1;使TR0或TR1置位,启动定时/计数器工作。,初始化程序设计(四条指令)MOVTMOD,#01H;设置T0为方式1MOVTH0,#0FEH;T0置初值MOVTL0,#0CHSETBTR0,两种方式对溢出作出反应:查询、中断,2020/5/3,19,中断方式:(常用),查询方式:,1、在主程序中进行中断初始化2、计数(定时)结束后该做的事情放在中断服务程序中,1、反复查询是否溢出,如JNBTF0,$2、一旦发现溢出,及时清除溢出标志3、然后安排计数(定时)结束后该做的事情,2020/5/3,20,计数应用,【例5-5】有一包装流水线,产品每计数24瓶时发出一个包装控制信号。试编写程序完成这一计数任务。用T0完成计数,用P1.0发出控制信号。,确定方式字:T0在计数的方式2时:M1M0=10,GATE=0,C/T=1方式控制字为06H,求计数初值X:N=24X=256-24=232=E8H应将E8H送入TH0和TL0中,2020/5/3,21,ORG0000HLJMPMAINORG000BHLJMPDVT0ORG0100HMAIN:MOVTMOD,#06H;置T0计数方式2MOVTH0,#0E8H;装入计数初值MOVTL0,#0E8HSETBET0;T0开中断SETBEA;CPU开中断SETBTR0;启动T0SJMP$;等待中断,DVT0:SETBP1.0NOPNOPCLRP1.0RETIEND,主程序,中断服务程序,2020/5/3,22,定时应用,定时时间较小时(小于65ms)。可直接采用方式1完成定时任务。,两种方式对溢出作出反应:查询、中断,系统时钟为6MHz时,各种方式下的最长定时的计算:,由最长定时=2nTcp,而Tcp=2s方式0最长可定时16.384ms;方式1最长可定时131.072ms;方式2最长可定时512s。,晶振为12MHz时,Tcy为1S。最长可定时65ms,2020/5/3,23,确定方式字:T0在定时的方式1时:M1M0=01,GATE=0,C/T=0方式控制字为01H,求计数初值X:Tcy为1SN=10ms/1S=10000X=65536-10000=D8F0H应将D8送TH0,F0H送TL0,举例,2020/5/3,24,ORG0000HLJMPMAINORG000BHLJMPDVT0ORG0100HMAIN:MOVTMOD,#01H;置T0方式1MOVTH0,#0D8H;装入计数初值MOVTL0,#0F0HSETBET0;T0开中断SETBEA;CPU开中断SETBTR0;启动T0SJMP$;等待中断,DVT0:CPLP1.0MOVTH0,#0D8HMOVTL0,#0F0HRETIEND,主程序中断方式,中断服务程序,数数源程序的四要素,注意重装初值,为什么?,数数中断的四要素,2020/5/3,25,ORG0000HLJMPMAINORG0100HMAIN:MOVTMOD,#01H;置T0方式1LOOP:MOVTH0,#0D8H;装入计数初值MOVTL0,#0F0HSETBTR0;启动T0JNBTF0,$;查询TF0标志CLRTF0;T0溢出,清标志CPLP1.0;P1.0的状态求反SJMPLOOPEND,主程序查询方式,2020/5/3,26,定时时间较大时(大于65ms)。实现方法:一是采用1个定时器定时一定的间隔(如20ms),然后用软件进行计数;二是采用2个定时器级联,其中一个定时器用来产生周期信号(如20ms为周期),然后将该信号送入另一个计数器的外部脉冲输入端进行脉冲计数。,【例5-7】,2020/5/3,27,编写程序,实现用定时/计数器T0定时,使P1.7引脚输出周期为2s的方波。设系统的晶振频率为12MHz。,求计数初值X:Tcy为1SN=20ms/1S=20000X=65536-20000=4E20H应将4EH送TH0,20H送TL0,采用定时20ms,然后再计数50次的方法实现-用DJNZ指令,确定方式字:T0在定时的方式1时:M1M0=01,GATE=0,C/T=0方式控制字为01H,2020/5/3,28,ORG0000HLJMPMAINORG000BHLJMPDVT0ORG0030HMAIN:MOVTMOD,#01H;置T0方式1MOVTH0,#4EH;装入计数初值MOVTL0,#20H;首次计数值MOVR7,#50;计数50次SETBET0;T0开中断SETBEA;CPU开中断SETBTR0;启动T0SJMP$;等待中断,DVT0:DJNZR7,NT0MOVR7,#50CPLP1.7NT0:MOVTH0,#4EHMOVTL0,#20H;SETBTR0RETIEND,主程序,中断服务程序,1S到在哪里?,将上述例题改写成查询方式,并在P1.0上输出周期为2秒的方波。,ORG0000HRESET:LJMPMAIN;上电,转主程序入口MAINORG1000HMAIN:MOVSP,#60H;设堆栈指针MOVB,#0AH;设循环次数10次MOVTMOD,#01H;设T0工作在方式1MOVTL0,#0B0H;给T0设初值MOVTH0,#3CHSETBTR0;启动T0LOOP1:JNBTF0,LOOP1;查询TF0标志CLRTF0;T0溢出,清标志MOVTL0,#0B0H;T0溢出后,重装初值MOVTH0,#3CH;DJNZB,LOOP1;满10次了吗?CPLP1.0;P1.0的状态求反MOVB,#0AH;设循环次数10次SJMPLOOP1END,ORG0000HRESET:LJMPMAIN;上电,转主程序入口MAINORG1000HMAIN:MOVSP,#60H;设堆栈指针MOVTMOD,#01H;设T0工作在方式1SETBTR0;启动T0CLRP1.0LOOP1:LCALLDEL1SCPLP1.0;P1.0的状态求反SJMPLOOP1DEL1S:MOVB,#0AH;设循环次数10次LOOP11:MOVTL0,#0B0H;T0溢出后,重装初值MOVTH0,#3CH;JNBTF0,$;查询TF0标志CLRTF0;T0溢出,清标志DJNZB,LOOP11;满10次了吗?RETEND,当T0(P3.4)引脚上发生负跳变时,从P1.0引脚上输出一个周期为1ms的方波,如图所示。(系统时钟为6MHz),举例,1、有定时,有计数2、方式2的应用(免重装初值)3、两个中断源,本题分析:1、T0为方式1计数,初值0FFFFH,即外部计数输入端T0(P3.4)发生一次负跳变时,T0加1且溢出,溢出标志TF0置“1”,发中断请求。2、T1定义为方式2定时。在T0脚发生一次负跳变后,启动T1每500s产生一次中断,在中断服务程序中对P1.0求反,使P1.0产生周期1ms的方波。,本题特点:,(1)T0、T1工作方式的确定MOVTMOD,#00100101B;各位的含义,(2)计算T1初值已知机器周期为2s,定时为500s设T1的初值为X:则(28-X)210-6=510-4SX=28-250=6=06H,(3)主程序的设计完成两个定时器的初始化及中断的初始化注意根据题意,在合适的时刻启动定时和开启中断,需要完成下列任务:,ORG0000HRESET:LJMPMAIN;复位入口转主程序ORG000BHLJMPIT0P;转T0中断服务程序ORG001BHLJMPIT1P;转T1中断服务程序ORG0100HMAIN:MOVSP,#60HMOVTMOD,#25H;T1为方式2定时,T0为方式1计数MOVTL0,#0FFH;T0置初值MOVTH0,#0FFHSETBTR0;启动T0MOVTL1,#06H;T1置初值MOVTH1,#06HSETBET0;允许T0中断SETBEAHERE:AJMPHERE,IT0P:CLRTR0;T0中断服务程序,停止T0计数SETBTR1;启动T1SETBET1;允许T1中断RETIIT1P:CPLP1.0;T1中断服务,P1.0位取反RETIEND,两个中断服务主程序的设计:,要求:画出流程图。,在T1定时中断服务程序IT1P中,省去了T1中断服务程序中重新装入初值06H的指令。,GATE0可使定时器/计数器T0的启动计数受INT0*的控制,可测量引脚INT0*(P3.2)上正脉冲的宽度(可理解为定时器的第三种工作方式“计时”)。,门控制位GATE的应用测量脉冲宽度,A,2020/5/3,37,门控位的应用,【例5-8】测量INT0引脚上出现的正脉冲宽度,并将结果(以机器周期的形式)存放在30H和31H两个单元中。,将T0设置为方式1的定时方式,且GATE=1,计数器初值为0,将TR0置1。,INT0引脚上出现高电平时,加1计数器开始对机器周期计数。,INT0引脚上信号变为低电平时,停止计数,然后读出TH0、TL0的值,T0设置为定时还是计数?,2020/5/3,38,ORG0000HAJMPMAINORG0200HMAIN:MOVTMOD,#09H;置T0为定时器方式1,GATE=1MOVTH0,#00H;置计数初值MOVTL0,#00HMOVR0,#31H;置地址指针初值(指向低字节)L1:JBP3.2,L1;高电平等待SETBTR0;当INT0由高变低时使TR0=1,准备好L2:JNBP3.2,L2;等待INT0变高L3:JBP3.2,L3;已变高,启动定时,直到INT0变低CLRTR0;INT0由高变低,停止定时MOVR0,TL0;存结果DECR0MOVR0,TH0SJMP$END,ORG0000H;MUSICLJMPSTARTORG000BHLJMPINTT0START:MOVSP,#50HMOVTH0,#0D8HMOVTL0,#0EFHMOVTMOD,#01HMOVIE,#82H,MUSIC0:NOPMOVDPTR,#DATMOV20H,#00HMUSIC1:NOPCLRAMOVCA,A+DPTRJZEND0CJNEA,#0FFH,MUSIC5LJMPMUSIC3MUSIC5:NOP;正常播放音乐MOVR6,AINCDPTRMOVA,#0MOVCA,A+DPTRMOVR7,ASETBTR0,T0定时时间=(216-D8EFH)*12/12MHz=10ms,音乐播放(C51music1.asm),2020/5/3,40,MUSIC4:NOPMOVR3,#0FFHLCALLDELDJNZR2,MUSIC4INCDPTRLJMPMUSIC1END0:NOP;音乐播放完MOVR2,#0FFHMUSIC6:MOVR3,#00HLCALLDELDJNZR2,MUSIC6LJMPMUSIC0,MUSIC2:NOPCPLP1.5MOVA,R6MOVR3,ALCALLDELMOVA,R7CJNEA,20H,MUSIC2MOV20H,#00HINCDPTRLJMPMUSIC1MUSIC3:NOP;一小段音乐播放结束,延时CLRTR0MOVR2,#0DH,音乐播放,2020/5/3,41,DAT:DB18H,30H,1CH,10H,20H,40H,1CH,10HDB18H,10H,20H,10H,1CH,10H,18H,40HDB1CH,20H,20H,20H,1CH,20H,18H,20HDB20H,80H,0FFH,20H,30H,1CH,10H,18HDB20H,15H,20H,1CH,20H,20H,20H,26HDB40H,20H,20H,2BH,20H,26H,20H,20HDB20H,30H,80H,0FFH,20H,20H,1CH,10HDB18H,10H,20H,20H,26H,20H,2BH,20HDB30H,20H,2BH,40H,20H,20H,1CH,10HDB18H,10H,20H,20H,26H,20H,2BH,20HDB30H,20H,2BH,40H,20H,30H,1CH,10HDB18H,20H,15H,20H,1CH,20H,20H,20HDB26H,40H,20H,20H,2BH,20H,26H,20HDB20H,20H,30H,80H,20H,30H,1CH,10H,DEL:NOPDEL3:MOVR4,#02HDEL4:NOPDJNZR4,DEL4NOPDJNZR3,DEL3RETINTT0:INC20HMOVTH0,#0D8HMOVTL0,#0EFHRETI,2020/5/3,42,DB20H,10H,1CH,10H,20H,20H,26H,20H,2BH,20H,30H,20HDB2BH,40H,20H,15H,1FH,05H,20H,10H,1CH,10H,20H,20HDB26H,20H,2BH,20H,30H,20H,2BH,40H,20H,30H,1CH,10HDB18H,20H,15H,20H,1CH,20H,20H,20H,26H,40H,20H,20HDB2BH,20H,26H,20H,20H,20H,30H,30H,20H,30H,1CH,10HDB18H,40H,1CH,20H,20H,20H,26H,40H,13H,60H,18H,20HDB15H,40H,13H,40H,18H,80H,00HEND,实时时钟的设计,1、实时时钟实现的基本思想,2、程序设计,(1)主程序的设计,(2)中断服务程序的设计,涉及到的话题:(1)1秒钟的实现(2)数据的规划-时、分、秒的数据存放(3)六十进制加法、二十四进制加法的实现、BCD码(4)基本的定时器的使用、中断的应用(5)程序的执行过程的描述,可把定时时间定为100ms,采用中断方式进行溢出次数的累计,计满10次,即得到秒计时。2、满1秒后,内部应完成哪些任务:秒加1以及可能的分加1、可能的时加1。刷新显示。片内RAM的规划:规定3个单元作为秒、分、时单元,如:42H:“秒”

温馨提示

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

评论

0/150

提交评论