找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1589|回复: 1
打印 上一主题 下一主题
收起左侧

单片机 定时/计数器原理

[复制链接]
跳转到指定楼层
楼主
ID:216408 发表于 2017-7-1 20:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一.定时/计数器的结构及工作原理
      定时/计数器的核心部件是二进制加1计数器(TH0、TL0或TH1、TL1)

定时功能----计数输入信号是内部时钟脉冲,每个机器周期使寄存器的值加1。所以,计数频率是振荡频率的1/12。

计数功能----计数脉冲来自相应的外部输入引脚,对负跳变脉冲计数,计数溢出可申请中断,标志位TFX,T0为P3.4,T1为P3.5。
      在TMOD中,各有一个控制位(C/T),分别用于控制定时/计数器T0和T1是工作在定时器方式还是计数器方式。

单片机内部的定时/计数器是一种可编程器件,可设置为四种工作方式,
由两个8位专用寄存器TMOD和TCON进行管理与控制。


二、定时/计数器计数初始化
1. 定时/计数器的初始化方法
初始化的主要内容是对TCON和TMOD编程,计算和装载T0和T1的计数初值。

(1)初始化
1)分析定时器/计数器的工作方式,将方式字写入TMOD寄存器;
                 ( 定/计、内/外启动、工作方式)
2)计算T0或T1中的计数初值,并将其写入TH0、TL0或TH1、TL1;
3)根据需要开放CPU和定时/计数器的中断,即对IE和IP寄存器编程;
4)启动定时器/计数器工作:若要求用软件启动,编程时对TCON中的TR0或TR1置位即可启动;若由外部中断引脚电平启动,则对TCON中的TR0或TR1置位后,还需给外引脚加启动电平。

(2)计数器初值的计算
1)计数器模式时的计数初值
   TC=2M-N  (M为计数器位数,N为要求的计数值)
方式0:M=13,计数器的最大计数值213=8192。方式1:M=16,计数器的最大计数值216=65536;方式2:M=8,计数器的最大计数值28=256;方式3同方式2。
  例如,设T0工作在计数器方式2,求计数10个脉冲的计数初值,
TC=28 -10=246=(11110101)B=0F5H

2)定时器模式时的计数初值
在定时器方式下,定时器T0(或T1)是对机器周期进行计数的。定时时间为:t=(2M-计数初值X)×机器周期                             
则计数初值X= 2M-(t/12*T osc )

  在应用定时/计数器时,溢出标志TFx置位后既可由硬件向CPU申请中断,也可通过用户程序查询TFx的状态,因此对计数溢出信息的处理有以下两种方法。
中断法:在定时器初始化时要开放对应的源允许(ET0或ET1)和总允许,在启动后等待中断。当计数器溢出中断,CPU将程序转到中断服务程序入口,因此应在中断服务程序中安排相应的处理程序。
采用中断方式时的一般编程模式:
                 ORG    0000H
               SJMP   MAIN
               ORG     000BH     (001BH)
               LJMP   T0S
              ORG     0030H
MAIN: MOV    TMOD,#——
                MOV    TH0,#——
                MOV    TL0,#——  
                SETB    ET0;
                SETB    EA;               
                ------------------;置其他初值
                SETB    TR0;
                SJMP     $
T0S:     -------------     ; 重装初值
                --------------    ;处理程序
                RETI

查询法:既在定时器初始化并启动后,在程序中安排指令查询TFx的状态。
LP:JBC        TF0,NEXT;TF0为1,转后面的处理程序,并将TF0复位
      SJMP        LP                 ;TF0为0,继续查询
NEXT:┋

采用查询方式时的一般编程模式:
               ORG     0030H
MAIN: MOV    TMOD,#——
                MOV    TH0,#——
                MOV    TL0,#——
               --------------
                SETB    TR0
WAIT: JBC    TF0,NEXT;
                SJMP   WAIT;
NEXT:MOV    TH0,#——;重装
               MOV    TL0,#—— ;初值
               - ---------     ;处理程序
               SJMP    WAIT
注意问题:
1)方式0、1、3溢出后要重装初值,方式2可自动重装初值。
2)方式 0时TH为8位,TL为5位。





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:495574 发表于 2019-3-22 19:07 | 只看该作者
好  不错 挺有用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表