第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器

Slides:



Advertisements
Similar presentations
单片机技术及应用 河南信息工程学校 电子工程系.
Advertisements

5.1 中断的概述 5.2 MCS - 51中断系统 5.3 中断系统的应用
主讲人:刘利 交通大学网络控制课程系列 上海交通大学机电控制研究所 交通大学网络控制课程系列 考试课、专业基础课、必修课
第7章 AT89S51单片机的 串行口 1.
6 单片机的中断与定时系统 I/O设备必须通过I/O接口与计算机连接。 I/O接口的功能: 1.速度匹配: 锁存数据、传送联络信号。
项目二 中断应用系统设计 本项目学习目标: (1)制作一个单片机控制的彩灯电路。 (2) 理解中断的基本概念;
实验四 利用中规模芯片设计时序电路(二).
第5章 中断系统 5.1 中断的概念 5.2 MCS-51单片机的中断流程 5.3 MCS-51的中断响应条件和中断处理
第5章 串行口与通信 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法
单片机应用技术 项目二 电子打铃装置 第4讲 单片机的定时器/ 计数器 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
8051 指令.
單晶片MCS-51 C語言入門實習 第1章 微電腦與單晶片MCS-51架構 作者:董勝源.
得技通电子 问题 1 右何者非為假指令 (1) XRL (2) EQU (3) MACRO (4) ORG.
主要内容 串行口的结构 串行口的工作方式 波特率的计算 简单应用
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
9.3 AT89C51串行接口的应用与编程 工作方式0的应用
6.3 定时器/计数器的应用 初始化 初始化的内容如下:
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第二部分 微机原理 第8章 单片机的 定时/计数器 主讲教师:喻红.
第5章 定时计数技术 单片机控制系统中常常用到的定时与计数问题。 5.1 定时计数概述 5.2 MCS-51单片机的定时计数器.
6.1 中断系统和外中断 6.2 定时器/计数器 6.3 串行通信 本章小结.
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
單晶片微電腦控制實習 使用計時中斷作走馬燈 計時器的基礎實習 國立大甲高工 電機科 2018年11月21日
AVR单片机软硬件设计教程-入门篇 ——学单片机就要学AVR!
本章分为三节,主要介绍: 6.1 计算机串行通信基础 C51的串行口 6.3 单片机串行口应用举例.
第6章 定时器/计数器 (课时:8学时).
第八章 80C51单片机的串行通信 主要内容:本章主要介绍80C51串行通信相关知识,包括串行通信基本概念,80C51单片机的串行口及其工作方式,以及单片机在双机或多机通信中的应用。
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 MCS-51单片机的系统扩展与应用.
8051's UART mode0 output 通訊二甲 B 洪紹凱.
第2章 单片机的结构原理与 简单应用 (课时:10学时).
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
第七章 定时/计数器.
第八章 数据通信.
CPU结构和功能.
第8章 MCS-51串行口 8.1 串行口及其通信方式 8.2 IBM-PC系列机与 单片机 的通信技术.
第2章 单片机系统组成原理 2.1 MCS-51单片机组成原理 2.2 单片机复位电路设计 2.3 MCS-51存储器配置
单元五 MCS-51单片机内部资源 5.1 任务九 单片机计数并显示 5.2 任务十 单片机流水灯控制 5.3 任务十一 两台单片机数据互传
本 章 重 点 单片机的结构特点 单片机的存储器特点 I/O端口的特点 CPU时序 课时安排:3个课时.
主要内容 定时/计数器的工作原理模式 定时/计数器的工作方式 定时/计数器的应用
本 章 重 点 串行通信基本知识 单片机的串口及控制器 单片机串行通信方式 课时安排:3个课时.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第五章 MCS-51中断与定时系统.
主要内容 定时/计数器的工作原理模式 定时/计数器的工作方式 定时/计数器的应用
第4章 中断技术 一个完整的微机系统是由硬件和软件共同构成的。微机系统的硬件有CPU、存储器和I/O口,外设组成。CPU与存储器之间的信息交换比较简单,而CPU与外设之间进行信息交换之前必须确定外设是否准备好,即选择I/O传送方式。I/O传送方式有4种:无条件、查询、中断和DMA。本章学习中断传送方式的有关内容。
第九章 MCS-51串行接口 9.1 串行数据通信概述 通 信 并行 一、并行通信和串行通信 串行 串行通信 数据是一位一位传送的
得技通电子 问题 1.0 、选择题:本大题共15个小题,每小题1分,共15分,在每小题给出的四个选项中,只有一项符合题目要求,把所选项前的字母填在括号内。
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
第五章 MCS-51中断系统 一、中断请求源 MCS-51提供5个中断请求源,即INT0、INT1、TF0、 TF1和串行口发送与接收中断请求源TI或RI。这些 中断请求源分别由TCON与SCON的相应位锁存。
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
第二部分 微机原理 第9章 串行通信 及其接口 主讲教师:喻红.
实验二 带进位控制8位算术逻辑运算实验 带进位控制8位算术逻辑运算: ① 带进位运算 ② 保存运算后产生进位
5. 1 中 断 概 述 单片机接通电源后将循环执行我们编制好的程序(一般称为主程序),当有外部设备或内部部件要求CPU为其服务时,计算机将被迫“中断”主程序的执行,并记录下暂停处程序地址(断点地址),然后转去为外部设备服务,即执行中断服务程序;在中断程序执行完毕后自动返回被迫中断主程序的地址,继续执行原主程序。
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
第7章 定时/计数器 教学目的:了解80C51系列单片机内部定时器/计数器的结构与工作原理;能够采用查询方式对定时器/计数器的4种工作模式编程、应用。 教学重点:1. 定时/计数器的工作原理; 2. 定时器方式1、2的编程、应用。 教学难点:1.定时/计数器控制寄存器的设置 2.定时初值的设置.
第4章 定时器与计数器 本章内容 定时器/计数器工作原理 定时器/计数器的工作方式 定时器/计数器的应用.
单片机应用技术 (C语言版) 第7章 定时器/计数器
第9章 串口及串行通信技术 ● 教学目标 介绍MCS-51串行通信接口技术 介绍MCS-51单片机之间的串行通信接口技术
定时中断与LED MCU起航 QQ:
6.1 定时器/计数器的结构及工作原理 定时器/计数器的结构 定时器/计数器T0、T1的逻辑结构如图6-1所示。
单片机原理与应用.
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
单片机应用技术 (C语言版) 第8章 串行通信接口
单片机应用技术 (C语言版) 第6章 中断系统.
上节复习(11.14) 1、方式2、方式0的特点? 2、定时/计数器的编程要点? 3、实验5方案优化问题.
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
第2章 80C51单片机的硬件结构 教学基本要求: (1)、熟悉单片机的定义、名称、分类方法;
第1章 微型计算机基础.
Presentation transcript:

