本 章 重 点 串行通信基本知识 单片机的串口及控制器 单片机串行通信方式 课时安排:3个课时.

Slides:



Advertisements
Similar presentations
5.1 中断的概述 5.2 MCS - 51中断系统 5.3 中断系统的应用
Advertisements

第5章 中断系统 5.1 中断的概述  5.2 AT89C51中断系统 5.3 中断系统的应用.
计算机网络课程总结 一、计算机网络基础 计算机网络定义和功能、基本组成 OSI/RM参考模型(各层的功能,相关概念, 模型中数据传输 等)
第7章 AT89S51单片机的 串行口 1.
项目二 中断应用系统设计 本项目学习目标: (1)制作一个单片机控制的彩灯电路。 (2) 理解中断的基本概念;
实验四 利用中规模芯片设计时序电路(二).
第5章 串行口与通信 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法
计算机基础知识 丁家营镇九年制学校 徐中先.
主要内容 串行口的结构 串行口的工作方式 波特率的计算 简单应用
项目一 双机通信应用系统 授课教师:刘旭东.
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
9.3 AT89C51串行接口的应用与编程 工作方式0的应用
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
6.1 中断系统和外中断 6.2 定时器/计数器 6.3 串行通信 本章小结.
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
AVR单片机软硬件设计教程-入门篇 ——学单片机就要学AVR!
本章分为三节,主要介绍: 6.1 计算机串行通信基础 C51的串行口 6.3 单片机串行口应用举例.
第八章 80C51单片机的串行通信 主要内容:本章主要介绍80C51串行通信相关知识,包括串行通信基本概念,80C51单片机的串行口及其工作方式,以及单片机在双机或多机通信中的应用。
前言 数据传输功能在监控系统中占有十分重要的地位。其作用是将传感器检测所得的电信号(检测对象的反应量),由井下传送道地面中心站进行集中处理,要求传输距离远)不中断)准确性高。因此,必须了解单片机的通信。 矿用传感器输出的电信号可分为连续变化的模拟量信号和阶越变化的开关量信号两大类。从广义上讲,开关量信号是一种简单的数字信号。模拟信号可通过模拟/数字转换器(A/D转换器)转换为数字信号。数字信号也可以通过数字/模拟转换器(D/A转换器)转换程模拟信号。按照系统所传输信号的不同,矿用监控系统可分为两类:模拟传
第8章 SCI/SPI串行通信模块 并行---多位同时传输。速度快,距离近,占引脚多,抗干扰弱
8051's UART mode0 output 通訊二甲 B 洪紹凱.
第七章 89C51串行口及串行通信技术 本书前几章涉及的数据传送都是采用并行方式,如8051与存储器,存储器与存储器,8051与并行打印机之间的通信。89C51处理8位数据,若以并行传送方式一次传送一个字节的数据,至少需要8条数据线。当89C51与打印机连接时,除8条数据线外,还需要状态、应答等控制线。一些微机系统,如IBM-PC系列机,由于磁盘机、CRT、打印机与主机系统的距离有限,所以,使用多条电缆线以提高数据传送速度还是合算的。但是,计算机之间、计算机与其终端之间的距离有时非常远,此时,电缆线过多是
ARDUINO+BLUETOOTH Arduino实现蓝牙数据传输.
走进编程 程序的顺序结构(二).
第2章 单片机的结构原理与 简单应用 (课时:10学时).
第八章 数据通信.
DM8148/DM8168 的介绍及对比 广州创龙电子科技有限公司
逆向工程-汇编语言
CPU结构和功能.
第8章 MCS-51串行口 8.1 串行口及其通信方式 8.2 IBM-PC系列机与 单片机 的通信技术.
单元五 MCS-51单片机内部资源 5.1 任务九 单片机计数并显示 5.2 任务十 单片机流水灯控制 5.3 任务十一 两台单片机数据互传
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第5章 MCS----51单片机的串行通信 教学要点 5.1 项目九单片机与单片机的通信 5.2 知识连接
第五章 MCS-51中断与定时系统.
中 断 王 静 阜阳师范学院 计算机与信息工程学院.
第九章 MCS-51串行接口 9.1 串行数据通信概述 通 信 并行 一、并行通信和串行通信 串行 串行通信 数据是一位一位传送的
C语言程序设计 主讲教师:陆幼利.
得技通电子 问题 1.0 、选择题:本大题共15个小题,每小题1分,共15分,在每小题给出的四个选项中,只有一项符合题目要求,把所选项前的字母填在括号内。
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
第五章 MCS-51中断系统 一、中断请求源 MCS-51提供5个中断请求源,即INT0、INT1、TF0、 TF1和串行口发送与接收中断请求源TI或RI。这些 中断请求源分别由TCON与SCON的相应位锁存。
5-13 串列通訊實習.
(Random Access Memory)
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
第三章 MCS 51的硬件结构.
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第4章 Excel电子表格制作软件 4.4 函数(一).
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
第二部分 微机原理 第9章 串行通信 及其接口 主讲教师:喻红.
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
5. 1 中 断 概 述 单片机接通电源后将循环执行我们编制好的程序(一般称为主程序),当有外部设备或内部部件要求CPU为其服务时,计算机将被迫“中断”主程序的执行,并记录下暂停处程序地址(断点地址),然后转去为外部设备服务,即执行中断服务程序;在中断程序执行完毕后自动返回被迫中断主程序的地址,继续执行原主程序。
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
第7章 定时/计数器 教学目的:了解80C51系列单片机内部定时器/计数器的结构与工作原理;能够采用查询方式对定时器/计数器的4种工作模式编程、应用。 教学重点:1. 定时/计数器的工作原理; 2. 定时器方式1、2的编程、应用。 教学难点:1.定时/计数器控制寄存器的设置 2.定时初值的设置.
第9章 串口及串行通信技术 ● 教学目标 介绍MCS-51串行通信接口技术 介绍MCS-51单片机之间的串行通信接口技术
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
定时中断与LED MCU起航 QQ:
6.1 定时器/计数器的结构及工作原理 定时器/计数器的结构 定时器/计数器T0、T1的逻辑结构如图6-1所示。
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
单片机应用技术 (C语言版) 第8章 串行通信接口
单片机应用技术 (C语言版) 第6章 中断系统.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
微机原理与接口技术 西安邮电大学计算机学院 杨锐.
上节复习(11.14) 1、方式2、方式0的特点? 2、定时/计数器的编程要点? 3、实验5方案优化问题.
第八章 串行接口 8-1 串行通信的基本概念 8-2 可编程串行接口8251A A的应用.
ADC0809并行A/D转换 (实验十) DAC0832并行D/A转换实验 (实验十一) RS232串口通信实验 (实验九)
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
第十三讲 串行通信SCI模块 《手把手教你学DSP——基于TMS320F28335》配套视频资料 南京研旭电气科技有限公司
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
DSP技术与应用 电子与信息技术系.
Presentation transcript:

