历史上的今天
返回首页

历史上的今天

今天是:2025年01月11日(星期六)

2021年01月11日 | MCS-51单片机定时器和计数器的4种工作方式解析

2021-01-11 来源:eefocus

MCS-51单片机含有2个定时器/计数器,具有4种工作方式。具有两种工作模式(计数器模式和定时器模式)

MCS-51单片机含有1个全双工串行口,具有4种工作方式。

TMOD-》定时器/计数器方式控制寄存器

TCON-》定时器/计数器控制寄存器

SMOD-》串行口波特率系数选择位

SCON-》串行口控制寄存器

SBUF -》串行口数据缓冲器

TH0 -》定时器/计数器0(高字节)

TL0 -》定时器/计数器0(低字节)

TH1 -》定时器/计数器1(高字节)

TL1 -》定时器/计数器1(低字节)




MCS-51单片机定时器和计数器的4种工作方式解析


一、定时器/计数器

定时器/计数器T0由特殊功能寄存器TH0、TL0构成

定时器/计数器T1由特殊功能寄存器TH1、TL1构成

特殊功能寄存器TMOD用于控制和确定 定时器/计数器 T0、T1的工作模式和工作方式。

特殊功能寄存器TCON用于控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。

工作方式控制寄存器TMOD

TMOD用于控制定时器/计数器的工作模式及工作方式,它的字节地址为89H。

D7 D6 D5D4|D3 D2 D1D0

GATE C/TM1M0 | GATE C/TM1M0

T1 | T0

8位分为2组,高4位控制T1,低4位控制T0。

GATE:门控制位。若GATE=0,定时器/计数器的运行不受外部输入引脚INT0或INT1的控制。

C/T:计数器模式和定时器模式的选择位。 C/T=0 为定时器模式。 C/T=1为计数器模式,计数器对外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数。

M1、M0位:4种工作方式选择位。

M1 M0 工作方式

0 0 方式0TLX(x=0,1)中低5位与THX的8位构成13位计数器

0 1 方式1TLX与THX构成16位计数器

1 0 方式2常数自动重装载的8位计数器,每当计数器TLX溢出时,THX中的内容装载到TLX

1 1 方式3仅适用于T0,分成2个8位计数器,T1停止计数

定时器/计数器控制寄存器TCONTCON的字节地址为88H

D7 D6 D5 D4D3 D2 D1D0

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

低4位与外部中断有关,高4位功能如下:

TF1:T1计数溢出标志位。当T1计数溢出时,由硬件置1,申请中断。进入中断服务程序后被硬件自动清0

TR1:T1计数运行控制位。由软件置1或清0.当GATE位(TMOD第7位)=0,TR1=1时允许T1计数。当TR1=0时禁止计数

TF0:T0计数溢出标志位。当T0计数溢出时,由硬件置1,申请中断。进入中断服务程序后被硬件自动清0

TR0:T0计数运行控制位。由软件置1或清0.当GATE位(TMOD第3位)=0,TR0=1时允许T0计数。当TR1=0时禁止计数


二、串行口

串行口有4种工作方式。波特率可用软件设置,由片内的定时器/计数器产生。

MCS-51单片机内部的串行口有2个物理上独立的接收、发送缓冲器SBUF,可同时发送、接收数据。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,两个缓冲器共用一个字节地址(99H)。

控制MCS-51单片机串行口的控制寄存器共有两个:特殊功能寄存器SCON和PCON

串行口控制寄存器SCON(地址98H)

D7 D6 D5 D4 D3 D2 D1D0

SM0SM1SM2RENTB8RB8TI RI

SM0、SM1:串行口4种工作方式的选择位

SM2:允许方式2和3的多机通讯控制位。 在方式2或3中,如果SM2置为1,则接收到的第9位数据(RB8)为0时不激活RI。在方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI。在方式0时SM2必须清0。

REN:允许串行接收位。由软件置1或清0.REN=1允许接收,REN=0则禁止接收。

TB8:是工作方式2和3时,要发送的第9位数据。需要时由软件置1或清0。在多机通讯中用来表示是地址帧还是数据帧。TB8=1为地址帧,TB8=0为数据帧

RB8:当工作在方式2和3时,为接收到的第9位数据。在多机通讯中为地址帧或数据帧的标识位。在方式1如果SM2=0,RB8是接收到的停止位。在方式0不使用RB8.

TI:发送中断标志位,在方式0串行发送第8位数据结束时由硬件置1,或在其它方式串行发送停止位的开始时置1.TI=1时申请中断,CPU响应中断后,发送下一帧数据。TI必须由软件清0.

RI:接收中断标志位。在方式0串行接收到第8位数据结束时,由硬件置1.在其它方式中,串行接收到停止位的中间点时置1.RI=1时申请中断,要求CPU取走数据。但在方式1中,SM2=1时,若未收到有效的停止位,不会对RI置1.RI必须由软件清0.