第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器 6.3 工作方式 6.4 定时器/计数器应用举例 6.5 MCS - 51单片机的串行接口 6.6 串行口的应用

6.1 定时器/计数器的结构及工作原理 图 6.1 定时器/计数器结构框图

加法计数器是计满溢出时才申请中断, 所以在给计数器赋初值时, 不能直接输入所需的计数值, 而应输入的是计数器计数的最大值与这一计数值的差值, 设最大值为 M, 计数值为 N, 初值为 X, 则 X的计算方法如下:  计数状态: X=M-N 定时状态: X=M-定时时间/T 而 T=12÷晶振频率

6.2 方式和控制寄存器 一、 定时器/计数器的方式寄存器TMOD 图 6.2 TMOD各位定义

1. M1M0工作方式控制位 表 6.1 工作方式选择表 M1 M0 方式 说 明 0 0 说 明 0 0 13 位定时器(TH的 8 位和TL的低 5 位) 0 1 1 16 位定时器/计数器 1 0 2 自动重装入初值的 8 位计数器 1 1 3 T0 分成两个独立的 8 位计数器, T1 在方式 3 时停止工作

2. C/T 定时器方式或计数器方式选择位 若C/T=1时, 为计数器方式; C/T = 0时, 为定时器方式。  3. GATE 定时器/计数器运行门控标志位 当GATE=1时, 只有INT0 (或INT1)引脚为高电平且TR0(或TR1 )置 1 时, 相应的定时器 /计数器才被选通工作, 这时可用于测量在INTx端出现的正脉冲的宽度。若GATE=0, 则只要 TR0 (或 TR1)置 1, 定时器 /计数器就被选通, 而不管 INT0 (或 INT1)的电平是高还是低。

