




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
定时计数器原码工作室8051定时/计数器概述 8051单片机片内有二个十六位定时器/计数器:定时器0(T0)和定时器1(T1)。都有定时或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。
2个16位定时器实际上都是16位加1计数器。T0由2个8位持殊功能寄存器TH0和TL0构成,T1由TH1和TL1构成。每个定时器都可由软件设置为定时工作方式或计数工作方式。这些功能都由特殊功能寄存器TMOD设置和TCON所控制。定时/计数器的结构 定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。定时/计数器的工作原理 加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。
设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。
设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2s。定时/计数器的控制 80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。 GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动条件,加上了或引脚为高电平这一条件。
:定时/计数模式选择位。=0为定时模式;=1为计数模式。 M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。控制寄存器TCON
TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样.TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同.TR0(TCON.4):T0运行控制位,其功能与TR1类同。定时/计数器的工作方式 一、方式0 方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。
定时器模式时有:N=t/Tcy 计数初值计算的公式为: 定时器的初值还可以采用计数个数直接取补法获得。 计数模式时,计数脉冲是T0引脚上的外部脉冲。
门控位GATE具有特殊的作用。当GATE=0时,经反相后使或门输出为1,此时仅由TR0控制与门的开启,与门输出1时,控制开关接通,计数开始;当GATE=1时,由外中断引脚信号控制或门的输出,此时控制与门的开启由外中断引脚信号和TR0共同控制。当TR0=1时,外中断引脚信号引脚的高电平启动计数,外中断引脚信号引脚的低电平停止计数。这种方式常用来测量外中断引脚上正脉冲的宽度。方式1 方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。
计数个数与计数初值的关系为:方式2方式2为自动重装初值的8位计数方式。计数个数与计数初值的关系为:工作方式2特别适合于用作较精确的脉冲信号发生器。方式3 方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。 工作方式3将T0分成为两个独立的8位计数器TL0和TH0。定时器/计数器对输入信号的要求 外部计数脉冲的最高频率为系统振荡器频率的1/24,例如选用12MHz频率的晶体,则可输入500KHz的外部脉冲。 输入信号的高、低电平至少要保持一个机器周期。如图所示,图中Tcy为机器周期。定时/计数值的设置 16位定时/计数器计满65536个脉冲时,也会发生溢出。 定时/计数器溢出后标志位TF0(或TF1)由0变1,由此能够引发定时中断(在中断定时方式下),这就像定时的时间一到,闹钟就会响一样。 如果采用12MHz的晶振,对应的脉冲周期是1微秒,计满65536个脉冲所对应的时间就是65.536ms。 计数器的道理是一样的,只要用预置数的方法先在计数容器内存入一个初值,如我们要计100,那就存入65436,只要再来100个脉冲,就刚好会溢出,引发中断。定时器初值的设置 在时钟频率为12MHz的情况下,每个时钟脉冲是1微秒,则计满65536个脉冲需65.536毫秒,如要定时10毫秒则存入初值55536,(10毫秒是10000微秒,需计数10000个脉冲)。可见,
定时器的定时时间长短与系统时钟和定时器初值有关。定时器/计数器初值计算 定时器/计数器用于定时或计数时,必须按照需要给计数器设置初值。定时器/计数器在计数初值的基础上以加1的方式进行计数,在计数器从全1变为全0时,将自动产生溢出中断请求。(1)计数初值计算 假设要计数的值为X,由于计数器是加工计数器,所以定时器/计数器的初值为2-X: 其中n的值依赖于工作方式, 对于方式0,n=13;即初值=8192-X
对于方式1,n=16;即初值=65536-X
对于方式2和方式3,n=8;即初值=256-X 2)定时初值计算定时就是定时间,假设晶振频率为f,定时时间为T,对应的计数值为X,此时计数器是将系统时钟12分频后作为计数脉冲,则以下等式成立。要装入的计数器初值CI=2-T·fosc/12。例如:已知晶振的频率为6MHz,要求定时为2ms,则 当为方式0时,应装入的计数初值为;
8192-2×10×6×10/12=8192-1000=7192 定时时间常数初值X: 方式0X=8192-T(fosc/12)
方式1X=65536-T(fosc/12)
方式2、方式3X=256-T(fosc/12)
其中T是需要定时的时间,单位是微秒;fosc是晶振
计数时间常数X: 方式0X=8192-S
方式1X=65536-S
方式2、方式3X=256-S
说明:式中S是需要计数的次数定时器/计数器初始化步骤
1)确定工作方式:把工作方式控制字写入到TMOD中;
2)设置定时或计数的初值:根据问题要求,求出定时或计数的初值,写入到寄存器THO、TLO或THI、TLI中。
3)如果需要中断,使定时器中断允许位ET0或ETI置位,如果要求中断嵌套,还应设置相应的中断优先级,然后置位EA,使CPU开放中断;如果不需要中断,仅以软件方式对计数器溢出标志TFO或TFI进行查询,则可略去此步骤;
4)启动定时器/计数器:将TRO或TRI置1即可启动定时器/计数器。秒表实验 本实验要求实现秒表即时功能,且具有暂停功能; 秒表的基本原始是利用定时器的定时功能,实现精确定时。本次试验采用定时器0的方式1进行定时,暂停功能采用按键接到外部中断0实现。初值设定为1000,这样进入定时器中断1000次即是1s。所以处置设定为
TH0=(65536-1000)/256;TL0=(65536-1000)%256;
voidmain(){ IE=0x83;//开总中断定时器0外部中断0 TCON=0x01; //外部中断0边缘触发
TMOD=0x01;//采用方式1 TR0=0;//先关闭定时器等待按键按下才启动定时器开始计数
TH0=(65536-1000)/256;//高八位
TL0=(65536-1000)%256;//低八位
while(1) { disp(); }}voidint0()interrupt1{ TH0=(65536-1000)/256;//高八位
TL0=(65536-1000)%256;//低八位
x++; if(x==10) { x=0; ms++; if(ms==100) { ms=0; s++; if(s==60) { s=0; min++; if(min==99) { min=0; } } }}}voidmy_int()interrupt0{ if(key==0) //如果按键按下
{ delay_ms(5);//消抖 { if(key==0) //如果按键按下
{ disp(); //保存原来的显示状态
TR0=~TR0; //定时器取反
} } }}音乐演奏实验 本实验是利用蜂鸣器和单片机演奏世上只有妈妈好的音乐。用蜂鸣器演奏音乐的基本原理是不同的音调有不同的频率,所以先将不同的音阶用频率表示,然后将世上只有妈妈好的曲子用音阶表示,用数组存储,再用定时器定出基准频率就可以通过取数组中的数据是蜂鸣器演奏有节奏的曲子。
//音阶频率表高八位codeunsignedcharFREQH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,//1,2,3,4,5,6,7,8,i0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,};//音阶频率表低八位codeunsignedcharFREQL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,//1,2,3,4,5,6,7,8,i0xEE,0x44,0x6B,0xB4,0xF4,0x2D,0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};codeunsignedcharsszymmh[]=//世上只有妈妈好数据表{ 6,2,3,5,2,1,3,2,2,5,2,2,1,3,2,6,2,1,5,2,1,6,2,4,3,2,2,5,2,1,6,2,1,5,2,2,3,2,2,1,2,1, 6,1,1,5,2,1,3,2,1,2,2,4,2,2,3,3,2,1,5,2,2,5,2,1,6,2,1,3,2,2,2,2,2,1,2,4,5,2,3,3,2,1,2,2,1,1,2,1,6,1,1,1,2,1,5,1,6,0,0,0};/*********************定时器中断函数***********/voidt0int()interrupt1{ TR0=0; speaker=!speaker; TH0=timer0h; TL0=timer0l; TR0=1;}/**
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB31/T 329.2-2018重点单位重要部位安全技术防范系统要求第2部分:危险化学品、放射性同位素集中存放场所
- DB31/T 1331-2021区块链技术安全通用要求
- DB31/T 1125-2018电梯企业应急处置服务平台通用要求
- DB31/T 1001-2016上海地区主要食用鱼品种的分子鉴定
- 贵金属矿选矿环境影响评价考核试卷
- 2024年PP-R再生料资金申请报告代可行性研究报告
- 故事代替道理:《为什么要练字》
- 信息安全与网络架构试题及答案
- 食品饮料商标注册代理服务合同
- 生物质能企业增值税留抵退税专项政策辅导与执行合同
- 网络协议2025年考试试题及答案
- 数据投资、数据共享与数据产权的法律问题探讨
- 2025年城市管理执法考试试卷及答案
- 2025年网络舆情监测与危机应对考试题及答案
- 2025年数据工程师考试试题及答案分享
- 网络与信息安全管理员考试题+参考答案解析
- 2025年中考语文常考作文押题《10个主题+15篇范文》
- 2025年《中央一号文件》参考试题库资料100题及答案(含单选、多选、判断题)
- 门诊手术麻醉原则课件
- 自动喷水灭火系统质量验收项目缺陷判定记录
- 提高肠镜患者肠道准备合格率课件
评论
0/150
提交评论