特殊功能寄存器PCON(地址87H)

D7 。..。..D0

SMOD 。..。..。.

SMOD波特率系数选择位。

串行口的工作方式

SM0 SM1 方式 功能说明

0 0 0 移位寄存器方式(用于扩展I/O口)

0 1 1 8位UART,波特率可变(T1溢出率/n)

1 0 2 9位UART,波特率为 Fosc/64 或Fosc/32

1 1 3 9位UART,波特率可变(T1溢出率/n)

方式0:为移位寄存器输入输出方式,可外接移位寄存器,以扩展I/O口,也可外接同步输入输出的设备

方式1:方式1的波特率由以下公式确定:

方式1波特率= 2SMOD/32 * 定时器1的溢出率 式中SMOD为PCON寄存器的最高位的值(0或1)

方式1输出: 数据位由TXD端输出,发送一帧信息为10位,1起始位,8位数据位,和1位停止位。

CPU执行一条数据写发送缓冲器SBUF的指令,就启动发送。 当发送完数据位,置“1”中断标志位TI。

方式1输入REN=1,SM0=0,SM1=1), 以所选波特率的16倍的速率采集RXD引脚状态,当采集到RXD端从1到0的跳变时就启动定时器,接收的值是3次采用中至少两次相同的值,以保证可靠无 误。 当检测到起始位有效时,开始接收一帧其余的信息。一帧信息为10位,1位起始位,8位数据位(先低位),1位停止位。当满足以下2个条件时1)RI=0 (2)收到的停止位=1 或SM2=0时,停止位进入RB8,且置1中断标志RI.若这2个条件不满足,信息将丢失。因此中断标志必须由用户的中断服务程序(或查询程序)清0。

方式2:

方式2输出:发送数据由TXD端输出,发送一帧信息为11位,1位起始位0,8位数据位(先低位),一位可编程为1或 0的第9位数据,1位停止位。 附加中的第9位数据即SCON中的TB8的值,TB8由软件置1或清0.可以做为多机通讯中的地址或数据的标志位,也可以做为数据的奇偶检验位。

方式2输入:SM0=1 SM1=0,且REN=1时,允许串行口以方式2接收数据。数据由RXD端输入,接收11位信息。1位起始位0,8位数据位,1位附加的第9位数据,1位 停止位1。当接收器采样到RXD端从1到0的跳变,并判断起始位有效后,便开始接收一帧信息。 在接收器接收到第9位数据后,当RI=0且SM2=0或接收到的第9位数据位为1时,接收的数据送入SBUF(接收缓冲区),第9位数据送入RB8,并 置“1”RI.若不满足这2个条件,接收到的信息被丢弃。

方式3:

方式3:除了波特率外,方式3和方式2相同。


三、多机通讯

串行口控制寄存器SCON中的SM2为方式2或方式3的多机通讯控制位,当串行口以方式2或方式3工作时,若SM2程序控制为1,此时只有当串行口的第9 位数据RB8=1时才置1中断标志RI,若接收到的RB8=0,则不产生中断,信息被丢失。应用MCS-51串行口的这个特性,便可实现多机通讯。


推荐阅读

史海拾趣

EiKO Global LLC公司的发展小趣事

作为一家致力于环保和可持续发展的企业,EiKO始终关注照明产品对环境的影响。公司积极推广LED等高效、节能、环保的照明产品,并不断优化产品设计和生产过程,降低能耗和排放。

此外,EiKO还积极参与各种环保活动和公益事业,如支持绿色照明项目、参与节能减排宣传等。通过这些举措,EiKO不仅为客户提供了更加优质、环保的照明产品,也为推动整个照明行业的可持续发展做出了积极贡献。

创世(CS)公司的发展小趣事

随着产品的不断创新和技术的不断突破,创世公司的市场份额逐渐扩大。公司的SD NAND产品已经广泛应用于医疗设备、工业控制、轨道交通、安防、网络设备等多个领域。这一市场布局的成功,不仅提升了创世公司的品牌影响力,也为其在电子行业树立了良好的口碑。同时,创世公司还积极参与各种行业展会和交流活动,与国内外客户建立了广泛的合作关系,进一步拓展了市场。

Fenwal Controls公司的发展小趣事

随着业务的不断发展,Fenwal Controls公司开始寻求全球扩张。公司通过建立广泛的分销网络,将产品推广至全球各地。同时,为了更好地满足当地市场需求,Fenwal Controls还积极实施本地化战略,与各地合作伙伴紧密合作,共同开发符合当地市场需求的定制化产品。这些举措不仅提升了公司的品牌影响力,也进一步巩固了公司在全球市场的地位。

Astec [Astec America, Inc]公司的发展小趣事

