下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2.3定时器应用之定时器闪烁LED灯(不含中断)2.3.1 STC15L104E定时器简介定时器具有计数功能,拿16位定时器0来举例,它产生溢出时候的位是216(65536),那么我们如果要定时器定时a,我们就要向定时器里存65536-a。很多人不明白定时器到底是怎么回事,我们把定时器比喻为一个水桶,满水(65536)就溢出,我们想定时器a个数就相当于我们想向水桶里放入a水后水桶就溢出,那么水桶里原来存的水就是65536-a。这就是定时器。STC15L104E内部设置了两个16位定时器/计时器T0和T1,它们都有计数方式和定时方式两种工作方式。定时还是计数由TMOD寄存器的C/T决定,置1计数
2、器,置0定时器。TMOD寄存器如图 2.31所示。定时器/计数器的核心部件是一个加法计数器,其本质是对脉冲进行计数。脉冲来源系统时钟则采用定时方式,此时定时器每12个时钟或者1个时钟得到一个计数脉冲,计数值加1;脉冲来源单片机外部引脚(T0为P3.4,T1为P3.5)则为计数方式,每来一个脉冲加1。定时器/计数器的工作模式由TMOD寄存器的M1、M0决定,定时器/计数器工作模式寄存器TMOD,它控制两个定时器的工作模式,高4位控制定时器1,低四位控制定时器0。如图 2.31所示。图 01 TMOD寄存器当定时器/计数器工作在定时模式时,AUXR寄存器的T0x12和T1x12分别决定系统时钟是1
3、2分频还是1分频。AUXR寄存器如图 2.32所示。当定时器/计数器工作在计数模式时,对外部脉冲不分频。图 02 AUXR寄存器与定时器/计数器相关的寄存器还有TL0、TL1、TH0、TH1、TCON和INT_CLKO寄存器。TL0/1、TH0/1分别为定时器0/1的低位和高位。TCON寄存器是定时器/计数器的控制寄存器,同时也锁存T0、T1溢出中断源和外部请求中断源等,TOCN寄存器如图 2.33所示。图 03 TCON寄存器图 04 INT_CLKO寄存器INT_CLKO寄存器的0位和1位控制定时器。如图 04所示。0位T1CLKO置1将P3.4/T0管脚配置为定时器1时时钟输出CLKOU
4、T1,置0不允许P3.4/T0管脚配置为定时器1时时钟输出。1位T0CLKO置1将P3.5/T1管脚配置为定时器0时时钟输出CLKOUT0,置0不允许P3.5/T1管脚配置为定时器0时时钟输出。硬件连接原理详情请参见Error! Reference source not found.,本章节不做介绍。原工程详解打开计时器无中断控制小灯亮灭的工程,方法Error! Reference source not found.中第一段讲过。定时器控制小灯,我们自然要用到定时器,原理部分我们已经深入的了解了定时器,下面我们就将程序和原理结合吧。a. #include <reg51.h>sbit
5、 BEEP =P34;sfr AUXR = 0x8E; / AUXR寄存器的地址为0x8eunsigned int count=0;void Delay_mS(unsigned int time);首先是加头文件(#include <reg51.h>),定义位BEEP为P3.4(sbit BEEP =P34;),(sfr AUXR = 0x8E;)定义寄存器AUXR(它的地址是0x8E,见图 02),这些上一章都讲解过,详情请见Error! Reference source not found.。定义寄存器的这一语句后面多了个“/ AUXR寄存器的地址为0x8e”,这个是一条注释,
6、就是为了解释同行的语句,即解释前面的sfr AUXR = 0x8E; ,注释的写法为/要注释的内容,也可写成/*要注释的内容*/。接下来是声明了一个变量并赋初值0(unsigned int count=0;),此变量count为无符号整型变量。最后声明了一个子函数(void Delay_mS(unsigned int time);),子函数的写法为“ 返回值数据类型 函数名(参数类型 参数); ”千万不能忘记加“;”。b. void TIM0_init(void)/20us 11.0592MHz AUXR = 0xdf; /定时器0为1T模式 TMOD = 0x00; /设置定时器为模式0/(
7、16位自动重装载)TL0 = 0x22;/设置定时初值TH0 = 0xFF;/设置定时初值 TR0 = 1; /定时器0开始计时上面这段程序是定时器初始化子函数,子函数的写法是 返回值类型 子函数名称 (参数类型 参数)执行的内容,我们注意到子函数的写法和声明子函数的写法有些类似,是将声明子函数最后的“;”去掉并加上。子函数中首先是对AUXR寄存器赋值0xdf,对照图 02,我们知道7、6位都置1了说明我们对定时器0不分频。对TOMD寄存器赋初值0x00,对照图 01我们可知定时器0采用了16位自动重装的工作方式。接下来是对定时器赋初值,我们赋值0xff22,将低位赋给TL0高位赋给TH0。对
8、于定时器的赋值,我们前面已经讲过“水桶”的原理,具体怎么做呢,比如我们想让定时器定时20us(时钟震荡(时钟频率为11.0592MHZ)一次定时器定时一位,定时一位的时间就为1/11.0592us,定时器总共有216位,所以定时器总共定时的时间为65536/11.0592=5926us,定时时间不能超过5926us),20us对应的位是221位(20/(1/11.0592),那么我们就要向定时器里存65535-221=65314=0xff22位(转化为16进制),定时器里能存65536个数为什么减法中编程了65535呢,这是因为定时器定时的第一位是从0开始的,到65536就溢出了。最后开启定时
9、器0允许位,寄存器详情请见图 03。c. void main() /主函数 while(1) TIM0_init(); if(TF0)count =count+1;TF0=0; while(count=1000) count=0 ; TR0 = 0; BEEP=BEEP;上面这段代码就是主函数了,首先是一个while语句,while()中的为条件,为1就执行内部代码,条件为0就跳出while语句,此处为1,说明主函数一直在执行while里面的程序,直到给单片机断电。接下来我们看while里面的程序,首先调用定时器0初始化子函数,调用方法是直接在主函数中写出声明函数,可以将返回值省去,但是参数没
10、有的时候省略,此处就省略,有参数的时候一定要加参数,遇到实例时再讲解。接下来是if语句,if(),()中的为条件,条件为真(即为1),执行if中的语句,条件为假就执行后的语句,“if(TF0)”TF0是定时器0的溢出位(TCON寄存器详见图 03),定时器定时一周溢出了,溢出位TF0就为1,当我们定时20us后TF0就为1,我们就执行count =count+1;TF0=0;,count加1,将溢出位TF0赋值0。继续看下面的代码,当count=1000的时候(注意=为赋值,=为等于),才执行while里面的语句,也就是定时器定时了1000次(20000us),我们就将count重新赋值0,关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国冶金地质总局矿产资源研究院2026年高校毕业生招聘备考题库及参考答案详解
- 2025年盐山辅警招聘真题及答案
- 2025四川成都中医药大学第三附属医院招聘6人考试核心题库及答案解析
- 2025河南黄淮学院招聘高层次人才89人考试核心试题及答案解析
- 2025年中山大学孙逸仙纪念医院深汕中心医院放射科影像专科合同医技岗位招聘备考题库带答案详解
- 2025年甘肃省兰州市心连心社会工作服务中心招聘笔试重点试题及答案解析
- 2025中铁西北科学研究院有限公司评估中心招聘备考核心试题附答案解析
- AI城市智慧医疗布局在高中城市规划健康教学中的应用课题报告教学研究课题报告
- 2025中财科创绿色金融研究院招聘备考笔试题库及答案解析
- 2025招商银行上海分行社会招聘笔试重点题库及答案解析
- 数字藏品(NFT)研究报告
- 电气试验标准化作业指导书
- 六年级数学 计算能力分析
- 套管外光缆下井保护器
- 文物保护学概论课件ppt 第一章 文物与文物学
- GB/T 2879-2005液压缸活塞和活塞杆动密封沟槽尺寸和公差
- GB/T 2423.22-2012环境试验第2部分:试验方法试验N:温度变化
- 安全教育教案课程全集
- 饲料生产许可证试题
- 第二单元整体教学设计-部编版语文八年级上册
- 规培医院教学查房规范教案资料
评论
0/150
提交评论