二、 定时器/计数器控制寄存器TCON TF0、TF1分别是定时器/计数器T0、 T1 的溢出标志位, 加法计数器计满溢出时置 1, 申请中断, 在中断响应后自动复 0。TF产生的中断申请是否被接受, 还需要由中断是否开放来决定。 TR1、TR0 分别是定时器 /计数器T1、 T0 的运行控制位, 通过软件置 1 后, 定时器 /计数器才开始工作, 在系统复位时被清 0。

6.3 工作方式 一、 方式 0 图6.3 方式 0(13位计数器)

二、 方式1 图 6.4 方式 1(16位计数器)

三、方式 2 图 6.5 方式 2(初始常数自动重装载)

四、 方式 3 图 6.6 方式 3(两个 8 位独立计数器)

6.4 定时器/计数器应用举例 一、 方式 0 的应用 例 1 利用定时器输出周期为 2 ms的方波, 设单片机晶振频率为 6 MHz。  选用定时器 /计数器T0 作定时器, 输出为P1.0 引脚, 2 ms 的方波可由间隔 1 ms的高低电平相间而成, 因而只要每隔 1 ms对 P1.0 取反一次即可得到这个方波。  定时 1 ms的初值:  因为 机器周期=12÷6 MHz= 2 μs 所以 1 ms内T0 需要计数N次:  N= 1 ms÷2 μs = 500

由此可知: 使用方式 0 的 13 位计数器即可, T0 的初值X为 X=M-N=8 192-500=7 692=1E0CH 但是, 因为 13 位计数器中, 低 8 位 TL0 只使用了 5 位, 其余码均计入高 8 位TH0 的初值, 则 T0 的初值调整为 TH0=0F0H, TL0=0CH TMOD初始化: TMOD=00000000B=00H (GATE=0, C/T=0, M1=0, M0=0) TCON初始化: 启动TR0=1 IE初始化: 开放中断EA=1, 定时器T0 中断允许ET0=1

程序清单如下:  ORG 0000H  AJMP START; 复位入口 ORG 000BH AJMP TOINT ; T0中断入口 ORG 0030H START: MOV SP, #60H; 初始化程序 MOV TH0, #0F0H ; T0赋初值 MOV TL0, #0CH MOV TMOD, #00H SETB TR0 ; 启动T0

SETB ET0 ; 开T0中断 SETB EA ; 开总允许中断 MAIN: AJMP MAIN ; 主程序 TOINT: CPL P1.0 MOV TL0, #0CH MOV TH0, #0F0H RET

二、 方式 1应用 方式 1 与方式 0 基本相同, 只是方式 1 改用了 16 位计数器。 要求定时周期较长时, 13 位计数器不够用, 可改用 16 位计数器。  例 2 已知某生产线的传送带上不断地有产品单向传送, 产品之间有较大间隔。使用光电开关统计一定时间内的产品个数。 假定红灯亮时停止统计, 红灯灭时才在上次统计结果的基础上继续统计, 试用单片机定时器 /计数器T1的方式 1完成该项产品的计数任务。

图 6.7 硬件原理图

