51和52单片机统称为51单片机定时器的基本原理

定时器的基本概念表4定时器T0寄存器中M1/M0工作模式常用的模式有模式1和模式2,模式2常用在串口通信中,本项目中以模式1为主。

计时器的基本概念标准的51单片机有两个定时器,T0和T1,52单片机

多了一个T2定时器,其余的和51单片机一样,细心的读者会发现我们用的是52单片机,但名字是51单片机

,我们将51和52单片机统称为51单片机。

定时器工作的基本原理,假设一个水瓶的容量为65536ml,并且现在水瓶

以1ml/s的速度滴水,那么水瓶装满需要65536s,再溢出一滴。由此得出的启示是,只要速度恒定,就可以根据滴数知道时间。假设你现在需要计时 30,000 秒,你只需要将 30,000 滴水放入一个空瓶子中,但在这种情况下,你需要注意水滴的数量。其实还有更好的办法,可以提前将35536ml的水滴入水瓶中,然后将水滴入水瓶中,只要发现水瓶中的水溢出,就表明30000s的时间到了,计时器的工作方式是一样的, 在使用定时器之前,首先要了解相关的寄存器。

表 1 与定时器/计数器 0 和 1 相关的寄存器

51和52单片机统称为51单片机定时器的基本原理

在本章中,我们以配置定时器T0为例,首先看一下TCON寄存器中每个位的含义。

表 2:寄存器 TCON(可寻址)的功能说明。

TF1:计时器/计数器 T1 溢出标志。允许 T1 计数后,将 1 添加到初始值中。当最高位溢出时,硬件设置“1”向CPU请求中断,并一直保持到CPU响应中断,然后硬件清除“0”(程序也可以查询TF1清除“0”)。

TR1:定时器T1的运行控制位。该位由软件设置并归零。当 TR1=1 时,允许 T1 开始计数,当 TR1=0 时,禁用 T1。

TF0:与 TF1 相同,TF1 用于定时器/

计数器 T1 和 TF0 用于计时器/计数器 T0。TR0:与 TR1

相同,TR1 用于定时器 T1,TF0 用于定时器 T0。

表3 寄存器TMOD(不可寻址)功能说明。

51和52单片机统称为51单片机定时器的基本原理

表 4:定时器 T0 寄存器中的 M1/M0 工作模式

51和52单片机统称为51单片机定时器的基本原理

常用的模式有模式1和模式2,模式

2通常用于串口通信,模式1是本项目的主要模式。请注意,寄存器TCON是可寻址的,寄存器TMOD是不可按位寻址的。寻址是指寄存器的某位可以单独操作,例如,寄存器TCON中的第四位TR0可以取出并单独分配,以执行TR0 = 1或TR0 = 0操作,但寄存器TMOD不能操作单个位,而只能作为一个整体进行分配,例如, TMOD = 0x01。

计时器内容丰富,建议您阅读官方数据表。本节部分摘自手册的定时器部分,仅列出了定时器需要使用的寄存器,仅供参考。

若要使用查询方法配置计时器,请执行以下操作:

1.通过配置定时器TMOD确定定时模式;

2. 将计算出的初始值加载到 TH0 和 TL0;

3.通过配置TR0启动定时器0;

4.判断旗帜TF0,

如果 TF0 为 1,则表示溢出,可以通过软件清除,然后再次监控。定

时器的定时计算时钟

周期定义为时钟的倒数

脉冲(时钟周期是单片机外部晶体振荡器的倒数,如12M的晶体振荡器,其时间周期为1/120000000),是计算机中最基本、最小的时间单位。

机器循环时间是指完成基本操作所需的时间。通常,8051 系列微控制器的机器周期由 12 个时钟周期组成。

配套单片机学习版采用12M无源晶体振荡器,时钟周期为1/12000000,机周期为12/12000000,

假设时序为20ms,则所需的机器周期为0.02/(12/12000000)=20000,根据2.1总结需要在定时器中预装65536-20000=45536个值,由于使用了定时模式1, 将45536加载到寄存器TH0和TL0中, 45536/256=177, 45536% 256=244, 将177转换为十六进制 0XB1加载到TH0, 将 244 转换为十六进制0XF4加载到 TL0。

同理,可以计算出16位寄存器的最大时序为65536*(12/12000000)≈65ms,一般来说,时序时间应尽量取在0~65ms的中间,比如本例中定时器配置的时序为20ms,如果需要定时1s, 只要定时器循环 50 次。读取器可以计算出 50 毫秒的时序需要多少初始负载。

C —– “|”,“&”。

对于不可寻址的寄存器,需要同时处理8位,例如,使用定时器为0的模式1(M1=0,M0=1),配置寄存器TMOD=0x01,正确配置0位和1位,同时更改第2位至第7位

运算符 “|表示“按位或”,例如“1|1”为1,“1|0”为0,“0|1”为1,“0|0”为0,1“或”任意数字为1,0“或”0为0”。运算符“&”表示“按位和”,例如,“1&1”为1,“1&0”为0,“0&1”为0,“0&0”为0,“0”

