C51单片机————定时器计数器

发布者:BeaLaity0170最新更新时间:2022-04-21 来源: eefocus关键字:C51  单片机  定时器  计数器 手机看文章 扫描二维码
随时随地手机看文章

51单片机定时器/计数器

定时(定时控制、测量、延时。。。)和计数(对外部事件统计数目)。

image.png

软件定时|数字电路定时|可编程定时/计数器

它们都是怎么实现的呢?

额! 你猜

。。。

软件定时


机器执行一个程序,这个程序没有其他用处,只是为了延时!以达到定时的目的。


数字电路硬件定时

555之类的器件,完成定时


可编程定时/计数器

硬件定时,但是是可编程的,可以通过软件初始化设置定时的要求。


1.结构

定时器结构

定时/计数器实质上是一个加一计数器,可以工作在两种方式里,实际上都是对脉冲计数,只是说脉冲的来源不一样而已!

1. 定时


  1. 加一计数。

  2. 脉冲来自振荡器的12分频后的脉冲(Fosc/12),简单的说就是对机器周期计数。

  3. 需要预设定时初值(TH、TL)。

  4. 初值设置需要是补码,加一计数(补码的加,原值的减)加到溢出(原值减到0了)则发生溢出中断。


2. 计数


  1. 加一计数。

  2. 需要预设计数初值(TH、TL)。 

  2. 脉冲来源于T0或T1引脚。

  2. 上图的控制开关合上(控制=1)计数器对外部脉冲产生的下降沿开始计数

  3. 知道计满,初始值变为0,产生溢出中断。

  4. 计数脉冲的最高频率不可超过Fosc/24


2.定时计数器有关寄存器

中断我们需要考虑几个方面


中断打开没

怎么触发中断

中断的启停

多个中断触发后如何响应

(1)TMOD 定时计数方式寄存器(地址89h)

image.png

GATE:

1. 门控信号 ,GATE=0,TRx=1 自启动的方式

2. GATE=1,TRx=1,INTx=1 启动定时/计数器工作(一种以INTx作为外界启动条件的方式)

C/-T:

定时、计数选择 —– 1定时0计数

M1M0:

定时计数器的四种工作方式选择

image.png

(2)TCON 中断的请求与外部中断的选择(地址88h)

image.png

3.定时计数器工作方式

方式0:

定时器/计数器T0工作在方式0时,16位计数器只用了13位,即TH0的高8位和TL0的低5位,组成一个13位定时器/计数器(最大计数值8192)。


方式1:

定时器T0工作方式1与工作方式0类同,差别在于其中的计数器的位数。工作方式0以13位计数器参与计数,工作方式1则以16位计数器参与计数(最大计数值65536)。


工作方式1是16位计数器。这是工作方式1与工作方式0在计数方式时唯一差别。


方式2:

自动再装入预置数的工作方式。此时M1M0=10。

自动重装THx存放初值(预置数) ,TLx用于计数,计数完毕则自动将THx的值赋给TLx。(除了重装初值和最大计数值以外,其他同方式0)


方式3:(只适用于T0)


这种式作方式之下,定时/计数器0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,而TH0则只能作为定时器来用。我们知道作定时、计数器来用,需要控制,计满后溢出需要有溢出标记,T0被分成两个来用,那就要两套控制及、溢出标记了,从何而来呢?TL0还是用原来的T0的标记,而TH0则借用T1的标记。

一般情况下,只有在T1以工作方式2运行(当波特率发生器用)时,才让T0工作于方式3。


3.定时计数器计数初值和初始化

计数初值的计算:

计数方式:初值C = 模 - X(要计算的脉冲个数)

定时方式:初值C = [t /MC]补 = 模 - [t /MC](t定时的时间、MC机器周期,MC = 12/fosc)

计数初值示例:

方式0:初值C = (64H)补 = 2000H - 64H = 1F9CH

方式1: 初值C = (64H)补 = 10000H - 64H = FF9CH

方式2: 初值C = (64H)补 = 100H - 64H = 9CH