(1) 初始化: TMOD=11010000B=0D0H (GATE=1, C/T=1, M0M1=01) TCON=00H (2) T1在方式1时, 溢出产生中断, 且计数器回零, 故在中断服务程序中, 需用R0计数中断次数, 以保护累积计数结果。

(3) 启动T1计数, 开T1中断。  程序清单如下: ORG 0000H  AJMP START ; 复位入口 ORG 001BH AJMP T1INT ; T1中断入口 ORG 0100H START: MOV SP, #60H ; 初始化程序 MOV TCON, #00H MOV TMOD, #0D0H MOV TH1, #00H

MOV TL1, #00H MOV R0, #00H ; 清中断次数计数单元 MOV P3, #28H; 设置P3.5第二功能 SETB TR1 ; 启动T1 SETB ET1; 开T1中断 SETB EA ; 开总中断 MAIN: ACALL DISP ; 主程序, 调显示子程序 … ORG 0A00H T1INT: INC R0 ; 中断服务子程序 RETI DISP: … ; 显示子程序 RET

三、 方式 2 应用 方式 2 是定时器自动重装载的操作方式, 在这种方式下, 定时器 0 和 1 的工作是相同的, 它的工作过程与方式 0、 方式 1 基本相同, 只不过在溢出的同时, 将 8 位二进制初值自动重装载, 即在中断服务子程序中, 不需要编程送初值, 这里不再举例。定时器 T1 工作在方式 2 时, 可直接用作串行口波特率发生器,

四、 方式 3 的应用 定时器 T0 工作在方式 3 时是 2 个 8 位定时器 /计数器。 且TH0 借用了定时器 T1 的溢出中断标志TF1和运行控制位 TR1。  例 3 假设有一个用户系统中已使用了两个外部中断源, 并置定时器 T1 于方式 2, 作串行口波特率发生器用, 现要求再增加一个外部中断源, 并由 P1.0 口输出一个 5 Hz的方波(假设晶振频率为 6 MHz)。

在不增加其它硬件开销时, 可把定时器/计数器 T0 置于工作方式 3, 利用外部引脚 T0端作附加的外部中断输入端, 把 TL0 预置为 0FFH, 这样在 T0 端出现由 1至 0 的负跳变时, TL0 立即溢出, 申请中断, 相当于边沿激活的外部中断源。 在方式 3下, TH0 总是作 8 位定时器用, 可以靠它来控制由 P1.0 输出的 5 kHz方波。  由 P1.0 输出 5 kHz的方波, 即每隔 100 μs使 P1.0 的电平发生一次变化。则TH0中的初始值 X=M-N=256-100/2=206。 下面是有关的程序。

MOV TL0, #0FFH  MOVTH0, #206 MOVTL1, #BAUD ; BAUD根据波特率要求设置常数 MOVTH1, #BAUD MOVTMOD, #27H ; 置T0工作方式3 ; TL0工作于计数器方式 MOVTCON, #55H ; 启动定时器 T0、 T1, 置外部中断 0 和 1 ; 为边沿激活方式 MOVIE, #9FH ; 开放全部中断

TL0 溢出中断服务程序(由 000BH单元转来):  TL0INT: MOV TL0, #0FFH … ; 外部引脚 T0 引起中断处理程序 RETI TH0 溢出中断服务程序(由 001BH转来):  TH0INT: MOVTH0, #206 CPL P1.0 此处串行口中断服务程序、 外中断 0和外中断 1的中断服务程序没有列出。

6.5 MCS - 51单片机的串行接口 6.5.1 串行通信的基本概念 (1) 同步方式是将一大批数据分成几个数据块, 数据块之间用同步字符予以隔开, 而传输的各位二进制码之间都没有间隔。 其基本特征是发送与接收时钟始终保持严格同步。 (2)异步通信是按帧传送数据, 它利用每一帧的起、止信号来建立发送与接收之间的同步,每帧内部各位均采用固定的时间间隔, 但帧与帧之间的时间间隔是随机的。其基本特征是每个字符必须用起始位和停止位作为字符开始和结束的标志, 它是以字符为单位一个个地发送和接收的。

