51单片机的定时器

今天想尝试使用串口通信来控制舵机旋转的时候,由于同时用到了定时器T0和T1(用来设定波特率)。程序有点问题,运行不畅,所以现在想通过写篇文章重新来梳理对51单片机这两个定时器的理解。

STC89C51系列单片机有两个定时器:定时器T0、定时器T1

一、首先了解到51单片机的常用晶振是12MHz的,内部一般是12分频的,也就是12T。所以每计数一次需要1us的时间

二、定时器的工作模式有四种,模式0,1,2的工作模式对T0 、T1都是相同的,但是模式3只有T0才有:

模式0:13位计时器,有TL0的低5位和TH0的全8位构成一个13位的计时器。13位计时器计数溢出后会自动清零,同时把中断标记TF0置1。如果需要重新使用,需要重新去更新时间常数,并定时器的的中断标志位置0.

模式1: 16位计时器,和模式0几乎完全相同,但是因为是16位(TL0有8位 、TH0有8位),所以计时范围大大增加(0~65535),一共是2的16次方。

模式2: 8位自动重载模式。TL0计时结束后,单片机会自动把TH0的重载到TL0中,不需要像前两种模式那样手动重载。

模式3:只有计时器T0才有模式3,计时器T1是没有模式3的。模式3的主要方式是把定时器T0的TL0和TH0分开看作是两个独立的8位定时器。两个定时器需要手动重载

三、定时器的控制寄存器

8051单片机有两个8位的特殊功能寄存器来控制定时器的工作状态;分别是TMOD、TCON

1、工作模式控制寄存器TMOD

这个是一个8位的寄存器,0-3位控制的是定时器T0; 4-7位控制的是定时器T1。

GATE是门控位,用来设定P3^2或P3^3的电压对定时器的计数是够影响的。GATE=0时,表示计数器计数与否与两端口电压状态无关;GATA=1时,计数器是否计数要参考引脚的状态,即P3.2为高时T0才计数,P3.3为高时T1才计数。一般都是设置为0的。

C/T位:计数/计时的选择位。C/T = 0时,定时模式; C/T = 1时,计数模式。

M1M0两位决定了定时器的工作模式:

2、工作状态控制寄存器TCON

原文地址:https://www.cnblogs.com/xing-ting/p/10305958.html

时间: 2024-08-29 13:15:45

51单片机的定时器的相关文章

51单片机实现定时器00H-FFH、定时器000-255

#include< reg51.h> #define uint unsigned int #define uchar unsigned char sfr P0M0 = 0x94; sfr P0M1 = 0x93; sfr P2M0 = 0x96; sfr P2M1 = 0x95; uchar count; uchar i,j,num; uchar code leddata[]={ 0xC0, //"0" 0xF9, //"1" 0xA4, //"

51单片机实现定时器中断0-F

#include <reg51.h> #define uint unsigned int #define uchar unsigned char sfr P0M0 = 0x94; sfr P0M1 = 0x93; sfr P2M0 = 0x96; sfr P2M1 = 0x95; uint count,i,j; uchar code leddata[] = { 0xC0, //"0" 0xF9, //"1" 0xA4, //"2" 0

[转]51单片机 11.0592MHz 产生115200 波特率

连接:http://homezzy.blog.hexun.com/29601793_d.html 今天解决了一个小问题(查书后才得到确切结论...)用51单片机+11.0592的晶振,如何产生115200的波特率? 本来感觉这个小意思,直接初始化定时器1,程序如下: void init_com( void ) { SCON = 0x50 ; //串口工作方式1,8位UART,波特率可变 TMOD |= 0x20 ; //定时器1,工作方式2,自动再装入8位定时器 PCON |= 0x80 ; /

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

单片机中断简介 52单片机一共有6个中断源,它们的符号,名称以及各产生的条件分别如下: INT0 - 外部中断0,由P3.2端口线引入,低电平或下降沿引起 INT1 - 外部中断1,由P3.3端口线引入,低电平或下降沿引起 T0    - 定时器/计数器0中断, 由T0计数器计满回零引起 T1    - 定时器/计数器1中断, 由T1计数器计满回零引起 T2    - 定时器/计数器2中断, 由T2计数器计满回零引起 TI/RI - 串行口中断,串行端口完成一帧字符发送/接收后引起 其中T2是5

51单片机串口通信时的定时器设置的相关问题

51单片机在串口通信时需要有一个定时器去调节与计算机通信的波特率,而定时器设置时需要中断寄存器(IE), 定时器控制寄存器(TCON) ,还有T/C控制寄存器共同配合作用, 但在启动定时器功能时,这三个寄存器的配置顺序十分重要,因为在数据传输时的高速情况下,一点点的数据误差就会导致传输的数据出现错误.而在51单片机的串口通信时必须将配置TCON放在配置这三个寄存器的最后,因为在TCON中含有启动定时器的TR1和TR0位,若先启动后对工作方式和溢出率进行配置,就会导致启动时定时器根本无法像预先设定

51单片机之串口通信(三)

51单片机之串口通信(三) 已有 47 次阅读2015-12-29 00:21 |个人分类:51单片机| 单片机, 通信 用串口实现发送和接收同时可操作: 电脑显示结果如图: 源程序: /*项目名称:串口发送接收实验项目内容:串口发送接收同时进行,计算机发送数据给单片机控制P0口,从而控制LED灯的亮灭,单片机发送数据到计算机,计算机显示出来时间:2015年12月23日项目负责人:YUAN*/#include <reg52.h>typedef unsigned char uChar8;type

51单片机课程设计:基于MQ-3的酒精浓度报警器

51单片机课程设计:基于MQ-3的酒精浓度报警器 本程序用于将MQ-3上读取到的模拟信号转换为对应的数字信号,经51单片机处理后,在数码管显示,同时具有报警功能,当检测值高于预警值,蜂鸣器报警.除了可以检测MQ-3酒精浓度模块的AD值,也适用于MQ系列的其他模块,原理基本都相同,都是将读取到的AD值转换为数字信号,程序修改后,如果接线方法正确,可以在吉林农业大学51开发板上完美运行,相关工程文件见最下方附件. /*************************************说明***

51单片机的一些知识点

1.单片机芯片型号:STC 89C51RC 40C—PDIP 0707 STC——STC公司,其他前缀还有AT.Winbond等 8——基于8051内核芯片 9——表示内部含有Flash E2PROM存储器 C——表示该器件为CMOS产品 5——固定不变 1——代表芯片内部存储空间,1为4KB,2为8KB,3为12KB RC——STC单片机内部RAM(随机读写存储器)为512B,还有RD+表示内部RAM为1280B 40——表示外部晶振最高可接入40MHz,对于AT单片机数值一般在24MHz C

Windows 通用应用尝试开发 “51单片机汇编”总结

一.前言 终于完成windows通用应用“51单片机汇编”,半年前开始玩WindowsPhone开发的第一个真正意义上的App(还很多缺点=_=).开发从1月中旬考完试到今天,期间实习了半个月,玩了几天,算起来基本弄了3个多星期吧.不多说,总结总结. 二.开发数据准备 应用中主要的数据是单片机的汇编指令,我主要用XML文件来储存数据,没有使用SQLLite数据库,数据格式如下图: xml文件的数据是我手输入的,所以这是比较烦的.(可能有更简洁的办法获取数据). 而xml文件每个每个节点对应实例,