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

上传人:飞****9 文档编号:139605995 上传时间:2020-07-22 格式:DOC 页数:2 大小:16.50KB
返回 下载 相关 举报
用定时器T0的模式1实现长时间定时_第1页
第1页 / 共2页
用定时器T0的模式1实现长时间定时_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《用定时器T0的模式1实现长时间定时》由会员分享,可在线阅读,更多相关《用定时器T0的模式1实现长时间定时(2页珍藏版)》请在金锄头文库上搜索。

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

2、设计先建立文件夹“CHANG”,然后建立“CHANG”工程项目,最后建立源程序文件“CHANG.c”。输入以下源程序:/实例46:用定时器T0模式1的实现长时间定时#include / 包含51单片机寄存器定义的头文件sbit D1=P20; /将D1位定义为P2.0引脚unsigned char Countor ; /设置全局变量,储存定时器T0中断次数/*函数功能:主函数*/void main(void) EA=1; /开总中断ET0=1; /定时器T0中断允许 TMOD=0x01; /使用定时器T0的模式1TH0=(65536-50000)/256; /定时器T0的高8位赋初值TL0=(

3、65536-50000)%256; /定时器T0的低8位赋初值TR0=1; /启动定时器T0Countor=0; /从0开始累计中断次数while(1) /无限循环,等待中断 ; /*函数功能:定时器T0的中断服务程序*/void Time0(void) interrupt 1 using 0 /“interrupt”声明函数为中断服务函数 Countor+; /中断次数自加1if(Countor= =20) /若累计满20次,即计时满1s D1=D1; /按位取反操作,将P2.0引脚输出电平取反Countor=0; /将Countor清0,重新从0开始计数 TH0=(65536-50000)

4、/256; /定时器T0的低8位重新赋初值 TL0=(65536-50000)%256; /定时器T0的低8位重新赋初值 3用Proteus软件仿真经Keil软件编译通过后,可利用Proteus软件进行仿真。在Proteus ISIS 编辑环境中绘制好图6-2所示仿真电路图后,或打开配套光盘中的“仿真实例第六章 CHANG”文件夹内的“ex46.DSN”仿真原理图文件,将编译好的“CHANG.hex”文件载入AT89C51。启动仿真,即可看到P2.0引脚LED的闪烁速度明显慢于实例45(仿真效果图略)。4用实验板试验程序仿真无误后,将“CHANG”文件夹中的“CHANG.hex”文件烧录入AT89S51芯片中。再将烧录好的单片机插入实验板,通电运行即可看到和仿真类似的试验结果。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号