用定时器T0的模式1实现长时间定时.doc

用定时器T0的模式1实现长时间定时.doc

ID:56757322

大小:16.50 KB

页数:2页

时间:2020-07-07

用定时器T0的模式1实现长时间定时.doc_第1页
用定时器T0的模式1实现长时间定时.doc_第2页
资源描述:

《用定时器T0的模式1实现长时间定时.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、定时器T0的模式1实现长时间定时使用定时器T0的中断来控制P2.0引脚LED的闪烁,要求闪烁周期2s,即亮1s,灭1s。本例采用的电路原理图如图6-2所示。1.实现方法定时器T0工作于方式1时,其最大可计脉冲数次数为65536,对于12MHz的时钟频率,一个脉冲的宽度为1.00μs,则最大计时长度只有1.00×65536=65536μs,即大约65ms。所以要计时1s或更长的时间,还需采用一种被称作“软件计数”的方法:设置一个变量Countor来储存定时器T0的中断次数,即每产生1次中断,使变量Countor自加1,如果T0每50

2、ms中断1次,那么当Countor自加20次时,所计时间就是1s。2.程序设计先建立文件夹“CHANG”,然后建立“CHANG”工程项目,最后建立源程序文件“CHANG.c”。输入以下源程序://实例46:用定时器T0模式1的实现长时间定时#include//包含51单片机寄存器定义的头文件sbitD1=P2^0;//将D1位定义为P2.0引脚unsignedcharCountor;//设置全局变量,储存定时器T0中断次数/*********************************************

3、*****************函数功能:主函数**************************************************************/voidmain(void){EA=1;//开总中断ET0=1;//定时器T0中断允许TMOD=0x01;//使用定时器T0的模式1TH0=(65536-50000)/256;//定时器T0的高8位赋初值TL0=(65536-50000)%256;//定时器T0的低8位赋初值TR0=1;//启动定时器T0Countor=0;//从0开始累计中断次数while

4、(1)//无限循环,等待中断;}/**************************************************************函数功能:定时器T0的中断服务程序**************************************************************/voidTime0(void)interrupt1using0//“interrupt”声明函数为中断服务函数{Countor++;//中断次数自加1if(Countor==20)//若累计满20次,即计时满1s{D1

5、=~D1;//按位取反操作,将P2.0引脚输出电平取反Countor=0;//将Countor清0,重新从0开始计数}TH0=(65536-50000)/256;//定时器T0的低8位重新赋初值TL0=(65536-50000)%256;//定时器T0的低8位重新赋初值}3.用Proteus软件仿真经Keil软件编译通过后,可利用Proteus软件进行仿真。在ProteusISIS编辑环境中绘制好图6-2所示仿真电路图后,或打开配套光盘中的“仿真实例第六章CHANG”文件夹内的“ex46.DSN”仿真原理图文件,将编译好的“C

6、HANG.hex”文件载入AT89C51。启动仿真,即可看到P2.0引脚LED的闪烁速度明显慢于实例45(仿真效果图略)。4.用实验板试验程序仿真无误后,将“CHANG”文件夹中的“CHANG.hex”文件烧录入AT89S51芯片中。再将烧录好的单片机插入实验板,通电运行即可看到和仿真类似的试验结果。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。