51单片机的定时/计数器(CTC)及应用

发布者:BlissfulDreams最新更新时间:2015-03-24 来源: diangon关键字:51单片机  定时  计数器  CTC 手机看文章 扫描二维码
随时随地手机看文章
51单片机内有两个定时/计数器,称为T0和T1,是16位的,所以它们各由两个8位的特殊功能寄存器(SFR)组成,即T0=TH0+TL0,T1=TH1+TL1,默认情况下,通电后它们是不启动的。

一、定时/计数器的应用

1.计数功能:

2.定时功能:

二、定时/计数器的工作原理

定时/计数器中的核心部件为可预置初值计数器。预置初值后开始计数,直至计数值产生溢出,可查询判断此溢出;也可申请中断。

  • 定时/计数器的结构示意图

 

2.定时器的控制、模式寄存器

TMOD定时器方式寄存器(89H)         TCON定时器控制/状态寄存器(88H)

  • 定时实验(采用查询法)

如图,P0口接了8只发光管,高电平亮。用定时器实现50ms延时,轮流点亮。(注:实验时用短路帽短路JMP2的2-3脚和JMP3的2-3脚)

参考程序:

         Org    0000H

Main:    mov    tmod,#00000001B   ;选T0,定时,方式1

         Mov    th0,#3ch

         Mov    tl0,#0b0h          ;预置初值15536

         Setb    tr0                ;启动T0

         Mov    a,#00000001B      ;设置显示模式

Loop:    mov     p0,a

         RL      a

         Jnb      tf0,$             ;等候50ms的溢出

         Clr      tf0

         Mov    th0,#3ch

         Mov    tl0,#0b0h          ;预置初值15536

         Sjmp    loop

思考题:⑴  若定时30ms,怎样修改程序?

⑵  若定时1秒,怎样修改程序?

⑶  若定时任意长时间,怎样修改程序?

  • 计数实验

如图,计数器T0的计数引脚(P3.4脚)接有一开关,每按一次开关,理论上计数器T0就会计一个数(若考虑抖动问题,实际上可能会计多个数),读出该数送P0口,通过P0口的发光管的亮灭情况,读出计数值(设T0计数、用方式2)。

 

参考程序:

         Org    0000H

Main:    mov    P0,#0

mov    tmod,#00000110B    ;选T0,计数,方式2

         Setb    tr0                ;启动T0

Loop:    mov    a,tl0               ;读出T0的低8位值送A寄存器

         Mov   P0,a               ;送P0口显示

         Sjmp   loop

思考题:⑴  若计数100,然后声光指示,怎样修改程序?

⑵  若计数500,然后声光指示,怎样修改程序?

  • 定时、计数联合实验(采用查询法)

任务:定时器T0产生2000Hz方波信号,从P3.6脚输出,再从T1的计数脚P3.5引入;T0还产生1秒的定时信号,定期打开和关闭T1计数器。打开T1时,方波信号输入并计数;关闭T1时,读出T1的值送P0口和P1口显示(注:P1口的值是反相的,即低电平亮,高电平灭。当然可以取反后送P1口)。[page]

参考程序:

;*********************************************************

;*************       数字频率计程序        ***************

;*********************************************************

;任务:利用定时器T0定时,产生2KHz方波,从P3.6脚输出,

;并送P3.5脚(T1的计数脚)进行计数;T0还产生1秒定时,不断地

;打开和关闭T1计数器,并将读取到的频率值送P0口和P1口显示。

 

;分析:2KHz方波,设占空比为50%,则高低电平的时间各为250uS,

;可用T0定时,选方式2,自动重新装载初始值6。T1计数,方式1。

 

;硬件上,将P3.6脚与P3.5脚相连(注意从排针上相连或短路帽短接)即可。

 

               org     0000h

               ljmp    main

;*********************************************************

;主程序

               org     0030h