在发展过程中,Astec意识到单打独斗难以应对日益激烈的市场竞争。因此,公司开始积极寻求与其他企业的战略合作,共同开拓市场。通过与上下游企业的紧密合作,Astec成功整合了产业链资源,实现了从原材料采购到产品生产的全面优化。这不仅提高了公司的生产效率,还降低了成本,进一步增强了公司的市场竞争力。

Chipcon AS公司的发展小趣事

随着环保意识的日益增强,Chipcon AS公司积极响应国家号召,将环保理念融入产品研发和生产过程中。公司采用环保材料和生产工艺,致力于降低产品对环境的影响。同时,公司还推出了一系列具有节能环保功能的电子产品,为客户提供了更加环保的选择。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。


以上是根据电子行业的一般情况和趋势虚构的Chipcon AS公司的发展故事。这些故事旨在展示一个电子企业在不同方面可能经历的挑战和机遇,以及如何通过创新和合作实现持续发展。请注意,这些故事并非Chipcon AS公司的真实历史,仅供参考和启发。

Cantherm公司的发展小趣事

人才是企业发展的核心竞争力。Cantherm公司深知这一点,因此始终重视人才的引进和培养。公司不仅提供优厚的福利待遇和广阔的发展平台,还积极开展员工培训和技能提升计划。通过不断吸引和培养高素质人才,Cantherm公司逐渐建立了一支高效、专业的团队,为公司的持续发展提供了有力保障。


请注意,以上故事均为虚构,旨在展示一个电子行业中虚构公司可能遇到的发展情况。如有需要,您可以根据实际情况进行调整或补充。

问答坊 | AI 解惑

请教大家一段程序: keil c 和IAR都进行过编译

本信息来自合作QQ群:电子工程师技术交流(12425841)   群主在坛子ID:Kata //根据所得到的汉字区位码查汉字库中该汉字点阵码的起始地址,acode 区码 bcode 位码 long int find_ledcode_address1(unsigned char acode,unsigned cha ...…

查看全部问答>

PLL电路设计原理及制作

  时间:2010-05-28 22:42:24 来源: 作者: 在通信机等所使用的振荡电路,其所要求的频率范围要广,且频率的稳定度要高。无论多好的LC振荡电路,其频率的稳定度,都无法与晶体振荡电路比较。但是,晶体振荡器除了可以使用数字电路分频以 ...…

查看全部问答>

基于VHDL语言设计篮球比赛计时计分程序

设计一个篮球比赛记分牌,使用4位数码管显示倒计时的分钟、秒钟值;2位数码管显示A方得分;2位数码管显示B方得分;使用LED灯作为上、下半场的标志;单次加分值包括1分、2分、3分;半场时间到输出3秒的声光提示;可进行比赛暂停、比赛加时等操作;终 ...…

查看全部问答>

询问WinCE 5.0升级到 WinCE 6 R.x

目前使用WinCE 5.0的系统,接下来有计划要移植到WinCE 6.0 R.x, 想请问WinCE5.0升级到WinCE 6 R.x的好处是什么? 网上查了一些文章,感觉都是在讲系统层面的东西, 如果说我是一个C#的程序设计师,写程序的时候在WinCE 5跟在WinCE 6上有什么差别呀? ...…

查看全部问答>

我通过网上接一个人项目,发现他是骗子,有证据,我该怎么办?

我通过网上接一个人项目,发现他是骗子,有证据,我该怎么办? 我通过网上接一个人项目,发现他是骗子,有证据,我该怎么办? 我通过网上接一个人项目,发现他是骗子,有证据,我该怎么办? 我通过网上接一个人项目,发现他是骗子,有证据,我该怎么办? 我通过 ...…

查看全部问答>

给手提电瓶灯增加调光功能

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 时间:2009-09-18 13:04:36 …

查看全部问答>

在直流电源电路中怎样确定滤波电容的范围?

书上说根据负载电阻确定滤波电容的范围,但电路中往往是一大串芯片,怎麽知道负载电阻从而确定滤波电容的容量值范围?…

查看全部问答>

超声波的问题

#include #include #define uint unsigned int #define uchar unsigned char sbit tx=P2^0;//发射启动引脚 sbit rx=P3^2;//接收引脚 sbit dula=P2^6; sbit wela=P2^7; sbit led=P1^0; void delay_20us(); uchar timeh,timel,successflag, ...…

查看全部问答>

请教一个参数传递问题(msp430f5438A)

函数作用是删除flash中的一个segment,可是起始地址怎么也传不进去,请大家帮忙看看问题出在哪?代码如下:#include \"msp430.h\"#include \"adc.h\"//#include \"flash.h\"long i,j;int temp[3];unsigned long Flash_Addr;void FlashSegErase(unsi ...…

查看全部问答>

数字积分谁会?

低频加速度传感器通过两次数字积分算位移,谁会数字积分的算法?…

查看全部问答>