初始化:

计算初值

TMOD设置

写入计数初值THx、TLx

启动定时器,TRx = 1

EA = 1(打开中断总开关)

ETx = 1 允许中断

编写中断子程序

#include

unsigned char i=0;

int0() interrupt 1//定时器0 中断函数

{

  i++;//计算中断次数

}

main()//主函数

{

        //计算初值

    TMOD = 0x01;//TMOD设置

    TH0 = 0x3c;

    TL0 = 0xb0;//初值

    TR0 = 1//启动定时器,TRx = 1

    EA=1;//中断总开关

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

}


ORG 0000H

AJMP MAIN

ORG 000bH       ;中断子程序入口

AJMP COUNTING   ;中断函数名

ORG 0030H

MAIN: 

    MOV TMOD,#01H ;TMOD设置

    MOV TH0 ,#3cH;

    TL0 = #0b0H;  ;初值

    SETB TR0      ;启动定时器,TRx = 1

    SETB EA     ;中断总开关

    SETB ET0    ;定时器0  允许中断

HERE:AJMP HERE

COUNTING:

    INC A        ;a++

    RETI

END

关键字:C51  单片机  定时器  计数器 引用地址:C51单片机————定时器计数器

上一篇:C51单片机中断实验
下一篇:C51单片机————中断系统

推荐阅读最新更新时间:2024-11-21 20:13

