IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 定时器中断怎么用-------51单片机基础篇 -> 正文阅读

[嵌入式]定时器中断怎么用-------51单片机基础篇

首先,什么时定时器,简单来说可以比喻为一个闹钟,当你把他打开以后,他就会每秒动一下,+1,+1,+1,+1,如果你设置了某一个时间点闹钟会向以后,那么当闹钟的时间点+1,+1,+1,+到了你设置的时间的就会进入中断----也就是闹钟响了。
下面正式介绍定时器怎么用*
首先你要用这个闹钟,你要先给他装电池,设置时间,也就是配置他,然后打开他那么怎么打开呢,
/以下是配置定时器部分*******/
先上两张图
在这里插入图片描述
在这里插入图片描述
图片是51手册上截取的,首先第一步就是配置TMOD也就是定时器/计数器的工作模式,在这里我们选择的是定时器/计数器0模式选择工作方式1也就是M1,M0=01(16位定时器计数器)
然后我们要给定时器赋初值,那么,初值怎么算呢,以我们的51单片机为列子,晶振12MHZ,12MHZ经过12分频12/12=1MHZ,也就是说一秒=1000000次机器周期。 假如给定时器定时1ms(1 毫秒 = 0.001 秒),1ms=1000次机器周期。 65536-1000=64536(转为16进制为FC18)

把他们分别放进TH0和TL0当中,TH0=0xfc,TL0=0x18,至此我们已经给定时器赋初值了

接下来我们开始打开开关
ET0=1;//打开定时器0中断允许 ET0:T0中断溢出允许位,ET0=1允许中断
TR0=1;//打开定时器 TR0:定时器T0运行控制位,置1打开
EA=1;//打开总中断

至此,我们要打开一个定时器要配置的东西都配置完成了,我们用一个模块函数把他封装起来
void Timer0Init()
{
TMOD=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

TH0=0XFC;	//给定时器赋初值,定时1ms
TL0=0X18;	
ET0=1;//打开定时器0中断允许    ET0:T0中断溢出允许位,ET0=1允许中断
TR0=1;//打开定时器	TR0:定时器T0运行控制位,置1打开
EA=1;//打开总中断		

}

好的,我们现在闹钟给他装好电池,基础配置都配置好了,那我们怎么才才能让他“响”呢,所谓响,就是定时器滴答滴答+1,到达了你设置的时间,那么到大了这个时间你要让他干嘛呢?
/以下是设置定时器中断函数********/
假设我们要用定时器让LED灯每1秒钟闪烁一次吧,
首先我们知道我们已经给定时器定时1MS,也就是1MS加一次,我们知道1000MS=1s,也就是说定时器加1000次就是1秒钟,
还有一个东西要说的,
在这里插入图片描述
中断号,就是interrupt 后面的数字,比如你要用外部中断0那就是interrupt 0,要用定时器中断0那就是interrupt 1;请注意了,下面会用到,等会可以回来查

那我们以此写一个封装函数
void Timer0() interrupt 1//这里interrupt 千万别写错,可以回去查表求证了
{
static u16 i; //STACK静态声明函数,只可意会不可言传
TH0=0XFC; //给定时器赋初值,定时1ms
TL0=0X18;//这两句是重新赋值,别问,问就是规矩
i++;//开始进入++环节,加到1000会进入下面的if语句
if(i==1000)
{
i=0;//i归零为下一次++做准备
led=~led;
}
}
至此,我们已经配置好定时器,并且设置了定时器要做什么事了,接下面我们只要做一件事,把他放进main函数里面,经常while循环即可
void main()
{
Timer0Init(); //定时器0初始化
while(1);
}

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 09:00:42  更:2021-11-26 09:02:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:37:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码