欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 单片机基础模块学习——定时器

单片机基础模块学习——定时器

2025/1/22 12:34:16 来源:https://blog.csdn.net/2301_79608998/article/details/145233720  浏览:    关键词:单片机基础模块学习——定时器

1.利用stc-isp生成代码

选择定时器计算器,将频率改为12mhz,单位为毫秒,定时长度为1

复制下面代码

void Timer0Init(void)		//1毫秒@12.000MHz
{AUXR |= 0x80;		//定时器时钟1T模式TMOD &= 0xF0;		//设置定时器模式TL0 = 0x20;		//设置定时初值TH0 = 0xD1;		//设置定时初值TF0 = 0;		//清除TF0标志TR0 = 1;		//定时器0开始计时
}

2.在数据手册查找中断的查询次序

由下表,定时器0的查询次序为1

3.定时器代码

#include "tim.h"void Timer0Init(void)		//1毫秒@12.000MHz
{AUXR |= 0x80;		//定时器时钟1T模式TMOD &= 0xF0;		//设置定时器模式TL0 = 0x20;		//设置定时初值TH0 = 0xD1;		//设置定时初值TF0 = 0;		//清除TF0标志TR0 = 1;		//定时器0开始计时ET0=1;			//定时器0中断开关
}

主函数对定时器的应用

#include "tim.h"
#include "init.h"
#include "led.h"
//每一个变量前都标注类型,方便根据名字判断变量类型
//timer
unsigned long ulms=0;
unsigned int uiLed_Dly=0;
//led
unsigned char ucLed=0x00;void Led_Proc(void);void main(void)
{Cls_Peripheral();Timer0Init();EA=1;//中断总开关while(1){Led_Proc();}
}
void Led_Proc(void)
{if(uiLed_Dly<200)return;uiLed_Dly=0;ucLed ^=0X01;// 0000 0001异或:与零不变,与一取反Led_Disp(ucLed);
}//中断服务函数
void Time_0(void) interrupt 1
{ulms++;uiLed_Dly++;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com