第3章51设计基础定时计数器3培训资料

上传人:yuzo****123 文档编号:141183167 上传时间:2020-08-05 格式:PPT 页数:21 大小:622.50KB
返回 下载 相关 举报
第3章51设计基础定时计数器3培训资料_第1页
第1页 / 共21页
第3章51设计基础定时计数器3培训资料_第2页
第2页 / 共21页
第3章51设计基础定时计数器3培训资料_第3页
第3页 / 共21页
第3章51设计基础定时计数器3培训资料_第4页
第4页 / 共21页
第3章51设计基础定时计数器3培训资料_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《第3章51设计基础定时计数器3培训资料》由会员分享,可在线阅读,更多相关《第3章51设计基础定时计数器3培训资料(21页珍藏版)》请在金锄头文库上搜索。

1、3.3 51 单片机定时器/计数器,3.3.1 定时/计数器的工作原理,计数或定时规定: 识别一个从“1”到“0”的跳变至少要花两个机器周期。 当然,最大计数频率为晶振频率的1/24。对外部输入脉 冲宽度的要只有低限,即输入脉冲的低电平和高电平的宽 度至少都应保持一个机器周期,多者不限。 这里需要注意的是:加法计数器是计满溢出时才申请中 断,所以在给计数器赋初值时,不能直接输入所需的计数 值,而应输入的是计数器计数的最大值与这一计数值的差 值。设最大值为M,计值为N,初值X的计算方法如下: 计数状态:X=M-N 定时状态:X=M-定时时间T ,而T=12晶振频率。,3.3.2 定时/计数器所用

2、到的寄存器,2)控制寄存器TCON的设置 控制寄存器TCON用于控制定时器的启动、停止和中断请求。,其中,TCON的低4位与中断有关,已经作过介绍。 高4位含义如下: TF0、TF1分别是T0、T1的溢出标志位。 TR0、TR1分别是T0、T1的运行控制位, 必须由软件置1或清0。 当TR0(或TR1)置1后,对应T0或T1才开始工作;当TR0或(TR1)清0后,对应定时器/计数器停止工作;在系统复位时TR0或(TR1)被清0。,一、定时/计数器的工作模式(M1,M0),1)模式0 【M1,M0=00,13位】,13位初值的高8位赋值给TH0,低5位数前面加3个0凑成8位之后赋 给TL0。如要

3、求计数值N为1000,则初值X为: XM10008192100071921C18H(或11100,00011000B) 其二进制的高8位是:11100000B,低5位是11000B,因此赋初值时 TH0E0H,TL018H。 2)模式1【M1,M0=01,16位】,如要求计数值N为1000,则初值X为: XM100065536100064536FC18H,因此 赋初值时TH0FCH,TL018H。 3)模式2【M1,M0=10,8位重装式】 这种方式绝大部分将T1用于串口波特率发生器。,如希望每隔250s产生一个定时控制脉冲,若晶振频率为12MHz, 此时计数初值XMN25625016,故只要

4、在TH0,TL0(或 TL1,TH1)中预置初值6。 4)模式3【M1,M0=11,T0被设成两个8位),定时器/计数器0设为模式3时,TH0控制了T1的中断,而T1只能 用于不需要中断的各种场合(可设置为模式02中的一种),如用 作不使用中断的“定时器”、“计数器”和串行口的波特率发生 器。 通常,当T1用作串行口波特率发生器时,T0才定义为方式3,以 增加一个8位计数器。 在用作波特率发生器时,T1被设置成模式02时的逻辑结构:,参考下图:,三、8052定时/计数器2的设置,四、 定时/计数器的应用,例一由T0产生秒信号,在P1.0 输出(发声)。设:晶振频率:22.1184M。 先介绍定

5、时的算法 再用程序说明 已知: 1个机器周期=12个时钟(振荡)周期,时间常数的算法,1个机器周器的时间:12/22.1184M=0.5425微妙 定时一秒,从P1.0输出,需25个20ms=500ms 反转一次,这样,20ms的次数是: N(次数)=20毫秒/0.5425微妙36866D 用16位定时,T0初值=65536-36866 =28670D=6FFFH ,即:TH0=6FH,TL0=FFH 用s_numb记次数需25次。 (先用汇编编写,后用C编程如下:),to_t0: ;中断程序 mov th0,#6Fh ;重新装入常数 mov tl0,#0FFh clr c mov a,s_n

6、umb ;判断是否到25次? subb a,#01h ;总次数减一 mov s_numb,a jnc no_to1s ;无减完退出! mov s_numb,#25 ;减完,需重新置次数. cpl speak ;发声 no_to1s: reti ;返回到主程序,T0中断相应主程序,s_numb equ 30H ; 20ms的次数(25x20=500ms) speak bit p1.0 ;蜂鸣器 org 0000h ljmp main ;复位入口 org 000bh ; ljmp to_t0 ;T0定时器入口 org 0100h .,main: mov sp,#60h ;设堆栈 mov ie,#0

7、0h ;将中断全部关掉? mov tmod,#00100001b ;T1为8位重装(0010b为波特率) ; T0为16位定时器 (0001b) mov th0,#6Fh mov tl0,#0FFh mov s_numb,#25 ; (25x20=500ms)设25次 setb speak ;关蜂鸣器 setb ea ;开总中断 setb et0 ;开T0中断 setb tr0 ;T0开始计数 loop: sjmp loop ;循环等待中断 end ;整个程序结束,用C编的20ms函数,void out_t0(void) /定时器T0初始化 TMOD=0X21; /【mov tmod,#21H

8、】 TH0=0X6f; /装T0 定时常数 TL0=0Xff; / TR0=1; ,void To_int(void) interrupt 1 /T0中断入口函数 TH0=0 x6f; /装T0定时常数 TL0=0 xff; s_numb=s_numb-1; /到25次吗? If (s_numb=0) speak= speak; /取反“发声” s_numb=25; ,sbit speak=P10; /蜂鸣器 unsigned char s_numb; /全局变量 void main (void) /主函数 out_t0(); /定时器初始化 s_numb=25; /设置次数 “25” ET0=1; /开T0中断 EA=1; /开总中断 while(1); /等待发声 ,【例2】利用T0确定引脚上出现的正脉冲的宽度。 在外部中断0为上升沿时,自动开始定时。在下降沿时 产生中断,关掉T0(TR0=0),读数(TH0,TL0)。 【相关程序见教材】,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号