6.5.2 与串行口有关的特殊功能寄存器 1. 数据缓冲器SBUF 串行口缓冲器SBUF是可直接寻址的特殊功能寄存器, 其内部RAM字节地址是99H。在物理上, 它对应着两个独立的寄存器, 一个发送寄存器, 一个接收寄存器。发送时, 就是CPU写入 SBUF的时候,51 系列单片机没有专门的启动发送状态的指令; 接收时, 就是读取SBUF的过程, 接收寄存器是双缓冲的, 以避免在接收下一帧数据之前, CPU未能及时响应接收器的中断, 没有把上一帧数据读走, 而产生两帧数据重叠的问题。

2. 串行口控制寄存器SCON SCON用于控制和监视串行口的工作状态, 其各位定义如图 5.3 所示。相应的各位功能介绍如下:  SM0、SM1: 用于定义串行口的操作模式, 两个选择位对应 4 种模式,见表6.2。其中fOSC是振荡器频率, UART为通用异步接收和发送器的英文缩写。 SM2: 多机通信时的接收允许标志位。 在模式 2 和 3 中, 若SM2 = 1, 且接收到的第 9 位数据(RB8)是 0, 则接收中断标志(RI)不会被激活。在模式1中, 若SM2=1 且没有接收到有效的停止位, 则 RI不会被激活。 在模式 0 中, SM2 必须是 0。

表6.2 串行口操作模式选择 SM0 SM1 模 式 功 能 波 特 率 0 0 0 1 1 0 1 1 1 同步移位寄存器 8位UART 表6.2 串行口操作模式选择 SM0 SM1 模 式 功 能 波 特 率 0 0 0 1 1 0 1 1 1 同步移位寄存器 8位UART 9位UART fOSC/12 可变(T1溢出率) fOSC/64 或fOSC/32

3. 电源控制寄存器PCON 特殊功能寄存器PCON中, 只有一位(最高位)SMOD与串行口的工作有关, 该位是串行口波特率系数的控制位: SMOD=1 时, 波特率加倍, 否则不加倍。 PCON的地址为 87H, 不可位寻址, 因此初始化时需要字节传送。

6.5.3 串行口的 4 种工作模式 模式 0 (1) 模式 0 输出状态。 图 6.8 外接移位寄存器输出

(2) 模式 0 输入状态。 图6.9 外接移位寄存器输入

2. 模式 1 串行口工作于模式 1 时, 为波特率可变的 8 位异步通信接口。数据位由 P3.0 (RXD)端接收, 由P3.1(TXD)端发送。 传送一帧信息为 10 位: 一位起始位(0), 8 位数据位(低位在前)和一位停止位(1)。波特率是可变的, 它取决于定时器 T1 的溢出速率及SMOD的状态。  (1) 模式 1 发送过程。 用软件清除 TI后, CPU执行任何一条以 SBUF为目标寄存器的指令, 就启动发送过程。数据由 TXD引脚输出, 此时的发送移位脉冲是由定时器 /计数器 T1 送来的溢出信号经过 16 或 32 分频而取得的。一帧信号发送完时, 将置位发送中断标志TI=1, 向CPU申请中断, 完成一次发送过程。

(2) 模式 1 接收过程。 用软件清除 RI后, 当允许接收位 REN被置位 1 时, 接收器以选定波特率的 16 倍的速率采样 RXD引脚上的电平, 即在一个数据位期间有 16 个检测脉冲, 并在第 7、 8、9 个脉冲期间采样接收信号, 然后用三中取二的原则确定检测值, 以抑制干扰。 并且采样是在每个数据位的中间, 避免了信号边沿的波形失真造成的采样错误。当检测到有从“1”到“0”的负跳变时, 则启动接收过程, 在接收移位脉冲的控制下, 接收完一帧信息。 当最后一次移位脉冲产生时能满足下列两个条件:  ① RI=0;  ② 接收到的停止位为 1 或 SM2=0。

