STC89C516单片机内部有3个16位可编程的定时器/计数器,即定时器T0、T1和T2。它们既有定时又有计数功能。通过设置相关的特殊功能寄存器可以选择启动定时功能或计数功能。需要注意的是,这个定时器系统是单片机内部一个独立的硬件部分,它与CPU和晶振通过内部控制线连接并相互作用。CPU一旦开启定时功能后,定时器便在晶振的作用下自动开始计时,当定时器的计数器计满后,会产生中断,即通知CPU处理。
定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时器/计数器的工作方式寄存器,用来确定T0和T1的工作方式和功能;TCON是控制寄存器,控制T0和T1的启动和停止以及设置溢出标志。T2MOD是定时器T2的模式控制寄存器。T2CON是T2的控制寄存器。
计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出的脉冲经过12分频后送来;另一个是T0或T1引脚输入的外部脉冲。每来一个脉冲计数器加1,当加到最大值时,再输入一个脉冲就使计数器归0,并且计数器的溢出使TCON寄存器中的TF0或TF1置1。如果使能了中断功能,则还会向CPU发出中断请求。如果定时器/计数器工作于定时器模式,则表示定时时间到;如果工作于计数模式,则表示计数值已满。
当设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个震荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期就是定时时间。
如果设置为计数模式,外部事件脉冲由T0或T1引脚输入到计数器,当CPU在一个周期内采集到高电平输入,而在下一个周期采集到低电平输入时,则计数器加1,更新的计数值在下一个周期装入计数器。由于检测一个下降沿需要两个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2us。
关键字:51单片机 定时器模块 STC89C516
引用地址:
51单片机(十五)—— 定时器模块介绍
推荐阅读最新更新时间:2024-11-09 11:52
基于AT89C51单片机的数码管循环点亮0到9(Keil+Proteus+C语言)
要求描述: 选用AT89C51单片机,绿色7段共阴极数码管,使用C语言实现 仿真图 代码 #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE = { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f }; void DelayMS(uint x) { uchar t; while(x--) for(t=120;t 0;t--); } void main() { u
[单片机]
单片机编程-如何快速零基础到入门51单片机(一)
要学习单片机,首先我们了解一些计算机的基本概念和基础操作,然后了解电路及其元器件的基本理论,为我们学习更高级的单片机入门IT和信息技术行业打下一定的基础。 本次我们先学习普中51单片机开发板,这块开发板能在淘宝上买到,而且这种板子也算是比较便宜的了,大概十几块钱,先声明我们和淘宝卖板子的店家没有任何关系,只是告诉大家购买的地方。 华维单片机编程:免费领!单片机入门到高级开挂学习路径(附教程+工具)37 赞同 · 8 评论文章 然后我们还一台需要Windows电脑,XP win7.8.10都是可以的操作都是大同小异的,但是特别说明下就是苹果的电脑好像不行,因为我们接下来使用的这个keil5软件没有苹果的版本,如果你的电
[单片机]
基于51单片机利用中断实现100以内的按键计数
具体功能实现: 按下“计数”按键可以自增1,按下“清零”按键可以将两位数码管全部置0 使用器件: 两只数码管、总线、排阻、两个按键、AT89C51芯片 Proteus仿真原理图: 仿真: 知识介绍 : Proteus布线 为了让整个原理图看上去简洁明了,我们对元器件的导线进行标号,而不是直接和芯片相连。 数码管共阳、阳极断码 共阳极(1-9): 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 共阴极(1-9): 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f 中断系统 执行现程序的过程中,出现某些急需处理的异常情况或
[单片机]
51单片机烧写程序的方法
STC89C51是应用广泛的51单片机,很多人都是通过该单片机入门学习的,单片机的学习需要勤动手。单片机需要烧写程序,要用到相关的软件和硬件。下面介绍一下51单片机烧写程序的方法。 1 所用到的硬件工具 51单片机烧写程序需要用到单片机的UART串口,所用到的工具为USB/TTL,具有四个引脚分别为5V、GND、TXD、RXD,需要和单片机的UART口连接,在连接的时候需要注意的是,串口要交叉连接,即USB/TTL的TXD和单片机的RXD连接;USB/TTL的RXD和单片机的TXD连接。 2 所用到的软件以及设置 STC的51单片机需要用到STC-ISP软件,该软件可以在STC的官网上下载到 烧写过程为:1)选择具体的单片机型
[单片机]
51单片机学习笔记4 -- 蜂鸣器控制
1.蜂鸣器简介 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示 1.分类 按其驱动方式的原理分,可分为:有源蜂鸣器(内含驱动线路,也叫自激式蜂鸣器)和无源蜂鸣器(外部驱动,也叫他激式蜂鸣器); 按构造方式的不同,可分为:电磁式蜂鸣器和压电式蜂鸣器; 按封装的不同,可分为:DIP BUZZER(插针蜂鸣器)和SMD BUZZER(贴片式蜂鸣器); 按电流的不同,可分为:直流蜂鸣器和交流蜂鸣
[单片机]
一种基于51单片机利用74HC595驱动数码管的技术
基于51单片机利用八个数码管花样显示如下: xxx11xxx→xx2222xx→x333333x→44444444→x555555x→xx6666xx→x777777x→88888888 每个状态各一秒,显示反复循环,其中x表示对应的数码管熄灭 问题补充:是共阳极的数码管,利用595芯片驱动的。采用C语言。 =================================================== 最佳答案:程序设计完毕,采用PROTEUS仿真截图如下。 程序如下: //============================================= #include #define uint uns
[单片机]
8051单片机实战分析(以STC89C52RC为例) | 03 - LED流水灯
1 原理图 从图中不难看出,整个P2端口都接有LED,写代码时需要驱动整个P2端口。 2 代码 #include reg52.h //此文件中定义了单片机的一些特殊功能寄存器 #include intrins.h //因为要用到左右移函数,所以加入这个头文件 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; #define led P2 //将P2口定义为led 后面就可以使用led代替P2口 /**********************************************************
[单片机]
8051单片机的特点_8051单片机的控制总线信号有哪些
8051单片机的特点 8051的指令系统由111条指令组成。如果按字节数分类,有49条单字节指令46条双字节指令和16条三字节指令,以单字节指令为主;如果按照指令执行时间分类,有64条单周期指令、45条双周期指令和2条四周期指令,以单周期指令为主。 8051的指令系统具有以下特点: (1)存储效率高、执行速度快,可以进行直接地址到直接地址的数据传送,能把一个并行I/O口中的内容传送到内部RAM单元中而不必经过累加器A或工作寄存器Rn。这样可以大大提高传送速度和缓解累加器A的瓶颈效应。 (2)用变址寻址方式访问程序存储器中的表格,将程序存储器单元中的固定常数或表格字节内容传送到累加器A中。这为编成翻译算法提供
[单片机]