欢迎来到天天文库
浏览记录
ID:62265137
大小:1.44 MB
页数:38页
时间:2021-04-24
《最新单片机课件第4章.PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机课件第4章.4.1定时器/计数器的结构图4-1定时器/计数器结构图4.1.1定时器/计数器方式控制寄存器TMODTMOD用于控制定时器/汁数器的工作模式及工作方式,其字节地址为80H,格式如下。其中,低4位用于决定T0的工作方式,高4位用于决定T1的工作方式。1.TR1:定时器T1运行控制位。可由软件置1(或清零)来启动(或关闭)定时器T1,使定时器T1开始计数。用指令SETBTR1(或CLRTR1)使TR1置1(或清零)。2.TF1:定时器T1溢出标志位。当定时器T1溢出时,由硬件自动使TF1置1,并向CPU申请中断。CPU响应中断后,自动对TF1清零。TF
2、1也可以用软件查询和清零。3.TF0:定时器T0溢出标志位。功能与TF1相同。4.TR0:定时器T0运行控制位。功能与TR1相同。IE1:外部中断1请求标志位。IT1:外部中断1触发方式控制位。IE0:外部中断0请求标志位。IT0:外部中断0触发方式控制位。4.2定时器/计数器的工作方式4.2.1工作方式0(M1M0:00)定时器/计数器工作在方式0时,16位计数器只用了13位,即THx的高8位和TLx的低5位,组成一个13位定时器/计数器。(x=0或1)C//T=0:定时器工作模式.对内部脉冲(fosc/12)进行计。fosc/12:机器周期。如:fosc=12M
3、Hz时,为1MHzC//T=1:计数器工作模式,对来自Tx引脚的外部输入脉冲进行计数。图4-2定时器/计数器方式0结构框图4.2.2工作方式1(M1M0:01)定时器/计数器工作在方式0时,16位计数器,即THx作为高8位,TLx作为低8位。图4-3定时器/计数器方式1结构框图4.2.3工作方式2(M1M0:10)自动重装初值8位计数器。TLx作为8位计数器,THx用作常数寄存器。TLx计数满产生溢出时,一方面置1溢出标志TFx;另一方面自动将THx中的内容送至TLx,使8位定时器/计数器从所装初值开始更新开始计数。图4-4定时器/计数器方式2结构框图4.2.4工
4、作方式3(M1M0:11)对定时器T0有效。将16位的计数器分为两个独立的8位计数器TH0和TL0。定时器T1只能工作在方式0~2,并工作在不需中断的场合。图4-5定时器/计数器方式2结构框图4.3定时器/计数器对输入信号的要求定时:对机器周期(即12/fosc)计数。精度取决于输入脉冲的周期,因此当需要高分辨率的定时时,应尽量选用频率较高的晶振(MCS-51最高为12MHz)。如:fosc=12MHz时,机器周期1微秒,计数脉冲周期间隔为1微秒,误差为1微秒。fosc=6MHz时,机器周期2微秒,计数脉冲周期间隔为2微秒,误差为2微秒。计数:由于确认一次下跳变要花
5、两个机器周期的时间,因此外部输入的计数脉冲的最高频率为振荡器频率的1/24。且高低电平至少保持一个机器周期。Tcy:一个机器周期4.4定时器/计数器的编程和应用使用定时器/计数器时必须计算计数初值。假设T为定时时间,计数器位数为n,系统时钟频率为fosc,计数初值为x,则它们满足下列关系式:4.4.1方式0的应用【例4-1】利用定时器T0产生1ms定时。由P1.0输出占空比为1:1的周期为2ms的方波信号。(设时钟频率为6MHZ)。1.确定计数初值由于时钟频率为6MHZ,所以,机器周期为:12/fosc=2µst=(213-T0初值)机器周期当t=1ms时,(21
6、3-T0初值)210-6=110-3解得:T0初值=7692=1111000001100B高8位11110000B=0F0H赋给TH0,低5位01100B=0CH赋给TL0。设计程序MOVTMOD,#00H;设定T0的工作方式SETBTR0;启动T0工作LOOP:MOVTH0,#0F0H;给定时器T0送初值MOVTL0,#0CHLOOP1:JNBTF0,$;$为当前指令指针地址CLRTF0CPLP1.0SJMPLOOP4.4.2方式1的应用【例4-2】用定时器T0产生25HZ的方波。由P1.0输出此方波(设时钟频率为12MHZ)。25HZ的方波周期为40ms,
7、可用定时器产生20ms的定时,每隔20ms改变一次P1.0的电平,即可得25HZ的方波。1.确定计数初值由于时钟频率为12MHZ,所以,机器周期为:12/fosc=1µst=(216-T0初值)机器周期当t=20ms时,(216-T0初值)110-6=2010-3解得:T0初值=45536=0B1E0H高8位0B1H赋给TH0,低8位0E0H赋给TL0。2.设计程序MOVTMOD,#01H;设定T0的工作方式1SETBTR0;启动T0工作LOOP:MOVTH0,#0B1H;给定时器T0送初值MOVTL0,#0E0HLOOP1:JNBTF0,$;$为当前指
此文档下载收益归作者所有