3. 模式 2 和模式 3。  串行口工作于模式 2 和模式 3 时, 被定义为 9 位异步通信接口。 它们的每帧数据结构是 11 位的: 最低位是起始位(0), 其后是 8 位数据位(低位在先), 第 10 位是用户定义位(SCON中的 TB8或 RB8), 最后一位是停止位(1)。模式 2 和模式3 工作原理相似, 唯一的差别是模式 2 的波特率是固定的, 即为 fOSC / 32或 fOSC / 64; 而模式 3的波特率是可变的, 与定时器 T1的溢出率有关。

(1) 模式 2和模式 3的发送过程。 发送过程是由执行任何一条 SBUF为目的寄存器的指令来启动的。 由“写入SBUF”信号把 8 位数据装入 SBUF, 同时还把 TB8 装入发送移位寄存器的第 9 位, 并通知发送控制器要求进行一次发送。发送开始, 把一个起始位(0)送到 TXD端。 移位后, 数据由移位寄存器送到TXD端。再过一位, 出现第一个移位脉冲。 第一次移位时, 把一个停止位“1”由控制器的停止位发生端送入移位寄存器的第 9 位。 此后, 每次移位时, 把 0 送入第 9 位。因此, 当 TB8 的内容送到移位寄存器的输出位置时, 其左面一位是停止位“1”, 而再往左的所有位全为“0”。 这种状态由零检测器检测到后, 就通知发送控制器作最后一次移位, 然后置 TI=1, 请求申请中断。第 9 位数据(TB8)由软件置位或清零, 可以作为数据的奇偶校验位, 也可以作为多机通信中的地址、数据标志位。如把 TB8 作为奇偶校验位, 可以在发送程序中, 在数据写入 SBUF之前, 先将数据位写入 TB8。  

(2) 模式2和模式3接收过程。 与模式 1类似, 模式 2和模式 3接收过程始于在 RXD端检测到负跳变时,为此, CPU以波特率 16倍的采样速率对 RXD端不断采样。一检测到负跳变, 16分频计数器就立刻复位, 同时把1FFH写入输入移位寄存器。计数器的16个状态把一位时间等分成16份, 在每一位的第7、8、9个状态时, 位检测器对 RXD端的值采样。如果所接收到的起始位无效(为1),则复位接收电路, 等待另一个负跳变的到来。 若起始位有效(为 0)则起始位移入移位寄存器, 并开始接收这一帧的其余位。 当起始位 0 移到最左面时, 通知接收控制器进行最后一次移位。 把 8 位数据装入接收缓冲器 SBUF, 第 9 位数据装入SCON中的 RB8, 并置中断标志RI=1。

装入 SBUF和 RB8以及置位 RI的信号只有在产生最后一个移位脉冲且同满足下列两个条件, 才会产生:  ② SM2 =0 或接收到的第 9 位数据为“1”。  上述两个条件中任一个不满足, 所接收的数据帧就会丢失, 不再恢复。 两者都满足时, 第 9 位数据装入 TB8, 前 8 位数据装入 SBUF。  请注意: 与模式 1 不同, 模式 2 和 3 中装入 RB8 的是第 9 位数据, 而不是停止位。所接收的停止位的值与SBUF、 RB8 和 RI都没有关系, 利用这一特点可用于多机通信中。

6.5.4 多机通信 图 6.10 多处理机通信系统

6.5.5 波特率 串行口每秒钟发送或接收的数据位数称为波特率。 假设发送一位数据所需时间为T, 则波特率为 1/T。  (1) 模式 0 的波特率等于单片机晶振频率的 1/12, 即每个机器周期接收或发送一位数据。  (2) 模式 2 的波特率与电源控制器PCON的最高位SMOD的写入值有关:  即SMOD=0, 波特率为(1/64) fOSC; SMOD=1, 波特率为(1/32)fOSC。

