51单片机---定时器/计数器的配置

发布者:数字梦行最新更新时间:2022-09-22 来源: csdn关键字:51单片机  定时器  计数器  配置 手机看文章 扫描二维码
随时随地手机看文章

1.CPU时序


振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)。比如开发板的时钟电路上的12MHZ晶振,它就提供了单片机的振荡周期。周期T=1/12M,单位为秒。

状态周期:

两个振荡周期为1个状态周期,用S表示。振荡周期又称为S周期或时钟周期。

机器周期:6个状态周期,即12个振荡周期。以12MHZ晶振为例,机器周期=12*(1/12M)=1/M=1us.

指令周期:完成一条指令所占用的全部时间,以机器周期为单位。以12MHZ为例,指令周期为1~4us.


2.定时器绪论

51单片机有2组定时器/计数器,既可以定时又可以计数。

定时器/计数器和单片机的CPU是相互独立的,定时器/计数器工作时不需要CPU参与。

51单片机的定时器/计数器是根据机器内部的时钟或外部脉冲信号,对寄存器中的数据加1.

意义:减轻CPU的负担(提高单片机效率),也实现精确定时


3.定时器/计数器的工作原理

实际上是一个加1计数器,

随着计数器的输入脉冲自加1,每来一个脉冲数,计数器就自动加1,加到计数器为全1的时候,在输入一个脉冲就会使计数器归0,这个计数器的溢出会使相应的中断标志位置1,向CPU发出中断请求(前提是设置了定时/计数器的中断允许位。

计数器的溢出值-计数器初值=计数值


4.定时器的硬件结构

定时/计数器的实质是加1计数器(16位:2字节)

由高8位THx和低8位TLx两个寄存器组成

51有2个定时/计数器

所以,

定时器0对应TH0和TL0

定时器1对应TH1和TL1

通过配置TMOD来配置定时/计数器的工作方式–定时还是计数

通过配置TCON控制寄存器,控制T0和T1的启动、停止、溢出标志


5.累加 的过程

比如,对于计数器0,先累加低8位TL0,加到0xFF后,

开始累加TH0

当TH0也累加满了,

则溢出,

TF0则会置1

.。。。。。。。。


6.TMOD是一个8位的寄存器(1个字节)

用于设置工作方式

低4位用于控制T0

高4位用于T1

第7位:GATE门控位

GATE=0,软件使TR0或TR1为1,就可以启动定时/计数器

GATE=1,TR0或TR1为1,外部中断引脚INT0/1也为高电平,可启动定时/计数


第6位:C/T,

为0,定时模式

为1,计数模式


M1和M0

控制定时/计数器的4种工作方式

00 方式0 13位定时/计数器–-对T0而言,只是用了TL0的低5位和TH0的8位,TL0低5位溢出时,向TH0进位,TH0溢出时,将TCON中的TF0置1,向CPU发出中断申请,初值=2的13次幂-计数个数

01 方式1 16位定时/计数器—初值=2的16次幂-计数个数

10 方式2 8位自动重装定时/计数器—计算频率,串口通信–只要低8位装载满,就自动清0,重新计数,初值=2的8次幂-计数个数,用作精确的计算

11 方式3 T0分成2个独立的8位定时/计数器;T1停止计数—

方式0和方式3很少使用


7.TCON

通过配置TCON控制寄存器,控制T0和T1的启动、停止、溢出标志

高4位控制定时器/计数器的启动和中断申请

TF1:T1溢出中断请求标志位,计数器1:T1溢出,硬件自动将TF1置1,CPU响应中断后,TF1由硬件清0.

所以TF1可以作为标志位,查看查看有没有溢出

而且TF1也可以用软件置1/0


TR1是T1的运行控制位

TR1置1,则T1工作

置0,T1停止工作

TR1由软件置1或置0

所以用软件可控制T1的运行或停止


TF0是T0溢出中断请求标志位

TR0是T0运行控制位


8.如何使用定时器

(1)对TMOD赋值,确定T0 T1工作方式:定时器模式/计数模式

(2)计算初值,将其写进THx和TLx

(3)对EA赋值,开放定时器中断

(4)使TR1或TR0置位,启动定时器(一般这样配置GATE=0,软件使TR0或TR1为1)

如图

打开定时器0,配置TMOD低4位

D3:GATE

D2:C/T

D1:M1

D0:M0


GATE=0

则TR0=1

配置为定时模式,则C/T=0

选择M1M0=01的16位定时器模式

即TMOD=0x01

再设置初值,溢出后硬件会配置TF0

还要记得配置中断

EA=1

ET0=1


TMOD|=0X01;//使用TMOD的低4位:定时器0模式; C/T=0定时模式  GATE=0软件使TR0为1就行了  M0M1=01:工作方式1,初值计算为2的16次幂减计数个数,仅用TR0打开启动。

TH0=0XFC;//装载初值

TL0=0X18;  

ET0=1;//打开定时器0中断允许

EA=1;//打开总中断

TR0=1;//打开定时器


定时器控制led的代码


```c

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;   //对数据类型进行声明定义

typedef unsigned char u8;

sbit led=P2^0; //定义P20口是led


void Timer0Init()

{

TMOD|=0X01;//使用TMOD的低4位:定时器0模式; C/T=0定时模式  GATE=0软件使TR0为1就行了  M0M1=01:工作方式1,初值计算为2的16次幂减计数个数,仅用TR0打开启动。


TH0=0XFC; //给定时器赋初值,定时1ms 65536-1000=64536,即FC18H,TH0=0XFC,

TL0=0X18; //TL0=0X18

ET0=1;//打开定时器0中断允许

EA=1;//打开总中断

TR0=1;//打开定时器

}



void main()

{

Timer0Init();  //定时器0初始化

while(1);

}



void Timer0() interrupt 1

{

static u16 i;

TH0=0XFC; //给定时器赋初值,定时1ms

TL0=0X18;

i++;

if(i==1000)//小灯间隔1s闪烁,1s=1000ms,即定时器的寄存器溢出1000次

{

i=0;

led=~led;

}

}


这里在中断服务函数中重新装载初值,是因为方式一只计数、定时

不会向方式2那样自动重装

不要忘了打开定时器的中断允许位ET0或ET1,以及总中断

关键字:51单片机  定时器  计数器  配置 引用地址:51单片机---定时器/计数器的配置

上一篇:单片机之晶振篇
下一篇:51单片机串口通信--SCON方式1

推荐阅读最新更新时间:2024-11-12 20:08

51单片机控制信号发生器源程序(正弦波、方波)
单片机型号:STC15W4K32S4 数字编码器EC11作为控制波形、频率、占空比的开关 液晶1602A作为显示信息 单片机源程序如下: Note: 2020-05-06 Update 1. Fix an error in main funciton, cause the EC11 Encoder rotate disorder. 2. Fix an error of interface display during switch frequency. 2020-05-24 Update 1. Fix precision of PWM frequency 2. Fix the
[单片机]
<font color='red'>51单片机</font>控制信号发生器源程序(正弦波、方波)
一加5配置全曝光 8GB确认/前后1500万
一加科技的年度旗舰一加5已经在发布的路上,这是许多人今年非常期待的一款国产旗舰机型。关于一加5,相信大家最为关注的应该是它的配置了,日前网络上曝光了一张疑似一加5的跑分图,这让该机的各项参数展露无遗。 一加5配置全曝光   从图中看,一加5维持了5.5英寸1080P屏幕,处理器虽然没有明确显示出型号,但骁龙835应该没什么悬念。同时,该机还配备了8GB运存+128GB闪存的超大内存组合,至于会不会有64GB版则不得而知。 一加5前置摄像头居中   另外,一加5还配备前后1500万像素摄像头,根据一加官方给出的视频,一加5的前置摄像头居中,这一点估计强迫症会很喜欢。而后置摄像头方面,一加5也不止一颗1500万像素镜头,该机将配备
[手机便携]
51单片机心形灯——实现从左到右顺时针流水编程
心形灯原理图 编译软件:Keil uVision5 (如有需要可点此链接下载:https://download.csdn.net/download/qq_36931762/11343174) 单片机程序下载软件:STC-ISP (如有需要可点此链接下载:https://download.csdn.net/download/qq_36931762/11343157) 程序代码: #include reg51.h #include intrins.h unsigned char code table ={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; unsigned
[单片机]
<font color='red'>51单片机</font>心形灯——实现从左到右顺时针流水编程
YAFFS2文件系统搭建与配置(Micro2440 + linux 2.6.39)
1. YAFFS2文件系统配置 a) YAFFS2源码下载地址 yaffs2-HEAD-4e188b0.tar.gz:http://www.yaffs.net/download-yaffs-using-git (http://pan.baidu.com/s/1jG7OAP4) b) 解压源码 # tar -xvf yaffs2-HEAD-4e188b0.tar.gz -C ./ c) 为内核打YAFFS2补丁 # cd yaffs2-HEAD-4e188b0/ # ./patch-ker.sh c m ../linux-2.6.39/ d) 配置内核 # m
[单片机]
YAFFS2文件系统搭建与<font color='red'>配置</font>(Micro2440 + linux 2.6.39)
首款带夜视相机的手机亮相 不过配置很一般
    最近,丹麦科技公司Lumigon发布了一款名为Lumigon T3的新手机。该机最大的亮点是搭载一颗支持夜视功能的摄像头。   Lumigon T3配备了两颗后置摄像头,一颗为1300万像素的摄像头,支持相位检测自动对焦以及4K视频录制,并配备Dual Tone闪光灯。另外一颗则为400万像素的夜视摄像头,并配备双远红外闪光灯。前置方面,搭载了500万像素的摄像头。   Lumigon T3的机身尺寸为137x69x7.9 mm,重量为145g,采用航海级316不锈钢的机身设计。该机提供了黑色、白色和橘色等多种配色的版本,以及24K黄金版本。售价方面,Lumigon T3标准版的售价为925美元(约合607
[手机便携]
51的单片机学习——定时器
1、关于定时器 定时器由高8位和低8位两个寄存器组成。 TMOD是定时器的工作方式寄存器,由它确定定时器的工作方式; TCON是定时器的控制寄存器,用于控制定时器的启动和停止以及设置溢出标志。 2、对定时器的控制 工作方式寄存器TMOD的设置:对TMOD的访问是按字节访问,所以对TMOD进行设置时需要8位;其工作方式有方式0~方式3四种工作方式,一般选用方式1,即设置TMOD=0x01; 控制寄存器TCON的设置:若选用定时器T0,使用时,设置TR0=1;若选用定时器T1,使用时,设置TR1=1; 3、使用定时器的方法 第一:设置TMOD,配置好工作模式; 第二:设置TH0和TL0的初值; 第三:设置TCON,通过TR0=
[单片机]
STM32定时器分时操作系统
前后台系统,RTOS与定时器任务管理系统 前后台系统   在裸机上写程序,通常把程序分为两部分:前台系统和后台系统。   简单的小系统通常是前后台系统,这样的程序包括一个死循环和若干个中断服务程序:应用程序是一个无限循环,循环中调用API函数完成所需的操作,这个大循环就叫做后台系统。中断服务程序用于处理系统的异步事件,也就是前台系统。前台是中断级,后台是任务级。 RTOS   RTOS全称为:Real Time OS,就是实时操作系统,强调的是:实时性。实时操作系统又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作 ,硬实时系统不允许超时,在软实时里面处理过程超时的后果就没有那么严格。在实时操作系统中,我们可以把要
[单片机]
51单片机波特率计算公式
把定时器做波特率发生器,计算公式: T1,T2计数器内部一样: fosc/(32*12*(256-TH1)); SMOD=0; //11.0592,(9600,8,1)值为0xfd,根据晶振和初值以此类推 //24MHz (4800,8,1)值为0xf3 T2计算公式: fosc/(32*(65536- (RCAP2H,RCAP2L) ) ); SMOD=0//11.0592,(9600,8,1)值为0xFFDC,根据晶振和初值以此类推 备注:fosc:晶振频率Hz
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved