《C51单片机教程第9章.ppt》由会员分享,可在线阅读,更多相关《C51单片机教程第9章.ppt(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第9章章 定时器定时器/计数器的应用计数器的应用9.1 定时器定时器/计数器定时功能的应用计数器定时功能的应用9.2 简易方波发生器简易方波发生器9.3 外部脉冲宽度的测量外部脉冲宽度的测量1.实训目的实训目的掌握定时器掌握定时器/计数器定时功能的使用方法计数器定时功能的使用方法掌握定时器初值的计算方法掌握定时器初值的计算方法掌握定时中断程序的编程方法掌握定时中断程序的编程方法2.功能设计功能设计主程序:主程序:定时器定时器T0的初始化,应用的初始化,应用P1口控制发光二口控制发光二极管极管L1L8的亮暗交替显示。的亮暗交替显示。定时器定时器T0中断:中断:T0产生产生10s的定时中断,当定
2、时时间的定时中断,当定时时间到时,到时,8个发光二极管全灭,并持续一段时间(延时个发光二极管全灭,并持续一段时间(延时1s)。)。9.1 定时器定时器/计数器定时功能的应用计数器定时功能的应用3.背景知识背景知识8051单片机的定时器单片机的定时器/计数器计数器T0(T1)为)为16位计数器,位计数器,有有4种工作方式。每种工作方式的特点见书中表种工作方式。每种工作方式的特点见书中表9.1。本题目需要本题目需要T0定时定时10s,直接使用表,直接使用表9.1中的中的4种方式种方式均不能达到要求。如果采用方式均不能达到要求。如果采用方式1,定时,定时100ms,则,则中断中断10次时间为次时间为
3、100ms100=10000ms=10s。(1)定时器工作方式寄存器定时器工作方式寄存器TMOD设置如书中所示。设置如书中所示。(2)定时器定时器/计数器控制寄存器计数器控制寄存器TCON设置如书中所设置如书中所示。示。(3)定时器计数器初始值计算定时器计数器初始值计算Tini(初始值)(初始值)=2N-定时时间定时时间/机器周期机器周期其中其中N是定时器是定时器/计数器的定时器长度,与定时器计数器的定时器长度,与定时器/计计数器的工作方式有关。机器周期是晶振周期的数器的工作方式有关。机器周期是晶振周期的12倍,倍,若晶振为若晶振为12MHz,则机器周期为,则机器周期为1s,若晶振为,若晶振为
4、6MHz,则机器周期为,则机器周期为2s。如要求定时如要求定时100ms(100000s),晶振采用),晶振采用6MHz,则定时器则定时器/计数器工作在方式计数器工作在方式1下的初始值为:下的初始值为:Tini=216-100000/2=1553615536转换为十六进制数为转换为十六进制数为3CB0H。(。(TL0)3CH,(TH0)0B0H。中断次数计数器(。中断次数计数器(R3)10。(4)T0中断的入口地址为中断的入口地址为000BH。4.硬件原理与资源分配硬件原理与资源分配硬件原理图如图硬件原理图如图9.1所示。所示。硬件资源分配:硬件资源分配:P1口为口为8位输出口,驱动位输出口,
5、驱动8个发光二个发光二极管。极管。R5为循环计数器。为循环计数器。图图9.1 T0定时实训硬件原理图定时实训硬件原理图5.参考程序参考程序ORG0000HAJMPMAIN;转主程序转主程序ORG000BH;T0中断入口地址中断入口地址AJMPJT0;转转T0处理程序处理程序MAIN:NOP;主程序段主程序段MOVSP,#40H;设定堆栈设定堆栈MOVA,#0FFHMOVP1,A;初始化初始化P1口口MOVR5,#100MOVTMOD,#01H;写控制字,写控制字,T0工作方式工作方式1MOVTH0,#0B0H;设定初始值设定初始值MOVTL0,#3CHSETBTR0;启动启动T0SETBET0
6、;允许允许T0中断中断SETBEA;开总中断开总中断LOOP:MOVA,#0AAHMOVP1,A;点亮点亮L1、L3、L5、L7LCALLYS1;调用延时调用延时1s程序程序MOVA,#55HMOVP1,A;点亮点亮L2、L4、L6、L8LCALLYS1;调用延时调用延时1s子程序子程序AJMPLOOP;主程序循环,如果有中断,则转中断处理程序主程序循环,如果有中断,则转中断处理程序JT0:NOP;外部中断外部中断0处理程序,如果有中断处理程序,如果有中断0则转此段则转此段CLREA;关总中断关总中断PUSHACC;保护现场保护现场PUSH02HPUSH03HPUSH04HDJNZR5,RRT
7、MOVR5,#100MOVA,#0FFH;L1L8全灭全灭MOVP1,ALCALLYS1;调用延时调用延时1s子程序子程序RRT:MOVTH0,#3CH;重装初始值重装初始值MOVTL0,#0B0HPOP04H;恢复现场恢复现场POP03HPOP02HPOPACCSETBEA;开中断开中断RETI;中断返回中断返回DLS:MOVR1,#0FFHLOP1:MOVR2,#0FFHLOP:DJNZR2,LOPDJNZR1,LOP1RETEND子程序子程序YS1见第见第6章例章例6.3。6.总结与提高总结与提高定时器定时器/计数器是单片机内部重要的功能部件,灵活计数器是单片机内部重要的功能部件,灵活运
8、用定时器运用定时器/计数器的功能,不仅能够节约硬件资源,计数器的功能,不仅能够节约硬件资源,而且还能使程序简练、控制灵活。在使用定时器而且还能使程序简练、控制灵活。在使用定时器/计计数器时应注意以下几个方面:数器时应注意以下几个方面:(1)应根据所要求的定时时间长度和定时的重复性,应根据所要求的定时时间长度和定时的重复性,合理选择定时器的工作方式。合理选择定时器的工作方式。(2)定时器计数器的初始化,包括设定定时器计数器的初始化,包括设定TMOD、写入定时初值、设置中断系统和启动定时器运行等。写入定时初值、设置中断系统和启动定时器运行等。(3)若将定时器计数器用于计数方式,则外部脉若将定时器计
9、数器用于计数方式,则外部脉冲必须从冲必须从P3.4(T0)或)或P3.5(T1)引脚输入,且外部)引脚输入,且外部脉冲的最高频率不能超过时钟频率的脉冲的最高频率不能超过时钟频率的124。在方式在方式0、方式、方式1、方式、方式2状态下定时器状态下定时器T0、T1的工作的工作是一样的,灵活运用这两个内部定时器,可以大大提是一样的,灵活运用这两个内部定时器,可以大大提高单片机的工作效率,减少对系统硬件资源的占用,高单片机的工作效率,减少对系统硬件资源的占用,降低成本。降低成本。1.实训目的实训目的掌握定时器的使用及定时中断程序的设计方法掌握定时器的使用及定时中断程序的设计方法掌握方波信号发生器的设
10、计方法掌握方波信号发生器的设计方法2.功能设计功能设计用单片机的用单片机的P3.1端口输出一定频率的方波。端口输出一定频率的方波。P1口外接口外接K1K8共共8个按键,用来设定输出方波的频率,共个按键,用来设定输出方波的频率,共8个档位。系统晶振为个档位。系统晶振为12MHz。9.2 简易方波发生器简易方波发生器3.背景知识背景知识(1)若若P3.1的输出状态定时翻转,则的输出状态定时翻转,则P3.1端口输出端口输出一定频率的方波。假设以定时器一定频率的方波。假设以定时器T0定时定时8ms(8000s)为基本定时时间,则)为基本定时时间,则P3.1端口输出方端口输出方波的周期为波的周期为16m
11、s。选择。选择T0方式方式0定时功能,定时器初定时功能,定时器初值为:值为:Tini=213-8000/1=192C0H11000000B低低5位(位(TL0)00000B00H,高,高8位(位(TH0)00000110B06H。定时器工作方式寄存器定时器工作方式寄存器TMOD设置如书中所示。设置如书中所示。(2)按下按键按下按键K1,则,则P3.1输出基本频率的方波,按输出基本频率的方波,按下按键下按键K2K8,则,则P3.1输出频率依次降低。主程序输出频率依次降低。主程序要根据按键确定要根据按键确定P3.1口的输出频率。口的输出频率。(3)T0的中断入口地址为的中断入口地址为000BH。4
12、.硬件原理与资源分配硬件原理与资源分配硬件原理图如图硬件原理图如图9.2所示。所示。硬件资源分配硬件资源分配P1口为口为8位输入口,外接位输入口,外接8个按键个按键K1K8。R5为方波频率系数。为方波频率系数。R1、R2为延时程序为延时程序DLS中中所用的定时器所用的定时器/计数器。内部计数器。内部RAM61H、62H单元用单元用于暂存键值、方波频率系数。于暂存键值、方波频率系数。图图9.2 方波发生器方波发生器5.参考程序参考程序ORG0000H;CPU起始地址起始地址AJMPMAIN;跳转到主程序跳转到主程序ORG000BH;T0中断入口地址中断入口地址AJMPJT0;跳转到跳转到T0处理
13、程序处理程序MAIN:NOP;主程序段主程序段MOVSP,#40H;设定堆栈设定堆栈MOVA,#0FFH;0FF送送AMOVP1,A;P1口为输入口,初始化口为输入口,初始化P1口口MOVTMOD,#00H;写控制字,写控制字,T0工作方式工作方式0MOVTH0,#06H;设定初始值设定初始值MOVTL0,#00HSETBP3.1SETBTR0;启动启动T0SETBET0;允许允许T0中断中断SETBEA;开总中断,开总中断,EA=1(开放总中断)(开放总中断)LOOP:MOVA,P1;读读P1口口MOV61H,A;保存保存P1口内容口内容JBACC.0,LA1;判断是哪一个档位判断是哪一个档
14、位MOVR5,#01HLJMPLA9LA1:JBACC.1,LA2MOVR5,#02HLJMPLA9LA2:JBACC.2,LA3MOVR5,#03HLJMPLA9LA3:JBACC.3,LA4MOVR5,#04HLJMPLA9LA4:JBACC.4,LA5MOVR5,#05HLJMPLA9LA5:JBACC.5,LA6MOVR5,#06HLJMPLA9LA6:JBACC.6,LA7MOVR5,#07HLJMPLA9LA7:JBACC.7,LA8MOVR5,#08HLA9:MOV62H,R5;R5保存于保存于62HLA8:AJMPLOOP;主程序循环,如果有中断,则转中断处主程序循环,如果有中
15、断,则转中断处理程序理程序JT0:NOP;T0中断处理程序中断处理程序PUSHACC;将将A中数据压入堆栈保存中数据压入堆栈保存CLRET0;关关T0中断中断DJNZR5,TT10;由设定的由设定的R5的值确定输出方波的频率的值确定输出方波的频率CPLP3.1;P3.0输出输出MOVR5,62HTT10:MOVTH0,#06H;重装初始值重装初始值MOVTL0,#00HSETBET0;开开T0中断中断POPACC;恢复恢复ARETI;中断返回中断返回END6.总结与提高总结与提高本实训是应用定时器本实训是应用定时器T0的定时功能,输出的定时功能,输出8种不同频种不同频率的方波。实际应用中,输出
16、方波的频率可能要根据率的方波。实际应用中,输出方波的频率可能要根据要求按某种规律变化,如根据现场测量参数、给定参要求按某种规律变化,如根据现场测量参数、给定参数或按照某函数关系而变化。因此输出波形的频率在数或按照某函数关系而变化。因此输出波形的频率在编程时还是未知的。编程时还是未知的。1.实训目的实训目的掌握定时掌握定时/计数器门控位的使用方法计数器门控位的使用方法掌握脉冲宽度的测量方法掌握脉冲宽度的测量方法2.功能设计功能设计测量测量P3.2口输入的脉冲的宽度。口输入的脉冲的宽度。9.3 外部脉冲宽度的测量外部脉冲宽度的测量3.背景知识背景知识(1)脉冲宽度的测量原理利用定时器计数器方式脉冲
17、宽度的测量原理利用定时器计数器方式寄存器寄存器TMOD中的门控位中的门控位GATE与与INTx引脚的配合引脚的配合使用,可以控制定时器计数器的启动与停止。使用,可以控制定时器计数器的启动与停止。GATE1时,当时,当TRxl(x=0,1),且),且INTx为高电为高电平时,才能启动定时器平时,才能启动定时器Tx计数工作,计数工作,INTx为低电平为低电平时,时,Tx停止计数。停止计数。GATE=0时,只要时,只要TRx1就可以就可以启动定时器,而与启动定时器,而与INTx的输入状态无关。的输入状态无关。利用上述特点,被测脉冲信号从利用上述特点,被测脉冲信号从INT1(P3.3)引入,)引入,脉
18、冲信号上升沿启动脉冲信号上升沿启动T1计数,脉冲信号下降沿使计数,脉冲信号下降沿使T1停止计数。定时器的计数值乘以机器周期即为脉冲宽停止计数。定时器的计数值乘以机器周期即为脉冲宽度。度。(2)定时器工作方式寄存器定时器工作方式寄存器TMOD的设置如书中所的设置如书中所示。示。4.硬件原理与资源分配硬件原理与资源分配硬件原理图如图硬件原理图如图9.3所示。所示。硬件资源分配:硬件资源分配:内部内部RAM60H、61H单元用于保存单元用于保存脉冲宽度对应的机器周期数。脉冲宽度对应的机器周期数。图图9.3 外部脉冲测量电路图外部脉冲测量电路图5.参考程序参考程序ORG0000HAJMPMAINMAI
19、N:NOPMOVSP,#40HMOVTMOD,#90H;写控制字,写控制字,T1工作方式工作方式1MOVTH1,#0H;设定初始值设定初始值00HMOVTL1,#0HLL0:JBP3.3,LL0;等待输入变为高电平等待输入变为高电平SETBTR1;启动启动T1LL1:JNBP3.3,LL1;等待上升沿,以便开始计数等待上升沿,以便开始计数LL2:JBP3.3,LL2;是高电平则计数继续是高电平则计数继续CLRTR1;低电平则停止计数低电平则停止计数MOVA,TL1;读低位计数值读低位计数值MOV60H,A;低位计数值存于低位计数值存于60HMOVA,TH1;读高位计数值读高位计数值MOV61H,A;高位计数值存于高位计数值存于61H;其他程序处理其他程序处理END6.总结与提高总结与提高本实训利用定时器本实训利用定时器/计数器的门控位(计数器的门控位(GATE)测量脉)测量脉冲宽度。被测脉冲宽度范围最大为冲宽度。被测脉冲宽度范围最大为655352s=131ms。定时器定时器/计数器还可用于测量脉冲信号的频率、周期计数器还可用于测量脉冲信号的频率、周期等。如果被测脉冲宽度超过等。如果被测脉冲宽度超过131ms时,应如何处理?时,应如何处理?请读者思考。请读者思考。
限制150内