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-13 10:56

微电脑控制焊机三相晶闸管触发电路设计
1. 引言 人类的平衡能力是人能够进行各种运动的基础,人的站立、坐卧、行走都需要有平衡能力。一旦人的平衡能力有障碍,则人的行动能力就受制约,给学习、生活带来极大的不便。在现代化的社会,人口老龄化问题突出,老年人因某种疾病而导致脑损伤引起平衡能力降低,行动能力受阻。因此,在临床治疗中,需要一种能对平衡功能检验的设备。我校在上海瑞金医院的协作下,在分析了国际、国内有关资料的基础上,应用先进的计算机控制技术研制成功了多功能的人体平衡康复仪。使用该仪器可以客观、定量地进行平衡功能的测试、分析和训练,可以地进行平衡能力的静态测试和动态训练。为临床研究提供了有效的手段。 2.仪器功能 仪器的测量范围:10---360kg。 重心位置: 1
[单片机]
微电脑控制焊机三相晶闸管触发电路设计
学习笔记之51单片机键盘篇
(一)基础补充 1.键盘的任务 (1)判别是否有键按下?若有,进入下一步。 (2)识别哪一个键被按下,并求出相应的键值。 (3)根据键值,找到相应键值的处理程序入口。 2.键盘的识别 按键的闭合与否,反映在行线输出电压上就是呈现高电平或低电平,单片机通过对行线电平的高低状态的检测,便可以确认按键是否按下或松开。为了确保单片机对一次按键动作只确认一次按键有效(所谓按键有效,是指按下按键后,一定要再松开),必须消除抖动期t1和t3的影响。 3.如何消除按键的抖动 (1)用软件延时来消除按键抖动,基本思路是:在检测到有键按下时,该键所对应的行线为低电平,执行一段延时10ms的子程序后,确认该行线电平是否仍为低电平,如果仍为低
[单片机]
学习笔记之51<font color='red'>单片机</font>键盘篇
stm32单片机引脚介绍及功能
stm32是一种ARM Cortex-M内核单片机,下面小编为大家介绍一下单片机引脚介绍及功能。单片机旁边的一排金属针脚就是引脚,不同的引脚有不同的功能。 引脚大概分为4种,分别是电源、时钟、控制和I/O引脚。stm32的引脚一般有GPIO和AFIO两种用途。 比如有的引脚是电源正极和黑色标记的电源负极,这是来给单片机提供电源的,要把电流引到对应的引脚才能正常工作。 还有晶体震荡电路反向输入端和输出端引脚,晶体能够为单片机提供基本的震荡源。如果没有晶振的话,单有电源单片机是不能启动的,就和人们的心跳一样。 RESET(PC6)复位信号输入端引脚是用来重启单片机的,和电脑一样,有时候单片机也会死机,这个时候就需要RE
[单片机]
基于STC单片机的32*32点阵LED显示汉字
图上摆放的是上面一排引脚是行,下面一排引脚是列。行是LED阳极。 行列各由四个74HC573控制,每个控制8个脚。同时注意单片机P0口上拉保持供电充足。 还有注意每行的扫描时间要合理设置。否则会有显示残缺。根据实际设置吧!!! 横向显示4个字:少占鱼制作 其实可以把这个程序和我另外的一个单片机串口与电脑通信的程序结合起来,加上我用VC做的上位机界面。可以自由输入显示内容,还可以反向控制电脑的一些操作。不过我还是热衷不用电脑输入显示内容,而用一只感应笔扫描一个32*32LED模板,实现自己点哪就让哪个LED亮的效果。简单有省事。等我做出实物来再发吧!!!其实就是加个光敏三极管,LED模板上各个LED点
[单片机]
基于STC<font color='red'>单片机</font>的32*32点阵LED显示汉字
AT89C51单片机外部中断
C51单片机外部中断调用P3_2 ,P3_3口。 中断方式有两种,分别为电平方式和脉冲方式。 中断请求有0和1。中断总允许为EA=1, IE0:外部中断请求0标志位; IT0:外部中断0触发方式设置位,IT0=1下降沿触发,IT0=0低电平触发; IE1:外部中断请求1标志位; IT1:外部中断1触发方式设置位,IT1=1下降沿触发,IT1=0低电平触发; 外部中断0中断服务程序的编写: void 函数名()interrupt 0 { } 外部中断1中断服务程序的编写: void 函数名()interrupt 2 { } 参考实验程序(主程序为P1口输出跑马灯程序),编写中断子程序使得发生外部中断0,且
[单片机]
AT89C51<font color='red'>单片机</font>外部中断
9.STC15W408AS单片机EEPROM
STC15系列单片机内部集成了大容量的EEPROM,与其程序空间是分开的。利用ISP/IAP技术可将内部Data Flash当EEPROM,擦写次数在10W次以上。EEPROM可分为若干个扇区,每个扇区包含512字节。使用时,建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同扇区,不一定要用满。数据存储器的擦除操作是按扇区进行的。 EEPROM可用于保存一些需要在应用中修改并且掉电不易丢失的参数数据。在用户程序中,可以对EEPROM进行子节读/字节编程/扇区擦除操作。在工作电压Vcc偏低时,建议不要进行EEPROM/IAP操作。 一、IAP及EEPROM相关寄存器 1.1 数据寄存器IAP_D
[单片机]
9.STC15W408AS<font color='red'>单片机</font>EEPROM
全面剖析久经验证的8051架构微控制器
有的朋友或许看到这篇文章会不屑的说:8051早就淘汰了,现在是STM32/8、MSP430的天下了,不可否认STM、MSP的实力,但8051却仍是目前用的最多的微控制器,只因为经典! 相信只要在行业中提到8051微控制器,无人不知无人不晓,无论你是资深业界领袖还是刚步入电子行业的毕业生,对8051微控制器都有着同样答案:经典,由衷的给个赞! 凭借 Atmel 各种基于 8051 指令集的功能丰富的8位微控制器,可以确保我们8051设计是优秀的。所以无论工程师们采用的是传统、现有还是全新的设计,您都能获得最新的特性和功能,同时产品提供了从2KB到64KB各种规模的闪存存储器…… NO.1: AT89LP 系列闪存
[单片机]
MCU解密全攻略 为何所有MCU都能被破解(三)
可编程的智能卡制造商走得更远,干脆砍掉标准的编程接口。取而代之的是启动模块,可以在代码载入后擦掉或屏蔽掉自己。这些卡只能在初始化时被编程一次,之后只能响应使用者的嵌入软件所支持的读写存在卡里的数据或程序。   图1-9 意法ST的ST16系列智能卡芯片表面金属层的敏感网格。   近期的一些智能卡使用存储器总线编码(Bus encryption)技术来防止微探测攻击。即使破解者获得数据总线的数据也不可能知道密码或别的敏感信息。这种保护措施直指侵入式和半侵入式攻击。但非侵入式攻击仍然可以像正常的CPU一样访问控制非编码信息。事实上,几年前就发现廉价地破解编码信息的方法。   图1-10 100倍显微镜下的英飞凌Infineo
[模拟电子]
<font color='red'>MCU</font>解密全攻略 为何所有<font color='red'>MCU</font>都能被破解(三)

推荐帖子

信号、系统和变换 原书第5版
本书清晰而全面地叙述了关于信号、系统和变换的理论与应用,介绍了信号与系统的数学背景,主要包括:傅里叶变换、傅里叶级数、拉普拉斯变换、离散时间傅里叶变换与离散傅里叶变换,z变换。本版在课程体系的组织上为读者不同的侧重需求提供了极大的灵活性。MATLAB示例贯穿于书中各章,同时也将MATLAB学生版本的先进特征体现于例题和习题的应用之中。https://download.eeworld.com.cn/detail/sigma/613133信号、系统和变换原书第5版这书不错啊!感谢楼主
arui1999 下载中心专版
HelperA64核心板设计之第一版
我的核心板设计思想包括以下几大原则:1、高速集成,难度大一点的必备电路要放在核心板上(比如:DDR)2、极好的稳定性和抗干扰性能3、接口定义合理,使底板极易走线4、布局美观,整板发热均匀5、PCB设计合理,生产、维修容易HelperA64第一版接口定义如下图:此图是我花比较大的价钱聘请的高级硬件工程师设计的,最后因为做出这样的核心板接口,被我给开了。仔细看各线序定义,根本就不是按通用外设的需求定义的,比如,hdmi,线序与标准的hdmi接口彻底相反,这样底板走两层板出来的hdmi
spacexplorer 嵌入式系统
【SensorTile】使用软件I2C驱动传感器
前一段时间,已经成功移植MicroPython到了SensorTile上,各种指令可以正常使用了,然后就开始研究驱动传感器的问题。但是遇到一个比较严重的问题,就是MicroPython不支持3-wire(半双工)模式的SPI,而SensorTile上就是使用了这种方式,这样就不能直接使用硬件SPI接口了。开始设想先设置标准SPI接口,然后利用stm库,通过设置SPI2的寄存器,将SPI切换到3-wire模式。但是经过一周左右的实验,发现这种方法目前行不通,SPI上无法读取到任何数据。看来最
dcexpert MEMS传感器
提高PLC 控制系统的可靠性
:从硬件电路、外围器件及软件编程等方面详细论述了提高注聚装置控制系统可靠性、稳定性、安全性的几种解决措施和实现方法,对PLC控制系统具有推广应用价值。提高PLC控制系统的可靠性
frozenviolet 工控电子
FPGA处理音频问题
本人最近用FPGA对UDA1341进行AD采样,请问有人用过UDA1341吗,该芯片的AD和DA可以同时使用吗,另外芯片的L3接口对控制AD和DA采样应该没什么作用吧,AD和DA只要对其sysclk,bclk,ws,的时序操作对了就可以了吧?FPGA处理音频问题怎么没用钱了呢?也在研究中
kready EE_FPGA学习乐园
液晶经典故障修复全程纪实
本帖最后由jameswangsynnex于2015-3-320:02编辑液晶显示器越来越受到用户的欢迎,全球几大显示器生产厂商也将战略眼球转向了液晶显示器,但是和CRT显示器一样,液晶显示器的故障率照样也是存在的。很多用户并没有了解液晶显示器的内部结构,一出现问题只能求助于售后服务公司,如果是过了保修期的话还得付上一笔不小的维修费用。下面的一篇文章是液晶显示器中比较经典的一个故障,希望在为大家解决这类故障之余,也能给大家普及一下液晶显示器的内部结构知识。    TCLML-5
ruijia 移动便携
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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