为“0”和”

任何数字都是 0、1“和”1 是 1”。

操作寄存器 TMOD 是 TMOD=TMOD&0XFC, TMOD=TMOD|0X01,看似比较复杂,但实际上逻辑比较严谨。

C 语言—– swtich 语句

在第 3 项中,ifelse 语句用于确定条件,如果条件较多,则通常使用 swtich 语句,如图 5 所示。switch 语句中有四个关键字,分别是 switch、case、default 和 break。当 expression after switch 满足 case 之后的常量表达式时,在 case 之后运行语句块。请注意,每种情况都需要在 break 后面加上 break,这意味着会弹出 SWTICH 语句。default 表示当表达式与大小写不匹配时,运行 default 之后的语句块。

switch(表达式) {.}

大小写常量表达式 1:执行语句; 中断;

大小写常量表达式 2:执行语句;

大小写常量表达式 3:执行语句;

大小写常量表达式 4:执行语句;

默认值:执行语句; 中断;

中断系统

当 CPU

运行时,外界发生紧急请求,CPU暂停当前工作,处理紧急事件,然后返回原来的中断地方继续原来的工作,称为中断。从 CPU 请求中断的源称为中断源。中断系统一般允许多个中断源,当多个中断源同时向CPU请求中断时,存在优先级响应问题,本项目只涉及定时器0和定时器1的中断,详见芯片手册中的P156。

举个例子帮助读者理解打断的含义,比如小明在家看电视,突然听到敲门声,按下电视遥控器暂停键开门,开门后继续看电视,这就是打断,也是最常用的打断形式。还是小明在家看电视,突然听到敲门声,按下电视遥控器的暂停键再开门,刚走到门口突然听到厨房里水开的声音,急忙跑到厨房关掉电源,又走到门口,开门后继续看电视,这是一个嵌套的中断,在“开门”这个中断源有“关机”这个中断源,小明会根据优先级对每个事件进行优先级排序,单片机也是如此。

51和52单片机统称为51单片机定时器的基本原理

图1 中断优先级查询顺序

51和52单片机统称为51单片机定时器的基本原理

图2 C-first中断查询函数中断

系统需要编写中断函数,例如,第 3.2 小节使用定时器 0,中断函数为 “voidInterruptTimer0() interrupt 1”,其格式为 “void variable name() interrupt 1”,变量名 “void” 后面的括号可以写也可以不写,其余的应该按照规范写,如图 2 所示, 中断函数一般放在程序末尾,不需要声明函数名!

表5 中断允许寄存器(位可寻址)。

表 5 介绍了常用的控制位。

EA :CPU 允许的中断总控制位,EA=1,启用的总中断,EA=0,总中断关闭。

ET0:T0 允许溢出中断位。ET0=1,允许T0中断;ET0=0 禁止 T0 中断。

ES:允许串口 1 中断位。ES=1,允许串口1中断;ES=0,串口1不允许中断。

IE中断允许寄存器在这个项目中使用,只要使用第一位和第七位,并且定时器经常与中断一起使用,所以应该启用EA和ET0位,并且还引入了第四位ES,因为它也用于串口中断。

全局变量和局部变量全局变量

:在所有函数之外定义的变量称为全局变量,其作用域存在于整个程序中。全局变量定义必须位于所有函数之外。在表1 [15]中,如第3、3.2项所定义,变量在主函数和子函数之外定义。在同一个源文件中,允许全局变量和局部变量同名,在局部变量范围内,同名全局变量不起作用。局部变量

:函数内部的变量称为局部变量,

并且它们的范围仅限于函数内部,函数内部的变量在函数结束后无效。不同函数中的局部变量可以具有相同的名称,分配不同的存储单元,并且彼此之间没有关联。

由于定义全局变量将永久占用微控制器的内存单元,因此局部变量只会在具有变量的函数时占用内存使用,使用

函数后内存会自动释放,因此小编建议尽量使用局部变量。

在Key_Scan()项的第3.2小节中,有一个语句“static unsigned char cnt1=0xFF”,它调用“cnt1”

一个静态局部变量,如果没有关键字“static”,则在“unsigned char cnt1=0xFF”语句中为“cnt1”。例如,如果变量 cnt1 在激活 Key_Scan() 函数后变为 0xAA,那么调用 Key_Scan() 后释放内存空间,下次调用 Key_Scan() 时,变量 cnt1 返回初始值 0xFF,但是我们不想成为初始值,而是想在执行前一个函数后执行值0xAA, 因此,我们可以在不使用全局变量的情况下添加“static”关键字。

总结:本节介绍理论,下一节将介绍定时器的应用!

单片机

当螺母因意外原因松动时开口压板极易在离心力的作用

2024-2-7 23:01:18

单片机

工装夹具设计的基本原则和基本要求有哪些?

2024-2-8 0:02:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索