本 章 重 点 串行通信基本知识 单片机的串口及控制器 单片机串行通信方式 课时安排:3个课时

第8章 单片机串行数据通信 8.1 串行通信概述 8.2 80C51串行口简介 8.3 波特率 8.4 串行通信工作方式 思考题

8.1 串行通信概述 1. 基本通信方式 计算机通信是将计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换,所有这些信息的交换均称为“通信”。 通信的基本方式分为并行通信和串行通信两种。

(1)并行通信 ——通常是将数据字节的各位用多 条数据线同时进行传送。 并行通信的特点:优点是传输速度快;缺点是当 距离较远、位数又多时,会导致通信线路复杂且成本 高。

(2)串行通信 ——是将数据字节分成一位一位的 形式在一条传输线上逐个地传送。 串行通信的特点:优点是通信线路简单,只要一 对传输线就可以实现通信(如电话线),从而大大地降 低了成本。特别适用于远距离通信。缺点是传送速度 慢。

2. 串行通信的基本概念 串行通信分为异步通信和同步通信两种基本方式。 (1) 异步通信 2. 串行通信的基本概念 串行通信分为异步通信和同步通信两种基本方式。 (1) 异步通信 异步通信——是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。

异步通信ASYNC(Asynchronous Data Communication) 的数据或字符是一帧(frame)一帧地传送的。帧定义 为一个字符的完整的通信格式,通常也称为帧格式。 最常见的帧格式一般是先用一个起始位“0”表示字 符的开始;然后是5~8位数据(低位在前,高位在 后),其后是奇偶校验位(用于判别字符传送的正确 性);最后是停止位“0” (可以是1位、1.5位或2位), 用以表示字符的结束。从起始位到停止位结束就构成 完整的一帧。