Silicon Labs宣布推出方便客户的单片机晶粒销售计划
经全面测试的8位和基于ARM®的 32位Precision32™ MCU晶粒,单个晶圆即可订购 2012年5月17日 -高性能模拟与混合信号IC领导厂商Silicon Laboratories (芯科实验室有限公司, NASDAQ: SLAB)今日宣布推出方便客户的单片机(MCU)晶粒(Die)销售计划,为客户小尺寸封装设计提供额外选择,并缩短产品上市时间。Silicon Labs全新晶粒销售计划最小订购数量仅需单个晶圆(Wafer),不像传统上这类销售需要大数量订购。该销售计划适用于Silicon Labs基于8051内核的8位混合信号MCU以及全新基于ARM® Cortex™-M3内核的32位Precision32
[单片机]
Silicon Labs宣布推出方便客户的<font color='red'>单片机</font>晶粒销售计划
PIC单片机驱动TM1616源程序
/*本程序适用于没有SIP功能的单片机添加SIP发送功能*/ #include pic.h __CONFIG(0x1832); //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 #define clk P10 //定义时钟管脚 #define clk RC3 //定义时钟管脚 #define dio RC5 //定义数据管脚 #define stb RC2 //定义片选管脚 //#define nop _nop_(); #define uchar unsigned char #define uint unsigned int
[单片机]
51单片机是如何产生串口中断的
首先,你要用软件允许中断, 即C语言中EA = 1; 允许总中断ES = 1; //允许串口中断汇编中可用 SETB EA ;允许总中断 SETB ES ;允许串口中断 当单片机接收到一帧数据后,RI会置1,向CPU申请中断,若之前有中断允许,则产生了中断,进入中断服务程序。 当然,单片机发送完一帧数据,TI也会置1,同样会产生中断! 一般我们在发送数据时要关中断,因为一般你不用在发送时不用处理数据; 接收数据时要开中断,以便你在中断服务程序中将接收到的数据进行存储并处理。 补充:其实,不管你有没有允许中断,上位机(此时即给单片机发送信息的机器)只要给单片机发送数据,单片机就会自动接收数据,并把它放在数据缓
[单片机]
51单片机学习笔记———13.2DS1302实时时钟代码部分(1)
代码: 实验序列:11.1 实验任务: 向DS1302中写入初始校准时间,然后不断从DS1302中读出时间并显示 实现现象:程序运行后动态数码管显示初始时间:23-59-50,并不断更新显示 硬件接线:同动态数码管一节要求。 注意事项:(1) DS1302的SPI接口用到了P3.4、P3.5、P3.6,若程序运行有问题查 硬件问题时可以从这三个引脚复用部分查起 (2) DS1302的初始化时间是随便给的,之所以给23.59.50,是为了在10 秒后即可看到24.59.59到00.00.00的跳变。 (3) DS1302寄存器读写的函数编写时要注意时序和LSB这2个要点。 ***
[单片机]
msp430g2553定时器Timer_A
定时器_A 是具有 3 个捕捉/比较寄存器的 16 位定时器/计数器。 定时器_A 能支持多个捕捉/比较,PWM 输 出,和反相时序。 定时器_A 还有广泛的中断功能。 中断可由计数器在溢出条件上产生也可以由每一个捕 捉/比较寄存器产生。 定时器_A 功能包括: • 在四种运行模式下异步 16 位定时器/计数器 • 可选择和可配置的时钟源 • 两个或三个可配置的捕捉/比较寄存器 • 可配置的 PWM 输出功能 • 异步输入和输出锁存 • 对所有定时器_A 中断快速响应的中断向量寄存器 msp430g2553定时器 MSP430g2553具有两个16位的定时器:Timer0/1_A3 是具有 3 个捕获/比较寄存器的 16
[单片机]
msp430g2553<font color='red'>定时器</font>Timer_A
51单片机学习笔记8 -- OLED显示(SPI)
1.OLED简介 有机发光二极管(Organic Light-Emitting Diode, OLED)又称为有机电激光显示、有机发光半导体。由美籍华裔教授邓青云(Ching W. Tang)于1979年在实验室中发现。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低耗电、极高反应速度等优点。 1.2 OLED结构 由基板、阴极、阳极、空穴注入层(HIL)、电子注入层(EIL)、空穴传输层(HTL)、电子传输层(ETL)、电子阻挡层(EBL)、空穴阻挡层(HBL)、发光层(EML)等部分构成。其中,基板是整个器件的基础,所有功能层都需要蒸镀到器件的基板上;通常采用玻璃作为器件的基板,但是如果需要制作可弯曲的柔性
[单片机]
51<font color='red'>单片机</font>学习笔记8 -- OLED显示(SPI)
51系列单片机的系统时钟如何产生
单片机的控制器的定时功能是由时钟和定时电路完成的,它是产生CPU的操作时序。 XTAL1是芯片内部振荡电路输入端,XTAL2为芯片内部振荡电路输出端 具体的产生有以下两种方式: 一:内部方式 则是利用芯片内反相器和电阻组成的振荡电路,,在XTAL1和XTAL2引脚上接定时元件,如压电晶体和电容组成的并联谐振电路,则内部可产生与外加晶体同频率的振荡时钟。一般晶体可以在1.2MHZ到12MHZ之间任意选择,电容一般选择在5pf到30pf,对时钟频率有微调作用。 二:外部时钟方式 如果采用外部时钟方式,此时要把XTAL1接到外部始终提供电路,XTAL2接地。这种情况一般是当整个单片
[单片机]
51系列<font color='red'>单片机</font>的系统时钟如何产生
SPMC65P2408A单片机在电冰箱中的应用
1 引言 目前,家用电冰箱按箱内冷却方式来分,可分为间冷式和直冷式两种。间冷式电冰箱俗称无霜电冰箱,直冷式电冰箱俗称有霜电冰箱。按照不同的分类可以将电冰箱分为以下几种形式: 从2000年开始,家用蒸气压缩式电冰箱的销量与日俱增,根据互联网消息,2001年国内电冰箱共生产1349万台,比2000年增长5.63%,其中有300多万台出口,逐年上升,国内的消化能力也就900到1000万台。海尔、科龙、新飞、美菱等四家企业占据着市场的领先地位,2001年的销售量均超过100万台。 在一次城市居民家庭民意调查中,电冰箱的普及率已经达到了85.4%,其中拥有两台电冰箱的家庭比例为3.6%。目前城市居民家庭拥有电冰箱容积较为分散
[单片机]
SPMC65P2408A<font color='red'>单片机</font>在电冰箱中的应用
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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