设计基础定时计数器

上传人:hao****an 文档编号:253008210 上传时间:2024-11-27 格式:PPT 页数:21 大小:407KB
返回 下载 相关 举报
设计基础定时计数器_第1页
第1页 / 共21页
设计基础定时计数器_第2页
第2页 / 共21页
设计基础定时计数器_第3页
第3页 / 共21页
点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,3.3 51 单片机定时器/计数器,3.3.1 定时/计数器的工作原理,计数或定时,规定:,识别一个从“1”到“0”的跳变至少要花两个机器周期。,当然,最大计数频率为晶振频率的1/24。对外部输入脉,冲宽度的要只有低限,即输入脉冲的低电平和高电平的宽,度至少都应保持一个机器周期,多者不限。,这里需要注意的是:加法计数器是计满溢出时才申请中,断,所以在给计数器赋初值时,不能直接输入所需的计数,值,而应输入的是计数器计数的最大值与这一计数值的差,值。设最大值为M,计值为N,初值X的计算方法如下:,计数状态:X=M-N,定时状态:X=M-定时时间T ,而T=12晶振频率。,3.3.2,定时/计数器所用到的寄存器,3.3.3 定时/计数器的控制,一、定时器/计数器的设置,1)工作方式寄存器TMOD的设置,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。如要求计数值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,故只要在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。,先介绍定时的算法,再用程序说明,已知:,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_numb ;判断是否到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,#00h ;将中断全部关掉?,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】,TH0=0X6f; /装T0 定时常数,TL0=0Xff; /,TR0=1;,void To_int(void) interrupt 1 /T0中断入口函数,TH0=0x6f; /装T0定时常数,TL0=0xff;,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)。,【相关程序见教材】,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!