异步通信的数据格式 : 异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。

(2)同步通信SYNC(Synchronous Data Communication): : 特点是数据在线路上连续传送,各数据间不能有间隙或停顿。 在传送时,以数据块为单位进行传送。数据块由同步字符、若 干个连续的数据字符、校验字符等组成,用一个时钟信号来控 制数据的发送和接收。同步传送格式如下图所示。 图8-3 同步传送

3. 串行通信的制式 在串行通信中,数据是在两机之间传送的。按照 数据传送方向,串行通信可分为单工(simplex doplex) 3. 串行通信的制式 在串行通信中,数据是在两机之间传送的。按照 数据传送方向,串行通信可分为单工(simplex doplex) 制式、半双工(half doplex)制式和全双工(full doplex)制式。 (1)单工制式:是指 数据传输仅能沿一个方向, 不能实现反向传输。 接收 发送 单工

(2)半双工制式:即甲机和 乙机之间只有一个通信回路,接收 和发送不能同时进行,只能分时发 送和接收,即甲机发送乙机接收, 或者乙机发送甲机接收,因而两机 之间只需一条数据线。 时间1 时间2 发送 接收 半双工 (3)全双工制式:即甲机和 乙机之间数据的发送和接收可以 同时进行。全双工形式的串行通 信必须使用两根数据线。 发送 接收 全双工

4. 串行通信的传输速率 传送速率是指数据传送的速度。波特率(baud rate)是异 4. 串行通信的传输速率 传送速率是指数据传送的速度。波特率(baud rate)是异 步通信中数据传送速率的单位(即bps),其意义是每秒传送 多少位二进制数。 假如数据传送的速率是120个字符/秒,每个字符由1个起 始位、8个数据位、1个停止位组成,则波特率为: 10b × 120/s = 1200b/s 异步通信的传送速度一般为 50~9600bps 之间,常用于双 机或多机之间的通信。

5. 信号的调制与解调 计算机通信是一种数字信号的通信,它要求传送线的频带很宽,而在长距离通信时,通常是利用电话线传送的,电话线不可能有这样宽的频带,如果数字信号直接在电话线上通信,信号就会产生畸变。 所以,要用调制器(Modulator) 把数字信号转换为模拟 信号;用解调器(Demodulator)检测此信号,再把它转换成 数字信号。

调制器(Modulator)是一个波形变换器,它将基带数字 (1)什么叫调制? 所调调制就是进行波形变换。或者说进行频谱变换,就是 将基带数字信号的频谱变换成适合于在模拟信道中传输的频谱。 (2)作用: 调制器(Modulator)是一个波形变换器,它将基带数字 的波形变换成适合于模拟信道传输的波形。 解调器(Demodulator)是一个波形识别器,将模拟信号 恢复成原来的数字信号。 调制器 解调器 010010

0 1 0 0 1 1 (3)调制方法: ①调幅(AM) 即载波的振幅随基带数字信号而变化. “1” 对应有载波 “0” 对应无载波 AM 0 1 0 0 1 1 (3)调制方法: ①调幅(AM) 即载波的振幅随基带数字信号而变化. “1” 对应有载波 “0” 对应无载波 AM ②调频(FM) 即载波频率随数字信号而变化 “0” 对应”f1” “1” 对应“f2” f1 f2 FM ③调相(PM) 即载波初始相位随基带数字信号而变化. “0” 对应相位0度 “1” 对应相位180度 0度 180度 PM

8.2 80C51串行口简介 MCS-51单片机内部有1个功能很强的全双工串行口,可 同时发送和接收数据。它有4种工作方式,可供不同场合使用。 波特率由软件设置,通过片内的定时/计数器产生。 MCS-51的串行口除了用于数据通信外,还可以非常方 便地构成1个或多个并行输入/输出口,或作串并转换(如外 接74LS164串入并出芯片),用来驱动键盘与显示器。 MCS-51的串行口可以通过软件编程作为通用异步接收和 发送器UART(Universal Asynchronous Receiver/Transmitter) 用,也可以作为同步移位寄存器用。

图8-5 MCS-51串行口的原理结构图

