51单片机定时器/计数器


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

Created with Raphaël 2.1.2张三张三李四李四嘿,四哥, 定时器和计数器有哪几种实现哦?想了想主要有三种方法那三种呢?软件定时|数字电路定时|可编程定时/计数器它们都是怎么实现的呢?额! 你猜。。。
  • 软件定时

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

  • 数字电路硬件定时
    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. 中断打开没
  2. 怎么触发中断
  3. 中断的启停
  4. 多个中断触发后如何响应

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

GATE1 C/T1 M1 M0 GATE0 C/T0 M1 M0
T1门控开关 T1计数/定时 T1方式选择 T1方式选择 T0门控开关 T0计数/定时 T0方式选择 T0方式选择

GATE:
1. 门控信号 ,GATE=0,TRx=1 自启动的方式
2. GATE=1,TRx=1,INTx=1 启动定时/计数器工作(一种以INTx作为外界启动条件的方式)
C/-T:
定时、计数选择 —– 1定时0计数
M1M0:
定时计数器的四种工作方式选择

工作方式 M1 M0
方式零 0 0
方式一 0 1
方式二 1 0
方式三 1 1

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

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
T1中断请求 T1工作启停 T0中断请求 T0工作启停 int1中断请求 int1中断触发方式 int0中断请求 int0中断触发方式
1请求0无请求 1启动0停止 1请求0无请求 1启动0停止 1请求0无请求 1下降沿0低电平 1请求0无请求 1下降沿0低电平

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.定时计数器计数初值和初始化

计数初值的计算:

  1. 计数方式:初值C = 模 - X(要计算的脉冲个数)
  2. 定时方式:初值C = [t /MC]补 = 模 - [t /MC](t定时的时间、MC机器周期,MC = 12/fosc)
  3. 计数初值示例:

    方式0:初值C = (64H)补 = 2000H - 64H = 1F9CH
    方式1: 初值C = (64H)补 = 10000H - 64H = FF9CH
    方式2: 初值C = (64H)补 = 100H - 64H = 9CH

初始化:

  1. 计算初值
  2. TMOD设置
  3. 写入计数初值THx、TLx
  4. 启动定时器,TRx = 1
  5. EA = 1(打开中断总开关)
  6. ETx = 1 允许中断
  7. 编写中断子程序