(3) 模式 1 和模式 3 的波特率除了与SMOD位有关之外, 还与定时器 T1 的溢出率有关。 定时器 T1 作为波特率发生器, 常选用定时方式 2( 8 位重装载初值方式), 并且禁止 T1 中断。此时 TH1 从初值计数到产生溢出, 它每秒钟溢出的次数称为溢出率。 于是

表 6.3 定时器T1产生的常用波特率

假设某MCS - 51 单片机系统, 串行口工作于模式 3, 要求传送波特率为1 200 Hz, 作为波特率发生器的定时器T1工作在方式 2 时, 请求出计数初值为多少? 设单片机的振荡频率为6 MHz。  因为串行口工作于模式 3 时的波特率为 所以

当SMOD=0 时, 初值TH1=256-6×106/(1 200×12×32/1) =243=0F3H 当SMOD=1 时, 初值TH1=256-6×106/(1200×12×32/2) =230=0E6H

6.6 串行口的应用 一、 串行口的编程 串行口需初始化后, 才能完成数据的输入、输出。其初始化过程如下:  6.6 串行口的应用 一、 串行口的编程 串行口需初始化后, 才能完成数据的输入、输出。其初始化过程如下:  (1) 按选定串行口的操作模式设定SCON的SM0、SM1两位二进制编码。 (2) 对于操作模式 2 或 3, 应根据需要在 TB8 中写入待发送的第 9 位数据。 (3) 若选定的操作模式不是模式 0, 还需设定接收/发送的波特率。 设定SMOD的状态, 以控制波特率是否加倍。 若选定操作模式1或3, 则应对定时器 T1进行初始化以设定其溢出率。

二、 串行口的应用 例1 用 8051 串行口外接 74LS165 移位寄存器扩展8位输入口, 输入数据由 8 个开关提供, 另有一个开关 K提供联络信号。电路示意如图6.11 所示。当开关K合上时, 表示要求输入数据。输入 8 位开关量, 处理不同的程序。 图 6.11

程序如下:  START: JB P1.0, $ ; 开关K未合上, 等待 SETB P1.1 ; 165并行输入数据 CLR P1.1 ; 开始串行移位 MOV SCON, #10H ; 串行口模式 0并启动接收 JNB RI, $ ; 查询RI CLR RI ; 查询结束, 清RI MOV A, SBUF ; 输入数据  ; 根据 A处理不同任务 SJMP START ; 准备下一次接收。 …

例 2 利用串行口进行双机通信。 图 6.12 双机通信系统

甲机发送(采用查询方式): MOV SCON, #80H ; 设置工作方式2 MOV PCON, #00; 置SMOD=0, 波特率不加倍 MOV R0, #40H ; 数据区地址指针 MOVR2, #10H ; 数据长度 LOOP: MOV A, @R0 ; 取发送数据 MOV C, P ; 奇偶位送TB8 MOVTB8, C MOV SBUF, A ; 送串口并开始发送数据

WAIT: JBCTI, NEXT ; 检测是否发送结束并清TI SJMP WAIT NEXT: INC R0; 修改发送数据地址指针 DJNZR2, LOOP RET 乙机接收(查询方式): MOV SCON, #90H; 模作模式2, 并允许接收 MOV PCON, #00H; 置SMOD=0 MOV RO, #60H ; 置数据区地址指针 MOV R2, #10H ; 等待接收数据长度

LOOP: JBC RI, READ ; 等待接收数据并清RI SJMP LOOP READ: MOV A, SBUF ; 读一帧数据 MOV C, P JNC LP0 ; C不为 1 转LP0 JNB RB8, ERR ; RB8=0, 即 RB8不为 P转ERR AJMP LP1 LP0: JB RB8, ERR ; RB8=1, 即 RB8不为 P转ERR LP1: MOV @R0, A ; RB8=P, 接收一帧数据 INC R0 DJNZ R2, LOOP RET ERR: … ; 出错处理程序 …