从图8-5可知,MCS-51单片机内部串行口由两个数据缓 冲寄存器SBUF、一个输入移位寄存器、一个串行控制寄存 器SCON等组成。 在进行串行通信时,外界数据是通过RXD引脚(P3.0口, 串行数据接收端)输入的。输入数据先进入输入移位寄存 器,再送入接收SBUF。在接收器中采用了双缓冲结构,以免 前一个数据还未读走,就接收到第二个数据,而造成两个数 据的重叠错误。 对于发送器,因为发送时CPU是主动的,不会产生写重 叠问题,因而一般不需要双缓冲结构,以保持最大传送速率。

1. 串行口数据缓冲区SBUF SBUF是两个在物理上独立的接收、发送缓冲器,可同 时发送、接收数据。两个缓冲器只用一个字节地址99H,可 对发送缓冲器的操作。 CPU写SBUF,就是修改发送缓冲器;读SBUF;就是读 接收缓冲器。串行口对外也有两条独立的收发信号线RXD (P3.0)和TXD(P3.1);因此可以同时发送、接收数据; 实现全双工传送。

2. 串行口控制寄存器SCON SCON寄存器用来控制串行口的工作方式和状态,它可 以是位寻址。在复位时所有位被清0,字地址为98H。 RI TI RB8 TB8 REN SM2 SM1 SM0 D7 D6 D5 D4 D3 D2 D1 D0 SM0、SM1:串行口工作方式选择位(串行口有4种工 作方式)。SM0, SM1=00, 01, 10, 11 时,即将串行口分别设 置为方式0、1、2、3。

SM2:多机通信控制位。主要用于工作方式2和方式3。 若SM2=1,且接收到RB8=0时,则RI不置“1”,不接收 主机发来的数据; 若SM2=1,且接收到RB8=1时,置RI为“1”,产生中断 请求,将接收到的8位数据送到SBUF。 若SM2=0,则不论RB8为“0”还是为“1”,都将接收到的 数据送到SBUF中,并产生中断。 REN:允许串行接收控制位。若REN=0,则禁止接收;若REN=1,则允许接收。该位由软件置位或复位。

TB8/RB8:发送/接收数据位的第9位。   在方式2和方式3时,TB8为所要发送的第9位数据。在多 机通信中,以TB8位的状态表示主机发送的是地址还是数据: TB8=0为数据,TB8=1为地址;也可用作数据的奇偶校验位。 该位由软件置位或复位。 TI/RI:发送/接收中断标志位。   在方式0时,发送/接收完第8位数据后,由硬件置位;在 其它方式中,在发送/接收停止位的中间,由硬件置位。TI=1 或 RI=1 可申请中断,也可供软件查询用。 在任何方式中,TI/RI 都必须由软件来清“0”。

3. 特殊功能寄存器PCON PCON主要是为CHMOS型单片机的电源控制而设置的 专用寄存器,单元地址为87H,不能位寻址。其内容如下: IDL PD GF0 GF1 SMOD D7 D6 D5 D4 D3 D2 D1 D0 PCON 87H 在CMOS单片机中,该寄存器除最高位外,其它位都是 虚设的。最高位SMOD为串行口波特率倍增位,当SMOD=1 时,方式1、2、3的波特率加倍;当SMOD=0时,系统复位。

8.3 波特率 波特率是表征数据传输速度的重要指标,定义为每秒钟 传送二进制数码的位数,单位是bps(bit per second),即 8.3 波特率 波特率是表征数据传输速度的重要指标,定义为每秒钟 传送二进制数码的位数,单位是bps(bit per second),即 位/秒。波特率的倒数也就是每一位的传输时间。 在串行通信中,收发双方对发送或接收的数据速率(即 波特率)要有一定的约定。通过软件对80C51串行口编程可 约定4种工作方式,其中方式0和方式2的波特率是固定的,而 方式1和方式3的波特率是可变的,由定时器T1 的溢出率控制。 下面分别加以介绍:

1. 方式0和方式2的波特率 方式0中,每个机器周期发送或接收一位数据,因此波特 1. 方式0和方式2的波特率 方式0中,每个机器周期发送或接收一位数据,因此波特 率的数值固定为晶振频率数值的1/12,且不受SMOD的影响。 方式2中, 波特率取决于PCON中的SMOD之值。当SMOD = 0 时,波特率为 fosc 的 1/64;若 SMOD=1 时,波特率为 fosc 的 1/32,即 方式2的波特率 = × fosc 2 64 SMOD

2. 方式1和方式3的波特率 对于方式1和方式3,波特率都由定时器T1的溢出率决定 的,对应于以下公式: 2. 方式1和方式3的波特率 对于方式1和方式3,波特率都由定时器T1的溢出率决定 的,对应于以下公式:   波特率 = (2SMOD / 32) × (定时器T1的溢出率) 其中,T1溢出率取决于计数速率和定时器的预置值。计 数速率与TMOD寄存器中C/T的状态有关。当C/T=0时,计数 速率=fosc/12;当C/T=1时,计数速率取决于外部输入时钟频 率。

当T1作波特率发生器时,通常是选用自动重装载方式2。 在方式2中,定时初值为X,那么每过“256-X”个机器周期, 定时器T1就会产生一次溢出。溢出周期为: T = (256 - X) × 12 / fosc 溢出率为溢出周期的倒数,所以: 2SMOD 波特率 = 32 × fosc 12 ×(256-X) 则定时器T1在方式2的定时初值为: 2SMOD ×fosc X = 256 - 384 ×波特率

表8-1 常用波特率和定时器T1初值

8.4 串行通信工作方式 串行口有4种工作方式,它是由SCON中的SM0、SM1 来定义的,如表8-2所示。 表8-2 串行口的工作方式

1. 方式0——同步移位寄存器方式 在方式0下,串行口作同步移位寄存器用,以8位数据 为一帧,先发送或接收最低位,每个机器周期发送或接收 1. 方式0——同步移位寄存器方式 在方式0下,串行口作同步移位寄存器用,以8位数据 为一帧,先发送或接收最低位,每个机器周期发送或接收 一位,故其波特率固定为“fosc/12”。串行数据由RXD (P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)端 送出。这种方式常用于扩展I/O口,如图8-6所示。

例如将串行口作为并行输出口使用时,可采用如图8-6所 示的方法。 图8-6 一种串转并的方法 74LS164

方式0发送:当1个数据写入发送缓冲器SBUF时,串行 口即把8位数据以fosc/12的波特率从TXD端口送出,发送完 后将中断标志TI置“1”,再次发送数据之前,必须用软件将 TI清0。 方式0接收:REN是串行口接收允许控制位。REN=0 时禁止接收;REN=1时允许接收。当软件将REN置“1” 时,即开始从RXD端口以fosc/12波特率输入数据,当接收 到8位数据时,将中断标志RI置“1”。再次接收数据之 前,必须用软件将RI清0。

2. 方式1——10位通用异步接口 方式1下,串行口为10位通用异步接口。发送或接收 2. 方式1——10位通用异步接口 方式1下,串行口为10位通用异步接口。发送或接收 一帧数据信息为10位,包括1位起始位“0”、8位数据位、1 位停止位“1”。 波特率可调,为: 波特率 = (2SMOD/32) × (定时器T1的溢出率) 定时器T1的溢出率=fosc/12×(2n-X)

方式1发送:数据从TXD端口输出,当数据写入发送缓 冲器SBUF时,就启动发送器发送。发送完一帧数据后,置 中断标志TI=1,申请中断,通知CPU可以发送下一个数据 了。 方式1接收:首先使REN=1(允许接收数据),串行口 从RXD接收数据,当采样到1至0跳变时,确认是起始位 “0”,就开始接收一帧数据,当接收完一帧数据时,置中断 标志RI=1,申请中断,通知CPU从SBUF取走接收到的数据。

3. 方式2——11位异步通信接口 方式2下串行口为11位异步通信接口。发送或接收一帧 3. 方式2——11位异步通信接口 方式2下串行口为11位异步通信接口。发送或接收一帧 信息包括1位起始位“0”、8位数据位、1位可编程位、1位停 止位“1”。 波特率固定,为: 方式2的波特率 = × fosc 2 64 SMOD

方式2发送:发送前,先根据通信协议由软件设置TB8为 “奇偶校验位”或“数据标识位”,然后将要发送的数据写入 SBUF,即能启动发送器。发送过程是由执行任何一条以 SBUF为目的寄存器的指令而启动的,把8位数据装入SBUF, 同时还把TB8装到发送移位寄存器的第9位上,然后从TXD (P3.1)端口输出一帧数据。 方式2接收:先置REN=1,使串行口为允许接收状态, 同时还要将RI清“0”。然后再根据SM2的状态和所接收到的 RB8(第9位)的状态决定此串行口在信息到来后是否置RI=1?并申请中断,通知CPU接收数据。

当SM2=0时,不管RB8为“0”还是为“1”,都置RI=1,此 串行口将接收发送来的信息。 当SM2=1时,且RB8=1,表示在多机通信情况下,接收 的信息为“地址帧”, 此时置RI=1, 串行口将接收发来的地址。 当SM2=1时,且RB8=0,表示在多机通信情况下,接收 的信息为“数据帧”, 不是发给本从机的,此时RI不置为 “1”,因而SBUF中接收的数据帧将丢失。

方式2发送举例: PIPL:PUSH PSW ;保护现场 PUSH A CLR TI ;清0发送中断标志 MOV A,@R0 ;取数据 MOV C,P ;奇偶位送C MOV TB8,C ;奇偶位送TB8 MOV SBUF,A ;数据写入发送缓冲器,启动发送 INC R0 ;数据指针加1 POP A ;恢复现场 POP PSW RETI ;中断返回

方式2接收举例: PIPL: PUSH PSW ;保护现场 PUSH A CLR RI ;清0接收中断标志 MOV A, SUBF ;接收数据 MOV C, P  ;取奇偶校验位 JNC L1  ;偶校验时转L1 JNB RB8, ERR ;奇校验时RB8为0转出错处理 SJMP L2 L1: JB RB8, ERR ;偶校验时RB8为1转出错处理 L2: MOV @R0, A ;奇偶校验对时存入数据 INC R0 ;修改指针 POP A ;恢复现场 POP PSW ERR: … ;出错处理 RETI ;中断返回

4. 方式3 ——11位异步通信接口 方式3为波特率可变的11位异步通信方式,除了波特 率有所区别之外,其余方式都与方式2相同。 4. 方式3 ——11位异步通信接口 方式3为波特率可变的11位异步通信方式,除了波特 率有所区别之外,其余方式都与方式2相同。 波特率可调,为: 波特率 = (2SMOD/32) × (定时器T1的溢出率)

5. 方式2、3的应用——多机通信 多机通信是指采用一台主机和多台从机,它们的通信 方式如下图所示。这一功能可以方便地应用于集散式分布 5. 方式2、3的应用——多机通信 多机通信是指采用一台主机和多台从机,它们的通信 方式如下图所示。这一功能可以方便地应用于集散式分布 系统中。多机通信地实现,主要靠主、从机之间正确地设 置与判断多机通信位SM2和发送/接收的第9位数据。 TXD RXD 80C51 主机 0#从机 1#从机 2#从机 图8-7 多机通信连接图

多机通信的工作过程: (1)先给各从机定义地址编号,如分别为00H、01H、 02H、……。 (2)当主机想发送一个数据块给某个从机时,它首先送 出一个地址字节,以辨认从机。地址字节和数据字节可用第9 位数据位来区别,为“1”时表示地址信息,为“0”时表示数据 信息。所以主机发送地址帧时,应使TB8=1。 (3)此时,所有的从机初始化时均置SM2=1,使它只处 于接收地址帧的状态。当从机接收到主机发来的信息后,第9 位RB8若为“1”,则置RI=1,在中断程序中判断该地址帧是否 与自己的地址相符?若相符,就使SM2=0,准备接收即将从 主机发送来的数据帧;若不相符,仍然保持SM2=1。

(4)接着主机发送数据帧,使TB8=0。此时虽然所有从 机都能收到此信息,但只有SM2=0的那个从机才能接收此数 据帧,其它SM2=1的所有从机将丢弃该数据帧。 (5)本次通信结束后,主、从机重新置SM2=1,主机可 再对其它从机寻址。 综上所述,任何时候,通信都只能在主机和一台从机之 间进行,从机之间的通信只有经过主机作中介才能实现, 在实际应用中,因为单片机功能有限,在较大的测控系 统中,常把单片机作为前端机(即下位机或从机)直接用于 控制对象的数据采集与控制,而把PC机作为中央处理器(即 上位机或主机)用于数据处理和对下位机的监控。它们之间 的信息交换主要是采用串行通信。

思 考 题 1. 什么叫中断?80C51单片机有几个中断源? CPU响应中断时,中断入口地址各是多少 ? 么?这些中断标志是如何产生的?又是如何复零 的 ?

3. 什么是串行异步通信?有哪几种帧格式 ? 4. 何谓波特率?若某异步通信接口按方式3传送, 已知每分钟传送 3600 个字符,计算其传送波特率 ?

1. 答:80C51单片机有5个中断源,分别是2个外部中断 源 ,2个片内定时器 T0 和 T1 的溢出中断源,1个片内串行 发送/接收中断源。 CPU响应中断时,中断入口地址如下: 中断源 入口地址 外部中断 0 0003H 定时器 T0 中断 000BH 外部中断 1 0013H 定时器 T1 中断 001BH 串行口中断 0023H

2、答:其中2个片外中断源的中断标识是 IE0和IE1,2 个片内定时器/计数器的中断标识是 TF0 和 TF1,1个片内串 行口中断标识是 TI(或RI)。 中断标志的产生和复位: (1)外部中断的中断标志IE0(或IE1) 当CPU采样到/INT0端出现有效中断请求时,IE0位置1; 响应中断后,转向中断服务程序时,硬件复位。 (2)定时器中断的中断标志TF0(或TF1) T0计数溢出时,硬件置位,响应中断时,硬件复位,不 使用中断时软件清0。 (3)串行中断的中断标志TI(或RI) 发送或接收完一帧数据,硬件置位,响应中断后,必须 软件清0。

2. 答:串行通信是指所传送数据的各位按顺序一位一位 地发送或接收。串行通信分同步通信和异步通信两种方式。 在异步通信中,数据或字符是一帧一帧地传送的,帧定 义为一个字符的完整的通信格式,通常也称为帧格式。 帧格式的一般形式是先用一个起始位“0”表示字符的开 始,然后是数据位,其后是奇偶校验位,最后是停止位,用 以表示字符的结束。适用于80C51的帧格式有3种:(1)8位 数据位;(2)1位起始位、8位数据位、1位停止位;(2)1 位起始位、8位数据位、1位奇偶校验位、1位停止位。

3. 答:波特率(Baud rate)是指每秒钟传输的数据位数, 波特率发生器用于控制串行口的数据传输速率。单位是bps。 若某异步通信接口按方式3传送,说明每个字符由1个起 始位、8个数据位、1个可编程位、1个停止位组成。且已知 每分钟传送3600个字符,故其传送波特率为: 11b × 3600 / 60s = 660 bps

51汇编程序设计总结 一、寄存器使用的问题: 绝对不应该将寄存器A、B和通用寄存器R0~R7等同于我们高级语言里的变量,事实上,这些寄存器只不过在逻辑上与存储空间统一编址,其自身具有独立的硬件结构,这也是为什么使用这些寄存器进行数据传送和运算比用直接地址要快一些的原因。 变通的解决办法:使用伪指令EQU和DATA定义一个存储区的绝对地址,而定义的符号名基本可以替代我们所熟悉的变量。

51汇编程序设计总结 二、现场保护的问题: 51C中的函数、中断函数局部变量还能放到特定区域保存,汇编里连这种保存都没有,毫无疑问,现场一定会被汇编子程序破坏,中断子程序调用中这个问题会更加突出(为什么?)。 解决办法:好的设计风格的养成。

51汇编程序设计总结 好的设计风格: 1、子程序中ACC、PSW必入栈。这也就意味着ACC、B绝不要用作子程序的入口或出口参数。(入口参数定义到哪儿?) 2、对于子程序中通用寄存器的保存:不一定8个寄存器均要全部入栈,代价太大(子程序中也未必用全了全部8个寄存器),一般但普适的方法是子程序中用到的寄存器入栈,同样这会降低效率。更通用但并非万能的方法是修改RS0和RS1来使用不同的寄存器组(为何非万能?)。

51汇编程序设计总结 三、P口读写的理解问题: 是否每次读入P口的数据前都必须向P口写1??

51汇编程序设计总结 四、对于中断的理解: 1、查询法本质是主程序对中断申请标志位的查询,而中断法本质是CPU对中断申请的响应。二者均是对某一中断源所触发的中断事件的处理,它们对外部中断和定时计数器中断均有效(外部中断的查询有细微的差别),串口通讯不提倡使用查询。 2、如采用中断法,则主程序可以在响应中断前继续做其它工作,但中断处理子程序不应过长(有什么问题?),所以,除频繁使用的核心算法外,中断子程序是对代码效率要求最高的子程序。