今天是: <%response.write formatdatetime(date(),1)%> 电子制作天地网站欢迎您的光临,欢迎提出宝贵意见或建议。本站信息产业部备案: 粤ICP备05114582号
 
8052单片机T2定时器用法详解
定时器案例

时间:2013-5-19 20:06:46 来源:互联网 作者:不详 编辑: 【关闭


关键字:单片机定时器

1、要精确定时,必须使用定时器的自动装载方式。本实验使用T2定时器,让它工作在16bit自动
            装载方式,这时,有另一个位置专门装着16位预装载值,当T2溢出时,预装载值立即被装入, 
            这就保证了精确定时。 
         2、T2定时器是一个16位定时器,最长的溢出时间也就几十毫秒,要定时1秒,就需要用一个变量 
            来保存溢出的次数,积累到了一定的次数后,才执行一次操作。这样就可以累加到1秒或者更 
            长的时间才做一次操作。 
         3、当T2定时器发生溢出中断时,需要用户自己清除溢出标记,而51的其他定时器是自动清除的。 
         4、T2定时器预装载值的计算: 
            设晶振为12MHz,每秒钟可以执行1000000(12000000/12)个机器周期。而T2每次溢出时最多 
            经过了65536个机器周期。我们应该尽量让T2定时器的溢出中断的次数最少,这样对主程序的干扰 
            也就最小。 
            选择每秒中断14次,每次溢出1000000/14=71428.57个机器周期,不为整数且超出65536个机器周期,有效。 
            选择每秒中断16次,每次溢出1000000/16=62500个机器周期,小于65536个机器周期,有效。 
            选择每秒中断20次,每次溢出1000000/20=50000个机器周期,小于65536个机器周期,有效。 
            通过上面的计算,我们可以发现,我们可以选择的方式有很多,但是最佳的是每秒中断16次,每次 
            溢出62500个机器周期,那么赋给T2定时器的初值应为65536-62500=3036,转换成十六进制值为 
            0x0BDC。 
********************************************************************************************************/


/*********定时2中断服务子函数**************/ 
    void Timer2_Server(void) interrupt 5 

     TF2=0; 
    deda++;         //计数
if(deda<8){flag1=1;}else{flag1=0;}
if(deda==16){sec++;deda=0;}
if(sec==60){min++;sec=0;} 
if(min==60){hor++;min=0;}
if(hor==24){hor=0;}
}

◆相关文章◆
◆ 编辑推荐 ◆
用户:
更多评论
您要为您所发的言论的后果负责,故请各位遵纪守法并注意语言文明。60个字以内
留言:
验证码:
 
 
 

免责声明:
●本站所有内容均来自网络,以学习为目的,如果侵犯了您的利益,请来信告知,立即删除,站长邮件为"diy+dzdiy.com",请将"+"变更为"@"
●电子制作存在风险,请注意人身安全,如果您在根据本站电路进行制作过程中发生伤害,本站不负任何责任。

版权所有:www.dzdiy.com © 2001-2019 本站信息产业部备案: 粤ICP备05114582号