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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 复习单片机:定时器/计数器部分(内含:1.51 单片机定时器原理 +2.51 单片机定时/计数器结构+3.定时器配置+4.代码部分+5.实验现象) -> 正文阅读

[嵌入式]复习单片机:定时器/计数器部分(内含:1.51 单片机定时器原理 +2.51 单片机定时/计数器结构+3.定时器配置+4.代码部分+5.实验现象)

1.51 单片机定时器原理
STC89C5X 单片机内有两个可编程的定时/计数器 T0、T1 和一个特殊功能定
时器 T2。定时/计数器的实质是加 1 计数器(16 位),由高 8 位和低 8 位两
2个寄存器 THx 和 TLx 组成。
它随着计数器的输入脉冲进行自加 1,也就是每来一
个脉冲,计数器就自动加 1,当加到计数器为全 1 时,再输入一个脉冲就使计数
器回零,且计数器的溢出使相应的中断标志位置 1,向 CPU 发出中断请求(定时
/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;
如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数
初值才是加 1 计数器的计数值。
2.51 单片机定时/计数器结构(TMOD+TCON)
上图中的 T0 和 T1 引脚对应的是单片机 P3.4 和 P3.5 管脚。51 单片机定时/ 计数器的工作由两个特殊功能寄存器控制。TMOD 是定时/计数器的工作方式寄存 器,确定工作方式和功能;TCON 是控制寄存器,控制 T0、T1 的启动和停止及 设置溢出标志。
工作方式寄存器 TMOD
工作方式寄存器 TMOD 用于设置定时/计数器的工作方式,低四位用于 T0,高
四位用于 T1。其格式如下:
GATE 是门控位, GATE=0 时,用于控制定时器的启动是否受外部中断源信号
的影响。只要用软件使 TCON 中的 TR0 或 TR1 为 1,就可以启动定时/计数器工作;
GATA=1 时,要用软件使 TR0 或 TR1 为 1,同时外部中断引脚 INT0/1 也为高电平
时,才能启动定时/计数器工作。即此时定时器的启动条件,加上了 INT0/1 引脚
为高电平这一条件。
C/T :定时/计数模式选择位。C/T =0 为定时模式;C/T =1 为计数模式。
M1 M0:工作方式设置位。定时/计数器有四种工作方式。

控制寄存器 TCON?

TF1(TCON.7):T1 溢出中断请求标志位。T1 计数溢出时由硬件自动置 TF1
为 1。CPU 响应中断后 TF1 由硬件自动清 0。T1 工作时,CPU 可随时查询 TF1 的
状态。所以,TF1 可用作查询测试的标志。TF1 也可以用软件置 1 或清 0,同硬
件置 1 或清 0 的效果一样。
TR1(TCON.6):T1 运行控制位。TR1 置 1 时,T1 开始工作;TR1 置 0 时,
T1 停止工作。TR1 由软件置 1 或清 0。所以,用软件可控制定时/计数器的启动
与停止。
TF0(TCON.5):T0 溢出中断请求标志位,其功能与 TF1 类同。
TR0(TCON.4):T0 运行控制位,其功能与 TR1 类同。
51 单片机定时/计数器的工作方式(4种,重要的是方式1和2,此处只介绍1和2)
? 方式 1
方式 1 的计数位数是 16 位,由 TL0 作为低 8 位,TH0 作为高 8 位,组成了
16 位加 1 计数器。其结构图如下所示:

计数初值与计数个数的关系为:X=2的16次方-N。

? ?方式 2
方式 2 为自动重装初值的 8 位计数方式。工作方式 2 特别适合于用作较
精确的脉冲信号发生器。其结构图如下所示:

计数初值与计数个数的关系为:X=2的8次方-N。

3.定时器配置

①对 TMOD 赋值,以确定 T0 和 T1 的工作方式,如果使用定时器 0 即对 T0 配
置,如果使用定时器 1 即对 T1 配置。
②根据所要定时的时间计算初值,并将其写入 TH0、TL0 或 TH1、TL1。
③如果使用中断,则对 EA 赋值,开放定时器中断。
④使 TR0 或 TR1 置位,启动定时/计数器定时或计数。
这里以定时器 0 为例介绍配置定时器工作方式 1、设定 1ms 初值,开启定时
器计数功能以及总中断,如下:
void time0_init(void)
{
TMOD|=0X01;//选择为定时器 0 模式,工作方式 1
TH0=0XFC; //给定时器赋初值,定时 1ms
TL0=0X18;
ET0=1;//打开定时器 0 中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
}
4.代码如下:

#include "reg52.h"

typedef unsigned char u8;
typedef unsigned int u16;

sbit LED1=P2^0;

void delay_10us(u16 ten_us)
{
?? ?while(ten_us--);
}

//定时器0中断配置
void time0_init(void)
{
?? ?//选择为定时器0模式,工作方式1
//0X01表示TMOD的第四位为0001,
?? ?//第一个0表示不需要外部中断,
?? ?//第二个0表示工作在定时模式,
//第三个0,第四个1表示M1==0,M0==1(TMOD表)
?? ?//M1==0,M0==1表示16位定时器
?? ?//或运算表示TMOD=TMOD|0x01
?? ?TMOD|=0x01;
?? ?TH0=0XFC;//给定时器赋初值,定时 1ms
?? ?TL0=0X18;
?? ?ET0=1;//打开定时器 0 中断允许
?? ?EA=1;//打开总中断
?? ?TR0=1;//打开定时器
}

void main()
{
?? ?time0_init();
?? ?while(1)
?? ?{
?? ??? ?;
?? ?}
}

//定时器 0 中断函数
void time0() interrupt 1
{
?? ?static u16 i;
?? ?TH0=0XFC;
?? ?TL0=0X18;
?? ?i++;
?? ?if(i==1000)
?? ?{
?? ??? ?i=0;
?? ??? ?LED1=!LED1;
?? ?}
}

?5.实验现象:

使用 USB 线将开发板和电脑连接成功后(电脑能识别开发板上 CH340 串口),
把编译后产生的.hex 文件烧入到芯片内,实现现象如下:当 D1 指示灯间隔 1s
闪烁。

注:此章必须掌握原理,否则只背会代码是事倍功半的

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:44:29  更:2022-09-21 00:46:37 
 
开发: 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年5日历 -2024/5/19 12:12:29-

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