分享

MCS-51单片机定时器/计数器、串行口、多机通讯

 共同成长888 2015-04-20

原文:http://snowdream2013.blog.163.com/blog/static/1814852342011750928977/

MCS-51单片机含有2个定时器/计数器,具有4种工作方式。具有两种工作模式(计数器模式和定时器模式)
MCS-51单片机含有1个全双工串行口,具有4种工作方式。
TMOD ->定时器/计数器方式控制寄存器
TCON ->定时器/计数器控制寄存器
SMOD ->串行口波特率系数选择位
SCON ->串行口控制寄存器
SBUF ->串行口数据缓冲器
TH0 ->定时器/计数器0(高字节)
TL0 ->定时器/计数器0(低字节)
TH1 ->定时器/计数器1(高字节)
TL1 ->定时器/计数器1(低字节)

一、定时器/计数器
定时器/计数器T0由特殊功能寄存器TH0、TL0构成
定时器/计数器T1由特殊功能寄存器TH1、TL1构成
特殊功能寄存器TMOD用于控制和确定 定时器/计数器 T0、T1的工作模式和工作方式
特殊功能寄存器TCON用于控制T0、T1的启动和停止计数,同时包含了T0、T1的状态
工作方式控制寄存器TMOD
TMOD用于控制定时器/计数器的工作模式及工作方式,它的字节地址为89H。
  D7    D6   D5  D4  |  D3     D2   D1  D0 
GATE C/T  M1  M0 | GATE C/T  M1  M0
           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    方式0  TLX(x=0,1)中低5位与THX的8位构成13位计数器
0      1    方式1  TLX与THX构成16位计数器
1      0    方式2  常数自动重装载的8位计数器,每当计数器TLX溢出时,THX中的内容装载到TLX
1      1    方式3  仅适用于T0,分成2个8位计数器,T1停止计数

定时器/计数器控制寄存器TCON TCON的字节地址为88H
D7    D6   D5    D4  D3 D2 D1  D0
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   D1  D0
SM0  SM1  SM2  REN  TB8  RB8  TI    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串行口的这个特性,便可实现多机通讯。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多