main:          mov     p0,#0

               mov     p1,#0ffh

                        mov     p3,#0ffh             ;初始化,关闭所有发光管

                        mov     r3,#0

                        mov     r4,#0                     ;r3-r4组成1秒计数器

                        mov     tmod,#01010010B ;T1计数,方式1;

                                                ;T0定时,方式2。

                        mov     th0,#6

                        mov     tl0,#6                 ;预置初始值6,准备计数250

                        mov     th1,#0

                        mov     tl1,#0

                        setb      tr0                    ;启动定时器T0

main_disp:      jnb      tf0,  main_disp

               clr      tf0

                        cpl      p3.6                ;输出方波

                        inc      r3

                        cjne     r3,#0,next

                        inc      r4

               sjmp    main_disp

next:           cjne     r3,#0a0h,main_disp

               cjne     r4,#0fh,main_disp ;判断够4000次计数吗?

                                                 ;因为中断4000次为1秒。

                        mov      r3,#0

                        mov      r4,#0                    ;1秒计数器清0

                        cpl       tr1                       ;启动或关闭T1计数器

                        jb        tr1,main_disp    ;若T1启动则返回,否则去读取频率值

                        mov      a,tl1

                        mov      P0,a            ;将频率值的低8位送P0口显示

                        mov      a,th1

               cpl       a               ;考虑P1口是低电平点亮,故取反

                        mov      P1,a            ; 将频率值的高8位送P1口显示

                        mov      tl1,#0

                        mov      th1,#0                  ;T1计数器清0

                        ljmp      main_disp

               end

;注:以上送P1和P0口的数据为16进制。经实验,得到的16进制值为07H、0D0H。

;***************************************************************

关键字:51单片机  定时  计数器  CTC 引用地址:51单片机的定时/计数器(CTC)及应用

上一篇:51单片机使用心得
下一篇:学习51单片机有关晶振的问题总结

推荐阅读最新更新时间:2024-03-16 13:55