#include<reg51.h>
unsigned char i=0;
int0() interrupt 1//定时器0 中断函数
{i++;//计算中断次数
}
main()//主函数
{//计算初值TMOD = 0x01;//TMOD设置TH0 = 0x3c;TL0 = 0xb0;//初值TR0 = 1//启动定时器,TRx = 1EA=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 = 1SETB EA     ;中断总开关SETB ET0    ;定时器0  允许中断
HERE:AJMP HERE
COUNTING:INC A        ;a++RETI
END

如有错误!请多多包含,方便的话留个言!我好马上修改。

C51单片机————定时器计数器相关推荐

  1. 单片机定时器_单片机定时器/计数器基本原理

    目前常用的单片机中往往都配备了定时器/计数器.在AT89S52芯片内包含有三个16位的定时器/计数器:T0.T1和T2,其核心是加1计数器.我们主要要求掌握T0和T1的结构和功能.学习中要注意从电路结 ...

  2. 51单片机定时器/计数器(定时器中断)

    51单片机定时器/计数器(中断系统:定时器中断) 实现功能 通过定时器终端控制LED灯 D1 间隔一秒闪烁 单片机型号:STC89C52 定时器介绍 1.51单片机定时器原理 定时器实质上就是一个加1 ...

  3. 基于单片机定时器/计数器的时钟设计及计数设计

    基于单片机定时器/计数器的时钟设计以及计数设计 第一部分 前言 第二部分 定时器/计数器的原理 MCS-51定时器/计数器的结构 定时器/计数器相关特殊功能寄存器 定时器/计数器工作方式 第三部分 定 ...

  4. 51单片机——定时器/计数器

    目录 1.概述 2.定时器/计数器 2.1 定时功能 2.2.1 定时功能的用法 2.1.2 任意定时方法 2.2 计数功能 2.2.1 计数功能的用法 2.2.2 任意计数方法 2.3 定时器/计数 ...

  5. 单片机 定时器/计数器

    单片机 定时器/计数器 一.简述     MCS-51系列单片机内部有两个16位定时器/计数器,即定时器T0和定时器T1.它们都具有定时和计数功能,可用于定时或延时控制,对外部事件进行检测.计数等. ...

  6. 定时器计数器实验C语言程序,单片机定时器计数器实验报告.docx

    单片机定时器计数器实验报告 单片机定时器计数器实验报告 篇一:单片机计数器实验报告 计数器实验报告 ㈠ 实验目的 1. 学习单片机内部定时/计数器的使用和编程方法: 2. 进一步掌握中断处理程序的编程 ...

  7. 单片机定时器/计数器编程

    实验二  单片机定时器/计数器编程 一.实验目的 1.掌握单片机定时器/计数器的工作方式: 2.掌握单片机定时器/计数器的编程方法. 二.实验内容 1.学习单片机定时器/计数器的工作方式.初始化以及应 ...

  8. 51单片机定时器计数器原理以及应用(方波、pwm、脉冲计数、高电平脉宽测量)

    1.基本原理:http://www.51hei.com/bbs/dpj-103111-1.html 补充: 1.TMOD定时器/计数器工作方式寄存器 GATE=1时,定时器由INT和TR共同控制,用于 ...

  9. 单片机定时器精准定时_通过51单片机定时器/计数器实现精确延时

    MCS-51单片机内部共有两个16位可编程定时器,计数器,即TO.Tl.既有定时功能,又有计数的功能.每个定时器都是由两个8位的特殊功能寄存器THi和TLi组成(i=0.1).TMOD是TO和Tl的工 ...

最新文章

  1. TensorFlow Frontend前端
  2. python round()四舍五入有偏差 注意了解
  3. 认清企业现状,做好信息化建设
  4. qt qml scrollbar 移动APP风格的滚动轴
  5. 元素隐藏的三种方式对比(针对移动端项目中的按钮,先隐藏且不能被点击 visibility:hidden)
  6. 中求解数组中元素个数_JavaScript之学underscore在数组中查找指定元素
  7. ntent action大全
  8. 计算机网络的体系结构
  9. Linux配置nginx打开报404,Linux下Nginx配置404页面的方法
  10. android7.0+关闭wifi连接CA验证
  11. c语言录屏软件wps,WPS制作录屏视频
  12. 华为安装gsm框架_华为手机怎么安装 GMS 框架和谷歌应用?
  13. 用python将文件夹里的图片统一修改名字
  14. netty做一个posp的网络_Java网络通信基础系列-Netty实现HTTP服务
  15. 双系统linux开机黑屏,解决双系统中ubuntu开关机异常,黑屏,出现“nouveau , SCHED_ERROR”字样等的问题...
  16. 抓取微信小程序页面丶小程序源码
  17. 【绘图】python 配色表
  18. tao.Opengl
  19. AirPods Pro好在哪
  20. 6款超实用微信小程序,任何手机都需要!

热门文章

  1. cmb网站服务器失去响应代码,3.5.2 连接到服务器并响应各种连接事件(2)
  2. android listview动态添加viewpager,向 ViewPager 中添加 包含 ListView 的 Fragment
  3. HTTP1.1/2.0与QUIC协议
  4. 【洛谷】普及练习场 深度优先搜索【易】
  5. Exp3 免杀原理与实践 20164314
  6. 后台MemoryStream图片流用ajax接收乱码问题
  7. Mouse Detected Problem
  8. LeetCode7.反转整数
  9. 【JZOJ3885】【长郡NOIP2014模拟10.22】搞笑的代码
  10. android在程序中打开另一个程序