加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_郴州站长网 (http://www.0735zz.com/)- 云通信、区块链、物联设备、云计算、站长网!
当前位置: 首页 > 教程 > 正文

单片机C语言编程定时器的几种表达办法

发布时间:2021-11-24 15:02:51 所属栏目:教程 来源:互联网
导读:单片机C语言编程中,定时器的初值对于初学者真的是比较不好计算,因此我总结了以下几种方法。 第1种方法: #define FOSC 11059200L //晶振的频率 #define TIMS (65536-FOSC/12/1000) //12T mode 对于8051系列单片机通用 //#define TIMS (65536-FOSC/1000) //1
单片机C语言编程中,定时器的初值对于初学者真的是比较不好计算,因此我总结了以下几种方法。
 
第1种方法:
 
#define FOSC 11059200L                         //晶振的频率
 
#define TIMS (65536-FOSC/12/1000)   //12T mode  对于8051系列单片机通用
 
//#define TIMS (65536-FOSC/1000)      //1T mode      STC单片机可以用这个
 
unsigned int timer0_tick;
 
int timer0_count;
 
void Timer0(void) interrupt 1 using 1 //定时器0中断外理
 
{
 
        TL0=TIMS;
 
    TH0=TIMS>>8;
 
if(timer0_tick--==0)    //加到1000次即1秒
 
{          
 
timer0_tick=1000;
 
                LED_Timer=~LED_Timer;  
 
}   
 
}
 
初值的赋值采用的是移位运算:
 
TL0=TIMS;
 
    TH0=TIMS>>8;
 
第2种方法:
 
#define FOSC 11059200L                         //晶振的频率
 
TH=(65536-time*FOSC /12)/256
 
   TL=(65536-time*FOSC /12)%256
 
time就是假设要延时的100ms(要取100000us)
 
FOSC 是晶振频率
 
注意:定时器一定要考虑晶振的频率,因为单片机最小的中断时间和频率有关系。
 
例如:
 
6MHz晶振对应的时间范围是:512us  --- 16.384ms --- 131.072ms
 
因此,在设置时间前,一定要考虑晶振和定时器的关系。

(编辑:开发网_郴州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读