基于51单片机+红外遥控解码+LCD1602显示
基本介绍 什么是红外线? 人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为0.62~0.76μm;紫光的波长范围为0.38~0.46μm。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线.红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。 红外线系统的组成 红外线系统一般由红外发射装置和红外接收设备两大部分组成。红外发射装置又可由键盘电路、红外编码芯片、电源和红外发射电路组成。红外接收设备可由红外接收电路、红外解码芯片、电源和应用电路组成。通常为了使信号更好的被发射端发送出去,经常会将二进制数据信号调制成为脉冲信号,通过红外发射管发射。常用的有通过
[单片机]
基于<font color='red'>51单片机</font>+红外遥控解码+LCD1602显示
STM32学习笔记(3):系统时钟和SysTick定时
1.STM32的时钟系统 在STM32中,一共有5个时钟源,分别是HSI、HSE、LSI、LSE、PLL (1)HSI是高速内部时钟,RC振荡器,频率为8MHz; (2)HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围是4MHz – 16MHz; (3)LSI是低速内部时钟,RC振荡器,频率为40KHz; (4)LSE是低速外部时钟,接频率为32.768KHz的石英晶体; (5)PLL为锁相环倍频输出,严格的来说并不算一个独立的时钟源,PLL的输入可以接HSI/2、HSE或者HSE/2。倍频可选择为2 – 16倍,但是其输出频率最大不得超过72MHz。 其中,40kHz的LSI供独立看门狗IWDG使用,另
[单片机]
什么是指令 51单片机共有多少指令
所谓 指令 ,就是规定计算机进行某种操作的命令。 一条指令只能完成有限的功能,为使计算机完成一定的或者复杂的功能,就需要一系列指令。一般来说,一台计算机的指令越丰富,寻址方式越多,且每条指令的执行速度越快,则它的总体功能就越强。 我们学习的80C51单片机共有111条指令,这111条指令共有七种寻址方式。其中: 数据传送类指令 29条 算术运算类指令 24条 逻辑运算及移位类指令 24条 控制转移类指令 17条 位操作指令 17条 这111条指令的具体功能我们在后面的课程中将会逐条的与大家进行分析。
[单片机]
PORT.H头文件下载-AVR定时器通用IO端口定义
/***************************************************************************** 文件名称:PORT.H 文件标识:_PORT_H_ 摘 要:AVR定时器通用IO端口定义 *****************************************************************************/ #ifndef _PORT_H_ #define _PORT_H_ #define P(X,Y) (BYPORT(X)*256+BYBIT(Y)) //合并引脚信息 #defin
[单片机]
正点原子战舰V3 31讲 通用定时
STM32F10X 最多有8个定时器 例如 STM32F103RC 有 4个通用定时器 2个高级定时器 2个基本定时器 三种定时器的区别 F1系列只有16位定时器 16位可编程预分频 将定时器的时钟源进行分频 预分频相当于将频率进行一个除法运算。可以降低时钟的频率。时钟低的话计数时间可以更长。 每一个定时器 都有4个独立的通道 STM32 中文参考手册的第13章 时钟来源分类 1.内部时钟来自APB1 触发控制器将 内部时钟作为定时器的时钟来源 2 外部引脚输入 ETR 引脚 ETR对应的引脚可以 在数据手册上找---引脚功能描述 搜索 ETR就可以找到ETR对应的的相关功能
[单片机]
正点原子战舰V3 31讲 通用<font color='red'>定时</font>器
51单片机-IO口
IO口寄存器是RAM中的一些特殊功能单元,映射到片上外设相应的功能。如P0就是寄存器的变量,代表的是一个8位的存储空间,它的每一位映射到单片机的P0口的每一位。寄存器是程序,单片机以及外设口发生联系的桥梁。IO口是可以将 0 或 1 转换为电压信号的端口。单片机中最常用的TTL电平:0V代表 0 ,+5V代表 1 。MCS51有4个8位IO口:P0,P1,P2,P3,每个IO口有8位。 IO口的性能指标: 灌电能力:能够流入IO口的最大电流 拉电能力:能够从IO口流出的最大电流 上拉电阻与下拉电阻 最大输入电压 输入口接了一个大于10M欧的电阻,输入+5V或0会产生微弱的电流。 IO口的输出:
[单片机]
<font color='red'>51单片机</font>-IO口
跟我学51单片机(一):单片机最小系统组成与I/O输出控制
  单片机是一门实践性较强的技术,很多初学者在学习单片机技术开发的时候往往一头雾水,不知何从下手。为此,笔者结合自己使用单片机多年的经验,特意设计了单片机开发所需的Study-c 整机和硬件套件,并结合套件精心编写了单片机从入门到精通系列教程。通过讲述单片机原理、电路设计、应用开发软件工具、编写实验实例让读者全面接触单片机技术。教程编排上由浅入深,循序渐进,内容力求完整、实用、趣味并存,使读者在轻松愉快的学习过程中逐步提高单片机软硬件综合设计水平。   一、内容提要   本讲主要向大家介绍51 系列单片机的最小系统的实现并通过编写程序来实现对单片机IO 口的输出控制。以点亮外部连接的LED(发光二极管)为例,简要的介绍单片机的原
[单片机]
跟我学<font color='red'>51单片机</font>(一):单片机最小系统组成与I/O输出控制
VxWorks下的异步通用定时器设计
   1 概 述   VxWorks是WindRiver公司开发的高性能实时嵌入式操作系统内核。在应用软件开发过程中经常会用到定时器。VxWorks下要实现定时功能有2个途径:一,借助taskDelay函数实现;二,使用VxWorks提供的看门狗(watchdog)。使用taskDelay函数实现定时器的缺点在于它是基于任务的,任务优先级会导致定时不准。看门狗基于系统时钟中断,定时精度大大优于前者,但是对用户的回调函数有诸多限制(如不允许使用semTake、printf等需要等待获取某种资源的函数,否则会引起死机)。另外,看门狗只触发一次回调函数,如果用户需要周期定时器就需要重新启动看门狗。   本文设计了基于看门狗机制的
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved