




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、STC89C52定时器/计数器的使用一、寄存器数据寄存器TLx山(8AH,8BH,不可位寻址,复位清0)8位寄存器,保存计数值的低8位。THx(8CH,8DH,不可位寻址,复位清0)8位寄存器,保存计数值的高8位。工作原理:计数时,从TL开始加1计数,计满后想TH进位,直至TH溢出,置TF标志,然后申请中断,CPU进行中断处理。2.模式选择寄存器TMOD(89H,不可位寻址,复位清0)76543210GATEC/TMlMO|GATE|C/T|Ml|MO/定时器1定时器0高4位用于控制定时器1,低4位用于控制定时器0;GATE门控制位=0,TC的启停仅由寄存器TCON中的TRx控制;=1.TC的
2、启停由外部中断引脚的电平状态和TCON中的TRx共同控制。C/T一模式选择位=0,定时器,对内部机器周期计数;=1.计数器,对外部输入计数(由Tx引脚输入);注意:计数模式下,从采样到计数值更新需要2个机器周期(共24个时钟周期),因此,时钟频率为fMHz时,最高计数频率为V2fMHZoM1M0工作方式选择位=00,方式0,13位,TH全用,TL低5位;=01,方式1,16位,TH,TL全用;=10,方式2,8位自动重装载定时器,当溢出时将TH存放的值自动重装入TL:=11,方式3,仅适用于T0。定时器0此时作为双8位TC。TLO作为一个8位TC,通过标准定时器0的控制位控制。THO仅作为一个
3、8位定时器,由定时器1的控制位控制。T1停止计数。注意:在方式2中,计数溢出后,CPU会自动将THx中的值装入TLx。因此,在定时器启动前,在THx和TLx中装入的初值必须是相同的,以保证计数的准确性。3.控制寄存器TCON(88H,可位寻址,复位清0)位符号TF1TRITFOTROIE1IT1IE0ITO位地址8FH8EH8DH8CH8BH8AH89H88H高位在前。后4位用于外部中断。TFxTx溢出标志位Tx计数溢出时,裟件置1,并申请中断。进入中断服务子程序后,硬件自动清零。如呆不使用定时器中断,而采用软件查询的方法,则需要软件清零。TRxTx运行控制位置0时,关闭Tx。当GATE=0时
4、,TRx=l,启动Tx:当GATE=1时,TRx=l且INTx时,启动Tx。IEx外部中断x请求标志接收到外部中断后置1,中断响应后,硕件清零。ITx中断触发方式选择位ITx=O,引脚INTx上低电平触发中断;ITx=l,引脚INTx上下降沿触发中断。注意:釆用低电平触发方式时,低电平必须持续到该中断被CPU响应,同时在该中断服务程序执行完之前,外部中断源必须被清除(INTx要变高电平),否则将产生另一次中断。4.中断使能寄存器IE(A8H,可位寻址,复位清0)STC89C52中断使能寄存器IE:位符号EAReservedET2ESET1EX1ETOEXO位地址AFHADHACHABHAAHA
5、9HA8H高位在前。所有位均是置1开中断,置0关中断。EA全局中断(总中断)使能位ETxTCx中断使能位ES串行口中断使能位EXx外部中断x使能位注意:使能某一中断时,必须将EA置loET2为52系列所有,51系列没有TC2。5.中斷优先级寄存器IP(B8H,可位寻址,服务清0)STC89C52中断优先级寄存器IP:位符号ReservedReservedReservedPSPT1PX1PTOPXO位地址BCHBBHBAHB9HB8H所有位均是置1为高优先级,置0为低优先级。PS串行口中断优先级控制位PT1TC1中断优先级控制位PX1外部中断1优先级控制位PTOTCO中断优先级控制位PXO外部中
6、断0优先级控制位同优先级的中断请求,按默认顺序响应。【说明】本文里类似的x均可取值为0或1。TC指Timer/Counter,即定时器/计数器。机器周期是单片机的基本操作周期,一个机器周期内单片机完成一项基本操作,如取指等。一个机器周期包含12个时钟周期。时钟周期是时钟频率的倒数。T0对应引脚P3.4,T1对应P3.5。INTO对应P3.2引脚,INT1对应P3.3引脚。二、定时器的使用由于定时器都是由初值计数直至溢出,因此最重要的就是设置计数器的初值。假设需要定时器产生一次中断的事件为t,计算初值的步骤如下:计算机器周期:Tm=12XTT为时钟周期,是时钟频率的倒数。计算需要计数的个数:需要
7、计数的个数为:N=t/Tm装填数据寄存器:方式0(13位):THx=(213-N)/25,TLx=(213-N)%25方式1(16位):THx=(216-N)/28,TLx=(216-N)%28实际的初值即为2n-N(n为定时器位数),只需将其放入TH和TL中即可。对TL计数范围取模即为TL的初值;对其取整,则为TH的初值。编程时的步骤:写定时器程序时,需要对定时器及中断寄存器进行初始化,过程如下:设置TMOD,以确定Tx的工作方式;计算初值,并将初值写入TH和TL;允许中断,如果使用中断方式,需要对寄存器IE中的位进行赋值;置位TRx,启动定时或计数。三、中断服务子程序STC89C52单片机
8、的中断级别及中断向量表中断源默认中断级别中断号(C语言用)入口地址(汇编用)INTO外部中断0最高00003HTOTC0中断第二1OOOBHINT1外部中断1第三20013HTlTC1中断第四3OO1BHTI/RI串行口中断第五40023HT2定时器2中断最低5OO2BHC51的中断函数格式如下:voidfunctionName()interruptInterruptNumusinggroupNum黑体为关键字,斜体为可编辑项,方括号内的为可选项。函数名(functionName)可以是任何合法的标识符。中断号(InterruptNum)是编译器识别不同中断的唯一标识,一定不能有误。工作组(g
9、roupNum)指示这个中断函数使用单片机内存中4组工作寄存器中的哪一组,由于编译器会自动分配,常省略不写。可以在中断函数中为定时器重装初值,这样,就可以实现间隔一定时间的中断。这种方法会出现累积误差,减小误差的有效方法是使用方式2,即初值自动重装的定时器方式。注意,中断函数中一定不要写过多的处理语句,否则当前中断尚未处理完,下一次中断又会到来,这样就会丢失中断。因此,中断服务子程序要高效、简洁。能在主程序中完成的操作不要在中断函数中完成。注:定时器的溢岀率指该定时器溢出的频率,是两次计数溢出相差时间的的倒数。四、例程可将以下代码直接复制到c文件中。#include/STC89C52#defi
10、neuintunsignedint#defineucharunsignedcharuchartemp;需要显示的数值,用于分解为百位、十位、个位数字的原始数值;ucharnum;计时辅助变量;ucharbai;百位数字;ucharshi;十位数字;ucharge;个位数字;sbitdula=P2A6;sbitwela=P2A7;段选锁存器的使能位;位选锁存器的使能位;ucharcodetable=数码管编码表(三个数码管均接到POII),code型占用程序空间,不会占用内存空间;Ox3f,0 x06,0 x5b,0 x4f,0 x66,0 x6ct0 x7cL0 x07,0 x7f,0 x6f
11、,0 x77z0 x7cz0 x39,0 x5e,0 x79,0 x71;voiddisplay(uchar/uchar/uchar);voiddelay_ms(uint);voidinit();voidmain()init();初始化子程序while(l)if(num=20)/num=20时,已过去了20*50ms=ls时间(12MHz),即每秒执行一次下面的程序;num=0;/num清零,重新计时;temp+;if(temp=120)temp=0;在000-119轮流显示;bai=temp/100;shi=temp%100/10;ge=temp%10;将3位整数分解成3个单独的数字;dis
12、playfbaihhge);延迟Ims,12MHzfuI*voiddelay_ms(uintxms)/unsignedint为16位整数,因此参数xms的值最人为65535:uinti,j;tor(i=xms;i0;i-)for(j=250;j0;j-);*4c*4c*数码管动态显示函数*voiddisplay(ucharbai,ucharshizucharge)/*在第一个数码管上显示百位数字*/dula=l;PO=tablebai;dula=0;PO=Oxff;造成乱码显示:wela=l;P0=0 xfe;wela=0;delay_ms(l);段选锁存器直通;送段选数据,百位数据;段选锁存
13、器锁存;消影”,避免打开位选时,位选数据受之前段选数据的影响,位选锁存器直通;送位选数据:Oxfe表明选中第一个数码管;位选锁存器锁存;在第二个数码管上显示十位数字*/dula=l;PO=tableshi;dula=0;PO=Oxff;wela=l;PO=Oxfd;wela=0;delay_ms(l);送十位数据:打开第二个数码管;在第三个数码管上显示个位数字*/dula=l;PO=tablege;dula=0;PO=Oxff;wela=l;PO=Oxfb;wela=0;送个位数据:打开第三个数码管;delay_ms(l);*/彳丿丿始彳匕pKljiut*wela=O;dula=O;temp=O;初始化数码管;/杠定时器初始化*/TMOD=0 x01;模式选择;TO、T1均为定时器,T1为方式0(13位,实际本程序未使用Tl),TO为方式1(16位);TH0=(65536-50000)/256;TL0=(65536-50000)%256
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园心理健康教育实施及计划
- 2025年餐饮行业食品安全监管与食品安全监管政策完善建议与实践报告
- 数字化营销赋能食品饮料行业:2025年电商运营渠道创新与品牌建设策略研究报告
- 九年级北师版数学下阶段重点难点计划
- 房地产区域分化趋势下2025年内蒙古赤峰地区投资策略分析报告
- 外科医疗设备2025年采购计划
- 2025年餐饮业绿色餐饮品牌建设与传播报告
- 2025年天然气加气站分布调整与社区和谐稳定性的关联性研究报告
- 教育行业质量评估与认证体系:2025年教育评价与教育评价体系跨区域机遇研究报告
- 共享办公空间增值服务行业竞争格局深度分析报告2025
- 昆虫生态学 第三章种群生态学课件
- 2025届天津市和平区第二十中学数学八下期末复习检测模拟试题含解析
- (五调)武汉市2025届高三年级五月模拟训练语文试卷(含答案详解)
- 政府委托经营协议书
- 江苏省南通市通州区、如东县2025届九年级下学期中考一模化学试卷(含答案)
- (高清版)DG∕TJ 08-2243-2017 市属高校建筑规划面积标准
- 良渚文化课件
- 股权无偿划转协议书
- 食品配送服务质量保障措施
- (统编2024版)七下语文期末专题总复习课件(共6个专题)新教材
- 【MOOC答案】《电力电子学》(华中科技大学)章节作业期末慕课答案
评论
0/150
提交评论