单片机原理及其应用

91
单单单单单单单单单 单单单单 1 单单单单单单单单单 (Principle and Application of Microcontroller)

Upload: nieve

Post on 07-Jan-2016

54 views

Category:

Documents


12 download

DESCRIPTION

单片机原理及其应用. (Principle and Application of Microcontroller). 第 1 章 概述 第 2 章 MCS-51 单片机硬件结构 第 3 章 MCS-51 寻址方式和指令系统 第 4 章 MCS-51 汇编程序设计 第 5 章 中断系统 第 6 章 定时器 / 计数器及串行口 第 7 章 存储器扩展 第 8 章 接口电路扩展 第 9 章 应用举例. 6.1 定时 / 计数器结构特点及控制 6.2 串行通信及其接口. 第 6 章 定时器 / 计数器、及串行口. 6.2.1 概述 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 单片机原理及其应用

单片机原理及其应用 扬州大学

1

单片机原理及其应用(Principle and Application of Microcontroller)

Page 2: 单片机原理及其应用

单片机原理及其应用 扬州大学

2

第 1 章 概述第 2 章 MCS-51 单片机硬件结构第 3 章 MCS-51 寻址方式和指令系统第 4 章 MCS-51 汇编程序设计第 5 章 中断系统第 6 章 定时器 / 计数器及串行口第 7 章 存储器扩展第 8 章 接口电路扩展第 9 章 应用举例

Page 3: 单片机原理及其应用

单片机原理及其应用 扬州大学

3

第 6 章 定时器 / 计数器、及串行口

6.1 定时 / 计数器结构特点及控制6.2 串行通信及其接口

Page 4: 单片机原理及其应用

单片机原理及其应用 扬州大学

4

6.2 串行通信及其接口

6.2.1 概述

6.2.2 MCS-51 的串行口

6.2.3 串行口的编程

Page 5: 单片机原理及其应用

单片机原理及其应用 扬州大学

5

6.2.1 概述• 串行通信是将字符数据的每位一位一位地依次传

送。适合于计算机之间、计算机与外部设备之间的远距离通信。

• 串行通信从传输方式分为: 单工方式、半双工方式、全双工方式。• 从接收方式来说,串行通信有两种方式: 异步通信方式、同步通信方式。

Page 6: 单片机原理及其应用

单片机原理及其应用 扬州大学

6

Page 7: 单片机原理及其应用

单片机原理及其应用 扬州大学

7

Page 8: 单片机原理及其应用

单片机原理及其应用 扬州大学

8

Page 9: 单片机原理及其应用

单片机原理及其应用 扬州大学

9

6.2.2 MCS-51 的串行口

一、 串行口的结构

二、 串行口的工作方式

三、 波特率的计算

Page 10: 单片机原理及其应用

单片机原理及其应用 扬州大学

10

一、 串行口的结构 下图是简化的串行口结构示意图。串行口有两个独立的发送、接收缓冲器 SBUF 。可同时发送与接收数据。发送缓冲器只写不能读,接受缓冲器只读不能写。要注意的是它们共用一个 SFR 地址( 99H), 也就

有相同缓冲器名: SBUF

Page 11: 单片机原理及其应用

单片机原理及其应用 扬州大学

11

1.串行口控制寄存器 SCON

SCON 的字节地址为 98H ,可位寻址。格式如图所示。 D7 D6 D5 D4 D3 D2 D1 D0

SM0 SM1 SM2 REN TB8 RB8 TI RI

9F 9E 9D 9C 9B 9A 99 98

SCON位地址

SM0 , SM1 :选择串行口 4 种工作方式。

Page 12: 单片机原理及其应用

单片机原理及其应用 扬州大学

12

TI :发送中断标志,发送一帧结束, TI=1 ,必须软件清零。RI :接收中断标志,接收一帧结束, RI=1 ,必须软件清零。REN :允许接收控制位, REN=1 ,允许接收; REN=0 ,禁止接收。TB8: 发送的第 9 位数据位,可用作校验位和地址 / 数据标识位。RB8 :接收的第 9 位数据位或停止位。SM2 :多机通信控制位 ( 接收控制)。

方式 0 : SM2=0 。方式 1 :一般 SM2=0; 若 SM2=1, 接收到停止位后,才激活 RI 。方式 2 , 3 : SM2=1, 只有接收到 RB8=1, 数据才进入 SBUF, 并使 RI=1 。

若 RB8=0, 数据丢弃。 SM2=0, 不管 RB8 是何值,数据都进 SBUF, 并使 RI=1 。

D7 D6 D5 D4 D3 D2 D1 D0

SM0 SM1 SM2 REN TB8 RB8 TI RI

9F 9E 9D 9C 9B 9A 99 98

SCON位地址

Page 13: 单片机原理及其应用

单片机原理及其应用 扬州大学

13

2.特殊功能寄存器 PCON

其字节地址为 87H ,没有位寻址功能。PCON 的格式如图所示,其中与串行接口有关的只有D7 位 SMOD 。

PCON 格式

SMOD=1 使波特率加倍。

PCON SMOD              

D7 D6 D5 D4 D3 D2 D1 D0

Page 14: 单片机原理及其应用

单片机原理及其应用 扬州大学

14

二、 串行口的工作方式

Page 15: 单片机原理及其应用

单片机原理及其应用 扬州大学

15

1.方式 0 方式 0 是同步移位寄存器输入方式,用来扩展并行口。不用于通信。 8 位数据为一帧,无起始位和停止位。

1 )方式 0 发送 CPU 写入发送缓冲器 SBUF 一字节数据,产生一个正脉冲,

串口开始从低位起,以 fosc/12 的固定波特率从 RxD 输出数据,

同时在 TxD 上出现同步移位时钟。 8 位数据发完后,置位 TI 。

Page 16: 单片机原理及其应用

单片机原理及其应用 扬州大学

16

方式 0 应用外接 74LS164 (串入并出移位寄存器)扩展并行输出口

方式 0 发送时,串行数据由 P3.0 ( RXD 端)送出, 移位脉冲由 P3.1 ( TXD 端)送出。

在移位脉冲的作用下,串行口发送缓冲器的数据逐位地从P3.0 串行移入 74LS164 中。

Page 17: 单片机原理及其应用

单片机原理及其应用 扬州大学

17

2 )方式 0 接收

当 CPU 向 SCON 写入控制字 ( 方式 0 , REN=1,RI=0), 产生一个正

脉冲,串口开始以 fosc/12 的固定波特率从 RxD 接受数据 , 同时

TxD 发出移位脉冲信号,作为外接芯片的移位时钟。 8 位数据收

完后,置位 RI 。

Page 18: 单片机原理及其应用

单片机原理及其应用 扬州大学

18

方式 0 应用扩展 74LS165 (并入串出移位寄存器)作为并行输入口

并行数据输入: S/L 端由高到低跳变时,并行数据置入寄存器;

串行数据输出:当 S/L=1 ,且时钟禁止端(第 15 脚)为低电平时, TXD 移位脉冲作用在 CP 端,数据由右向左方向移动,以

串行方式进入 RXD ,进而入串行口的接收缓冲器中。

Page 19: 单片机原理及其应用

单片机原理及其应用 扬州大学

19

2. 方式 1—可变波特率 8位异步收发方式

启动发送过程MOV SBUF, A发送完时, TI=1

方式 1 的一帧数据为 10 位。波特率可变: 溢出率波特率= 1T32

2SMOD

1) 方式 1 发送 CPU 写入发送缓冲器 SBUF 一字节数据,内部 /SEND 变低,串口开始从数据低位起,以 TX 时钟波特率从 TxD 输出数据,

即每经过一个 TX 时钟, TxD 上输出一个数据位。 8 位数据发完

后,置位 TI , /SEND 信号失效。

Page 20: 单片机原理及其应用

单片机原理及其应用 扬州大学

20

读转换结果If RI{MOV A, SBUF}

2 )方式 1 接收 CPU 向 SCON 写入控制字 ( 方式 1 , REN=1,RI=0), 串口开始

从RxD 检测负跳变。出现负跳变后,位检测采样器启动,以波特率 16 倍的速率采样 RxD 。在 7 , 8 , 9 三次脉冲处采样,并以

三中取二确定起始位。起始位到了后,以同样的方法接收其它数据。

一帧数据收到后先放在移位寄存器中,满足下列条件,数据才进 SBUF ,并置位 RI 。

① RI=0, 说明接收 SBUF空。 ② SM2=0 或 SM2=1 且收到的停止位= 1 (第九位= 1 ) 。

Page 21: 单片机原理及其应用

单片机原理及其应用 扬州大学

21

3.方式 2 — 固定波特率 9位异步收发方式 方式 2 是 9 位异步收发方式,每帧数据均为 11 位。在 8 位数

据后加了可程控的第九位数据,可用于多机通信。波特率固定为:

fosc64

2SMOD

波特率=1) 方式 2 发送 按通信协议设置 TB8 (奇偶校验或地址 / 数据标志 ) , CPU

写入发送缓冲器 SBUF 一字节数据,启动发送过程。串口自动把TB8装到第九位数据位,逐位发出,完毕,置位 TI 。

Page 22: 单片机原理及其应用

单片机原理及其应用 扬州大学

22

【例 6-11】 (7-1) 方式 2 发送在双机通信中的应用 通信检错采用偶校验,放在 TB8 中发送。用第二组工作寄存器区的 R0 作为发送数据指针。下面是发送中断服务程序:

PIPTI: PUSH PSWPUSH ASETB RS1 ;选第二组寄存器CLR RS0CLR TI ;清发送标志MOV A, @R0 ;取数据MOV C, P ;奇: P=1, 偶: P=0MOV TB8, C ;校验位送 TB8MOV SBUF, A ; 数据进 SBUF, 启动发送INC R0 ;调整指针POP APOP PSWRETI

Page 23: 单片机原理及其应用

单片机原理及其应用 扬州大学

23

2)方式 2 接收 当 CPU 向 SCON 写入控制字 ( 方式 2 , REN=1,RI=0), 串口开始从

RxD 检测负跳变。出现负跳变后,位检测采样器启动,以波特率 16 倍的速率采样 RxD 。在 7 , 8 , 9 三次脉冲处采样,并以三中取二确定起始位。起始位到了后,以同样的方法接收其它数据。

一帧数据 (11 位 ) 收到后先放在移位寄存器中,满足下列条件, 8 位数据才进 SBUF ,并置位 RI 。

① RI=0, 说明接收 SBUF空。 ② SM2=0 或 SM2=1 且收到的第九位数据 RB8= 1 ( 地

址)。

Page 24: 单片机原理及其应用

单片机原理及其应用 扬州大学

24

【例 6-12】 (7-2) 方式 2 接收在双机通信中的应用 通信检错采用偶校验,对 RB8 中的校验位作偶校验处理。选用第一组工作寄存器区的 R0 作为接收数据指针。下面是接收中断服务程序:

Page 25: 单片机原理及其应用

单片机原理及其应用 扬州大学

25

PIRI: PUSH PSWPUSH ASETB RS0 ;选第一组寄存器CLR RS1CLR RI ;清接收标志MOV A, SBUF ;从接收缓冲区取数据MOV C, P ; 获得接收数据的奇偶性JNC L1 ;偶数个‘ 1’ ,转查 RB8JNB RB8, ERP ; 奇数个‘ 1’ ,奇校验错

处理AJMP L2 ;奇偶性正确

L1: JB RB8, ERP ; 偶校验错,转出错处理L2: MOV @R0, A ;存接收的数据

INC R0POP APOP PSWRETI

Page 26: 单片机原理及其应用

单片机原理及其应用 扬州大学

26

4.方式 3 — 固定波特率 9位异步收发方式

方式 3和方式 2一样可发送或接收 11位数据,一个起始位(0), 8个数据位 ( 低位在先 ),附加第 9个数据位 ( 可编程控制位 )及一个停止位 (1)。

方式 3和方式 2通信波特率不同,方式 2的波特率是固定的。

方式 3的波特率和方式 1 类似,可以有多种选择,由定时器 T1 或 T2 的溢出率经分频得到。为避免反复对 T1装入初值,常选用方式 2,此时 T1 计数器为 8位,当需要较高波特率时,才选用其他工作方式。

波特率 =( 2SOMD/32) *T1溢出率

Page 27: 单片机原理及其应用

单片机原理及其应用 扬州大学

27

三、 波特率的计算

方式 1, 3 的波特率是可变的。设用 T1 作波特率发生器:

波特率 = ( 2SOMD/32 ) *T1溢出率

波特率的定义:串口每秒钟发送(接收)的位数。

方式 0 和方式 2 是固定波特率: 方式 0 波特率 = fosc/12 , fosc=12MHz, 波特率为 1Mb/s 方式 2

fosc=12MHz, SMOD=0, 波特率为 187.5kb/s, SMOD=1, 波特率为 375 kb/s 。

fosc64

2SMOD

波特率=

1T =12 (2 )

osck

f

X 溢出率

Page 28: 单片机原理及其应用

单片机原理及其应用 扬州大学

28

T1 作波特率发生器,波特率计算公式为:

其中, k 为 T1 计数器的位数,取决于 T1 的工作方式,可以是13( 方式 0) 、 16( 方式 1) 和 8( 方式 2 或 3) 。

T1 作波特率发生器,最常用的是方式 2 。

2

32 12 (2 )

SMODosck

f

X

波特率=

2

32 12 (256 )

SMODoscf

X

波特率=

( 1)2

384k oscf SMOD

X

=波特率

( 1)256

384oscf SMOD

X

=波特率

Page 29: 单片机原理及其应用

单片机原理及其应用 扬州大学

29

Page 30: 单片机原理及其应用

单片机原理及其应用 扬州大学

30

波特率计算【例 6-13】 (7-3) 用 T1 方式 2 作波特率发生器,波特率为 48

00b/s 。晶振频率 12MHz

取 SMOD=0

实际波特率 4460b/s, 误差较大。晶振频率取 11.0592MHz ,可得精确的波特率 (X=250)

61 10256 249.489

32 4800X

- 249=F9H

61 12 104800

32 12 (256 )X

波特率=

61 11.0592 104800

32 12 (256 250)

波特率=

Page 31: 单片机原理及其应用

单片机原理及其应用 扬州大学

31

四、串行口简单应用 串行口初始化编程格式:SIO : MOV SCON , # 控制状态字;写方式字且 TI=RI=

0

(MOV PCON , #80H) ;波特率加倍 ( MOV TMOD , #20H ) ; T1 作波特率发生器

( MOV TH1 , #X ) ;选定波特率 ( MOV TL1 , #Y )

( SETB TR1)

( SETB EA)

( SETB ES) ;开串行口中断

Page 32: 单片机原理及其应用

单片机原理及其应用 扬州大学

32

发送程序:先发送一个字符,等待 TI=1 后再发送下一个字符。

1. 查询方式发送:

TRAM : MOV A , @R0 ;取数据 MOV SBUF , A ;发送一个字符

WAIT : JBC TI , NEXT ;等待发送结束 SJMP WAIT

NEXT : INC R0 ;准备下一次发送 SJMP TRAM

如何停止发送?

Page 33: 单片机原理及其应用

单片机原理及其应用 扬州大学

33

2. 中断方式发送: ORG 0023H ;串行口中断入口 AJMP SINT

MAIN : … ;初始化编程TRAM : MOV A , @R0 ;取数据

MOV SBUF , A ;发送第一个字符

H1 : SJMP H1 ;其它工作

SINT : CLR TI ;中断服务程序 INC R0 MOV A , @R0 ;取数据 MOV SBUF , A ;发送下一个字

符 RETI 如何停止发送?

Page 34: 单片机原理及其应用

单片机原理及其应用 扬州大学

34

接收程序: REN=1 、 RI=0, 等待接收,当 RI=1 ,从 SBUF 读取数据。

1. 查询方式接收:

WAIT : JBC RI , NEXT ;查询等待 SJMP WAIT

NEXT : MOV A , SBUF ;读取接收数据 MOV @R0 , A ;保存数据 INC R0 ;准备下一次接收 SJMP WAIT

如何停止接收?

Page 35: 单片机原理及其应用

单片机原理及其应用 扬州大学

35

2. 中断方式接收: ORG 0023H

AJMP RINT

MAIN : … ;初始化编程H1 : SJMP H1 ;其它任务

RINT : CLR RI ;清中断标志 MOV A , SBUF ;读取接收数据 MOV @R0 , A ;保存数据 INC R0

RETI 如何停止接收?

Page 36: 单片机原理及其应用

单片机原理及其应用 扬州大学

36

6.2.3 串行口的应用与编程

一、 硬件连接

二、 双机通信

三、 多机通信

Page 37: 单片机原理及其应用

单片机原理及其应用 扬州大学

37

两台单片机直接通信

RxDB

TxDB

一、 硬件连接

Page 38: 单片机原理及其应用

单片机原理及其应用 扬州大学

38

两台 8751互传数据

Page 39: 单片机原理及其应用

单片机原理及其应用 扬州大学

39

单片机与 RS232C 接口

( 1 )集成电路电平转换芯片 MC1488 , 1489

( 2 )集成电路电平转换器 Max232 。( 3 )分立元件电平转换电路。

Page 40: 单片机原理及其应用

单片机原理及其应用 扬州大学

40

两台 8031 采用 RS232C总线通信 8031 单片机和 PC 机通过 RS232C 通信

Page 41: 单片机原理及其应用

单片机原理及其应用 扬州大学

41

RS-232C 双机通信接口电路

Page 42: 单片机原理及其应用

单片机原理及其应用 扬州大学

42

Page 43: 单片机原理及其应用

单片机原理及其应用 扬州大学

43

单片机与 PC 机通信

Page 44: 单片机原理及其应用

单片机原理及其应用 扬州大学

44

RS-422A 双机通信接口 RS-232C 明显缺点:传输速率低、通信距离短、接口处信号容易产生串扰等。 RS-422A 标准与 RS-232C 的主要区别:收发双方的信号地不再共地。 RS-422A 采用了平衡驱动和差分接收的方法。用于数据传输的是两条平衡导线。

Page 45: 单片机原理及其应用

单片机原理及其应用 扬州大学

45

RS-485双机通信接口 RS-422A 双机通信需四芯传输线,这对长距离通信很不经济,故在工业现场,通常采用双绞线传输的 RS-485 串行通信接口,很容易实现多机通信。 RS-485 是 RS-422A 的变型,它与 RS-422A 的区别: RS-422A 为全双工,采用两对平衡差分信号线; RS-485 为半双工,采用一对平衡差分信号线。

Page 46: 单片机原理及其应用

单片机原理及其应用 扬州大学

46

RS485 用差分信号传送。+ 2V ~+ 6V表示“ 1” , - 6V ~ - 2V 表示“ 0” 。

DI=1 , VA>VB, DI=0, VA<VB

Page 47: 单片机原理及其应用

单片机原理及其应用 扬州大学

47

二、双机通信【例 6-14 】甲乙双方以串口方式 1( 8位数据)发

送 / 接收数据块。通信协议:波特率-- 4800b/s应答--甲机发呼叫信号“ 06H” 乙机发应答信号“ 00H”表示可以接收

“05H” 暂不接收数据格式 字节数 数据 1 数据 2 …… 数据 n 累加校验和 乙机计算的累加和与接收的累加和相同时,发“ 0FH”否则发“ F0H”,甲机收到“ F0H”则重发。

Page 48: 单片机原理及其应用

单片机原理及其应用 扬州大学

48

1. 甲机发送

甲机将 30H 开始 10 个单元内容发送给乙机,以查询

方式发送。

晶振 11.0592MHz, T1 方式 2 的初值是 FAH

R1 : 数据区指针 R7: 数据长度

R6: 累加和

Page 49: 单片机原理及其应用

单片机原理及其应用 扬州大学

49

R1

Page 50: 单片机原理及其应用

单片机原理及其应用 扬州大学

50

ORG 0HSTART: MOV TMOD, #20H ;T1 方式 2

MOV TH1, #0FAH ;4800b/sMOV TL1, #0FAHMOV SCON, #50HSETB TR1

AGAIN: CLR P1.0CLR TICLR RIMOV R1, #30H ; 数据区首地址MOV R7, #10 ;10 个数据MOV R6, #0 ;累加和清 0

TX_ACK: MOV A, #06H ; 发呼叫“ 06H"MOV SBUF, A

WAT: JNB TI, WATCLR TI

Page 51: 单片机原理及其应用

单片机原理及其应用 扬州大学

51

RX_REP: JNB RI, RX_REP ;等待接收CLR RIMOV A, SBUF ; 接收应答CJNE A, #00H, TX_ACK ; 应答不对,重

;新呼叫TX_NUM: MOV A, R7 ; 发字符数

MOV SBUF, AWAIT2: JNB TI, WAIT2

CLR TITX_DAT: MOV A, @R1 ; 发数据

MOV SBUF, AADD A, R6 ; 计算累加和MOV R6, AINC R1

Page 52: 单片机原理及其应用

单片机原理及其应用 扬州大学

52

WAIT3: JNB TI, WAIT3DJNZ R7, TX_DAT ;未完,再发下一

个 ; 数据MOV A, R6 ; 发累加和MOV SBUF, A

WAIT4: JNB TI, WAIT4CLR TI

CHECK: JNB RI, CHECKCLR RIMOV A, SBUFCJNE A, #0FH, AGAIN ; 传送不正确,重

发SETB P1.0 ; 正确SJMP $

Page 53: 单片机原理及其应用

单片机原理及其应用 扬州大学

53

2. 乙机接收 乙机从 40H开始存放接收到的数据,以查询方

式接收。F0=0 暂不接收F0=1 接收

晶振 11.0592MHz, T1方式 2的初值是 FAH R1: 数据区指针

R7: 数据长度 R6: 累加和

Page 54: 单片机原理及其应用

单片机原理及其应用 扬州大学

54

R1

R1

Page 55: 单片机原理及其应用

单片机原理及其应用 扬州大学

55

ORG 0HSTART: MOV TMOD, #20H ;T1 方式 2

MOV TH1, #0FAH ;4800b/sMOV TL1, #0FAHMOV SCON, #50HSETB TR1

ST: MOV R1, #40H ; 数据区首地址MOV R6, #0 ;累加和清 0

RX_ACK: JNB RI, RX_ACK ; 接收字符CLR RIMOV A, SBUF ; 取呼叫信号CJNE A, #06H, RX_ACKJBC F0, TX_00 ; 同意接收

TX_05: MOV A, #05H ; 不同意接收MOV SBUF, A

SJMP RX_ACK

Page 56: 单片机原理及其应用

单片机原理及其应用 扬州大学

56

TX_00: MOV A, #00H ; 发同意接收信号MOV SBUF, A

RX_NUM: JNB RI, RX_NUM ; 接收字符数CLR RIMOV A, SBUFMOV R7, A ; 存字符计数值

RX_DAT: JNB RI, RX_DAT ; 接收数据CLR RIMOV A, SBUFMOV @R1, A ; 存数据INC R1ADD A, R6 ; 计算累加和MOV R6, ADJNZ R7, RX_DAT ; 数据接收完?

RX_SUM: JNB RI, RX_SUM ; 接收累加和CLR RI

Page 57: 单片机原理及其应用

单片机原理及其应用 扬州大学

57

MOV A, SBUF

CJNE A, R6, TX_ERR

TX_OK: MOV A, #0FH ; 发正确接收标志MOV SBUF, A

SJMP GOOD

TX_ERR:MOV A, #0F0H ; 发错误接收标志MOV SBUF, A

SJMP ST

GOOD: SJMP $

Page 58: 单片机原理及其应用

单片机原理及其应用 扬州大学

58

三、 多机通信1. 多机通信一般结构(主从机模式)

MCS-51 间多机通信

PC 机与 MCS-51 间多机通信

……MAX232 MAX232 MAX232

TxDRxD

Page 59: 单片机原理及其应用

单片机原理及其应用 扬州大学

59

2.多机通信原理 多机通信与双机通信主要不同在于主机如何识别从机。1 )给每个从机分配不同的地址(一字节)。2 )发送的地址帧与数据帧应有不同的标识。

串行口控制寄存器 SCON 中的 SM2 为多机通信控制位。串行口以方式 2 或 3

接收时:若 SM2=1 时,仅当接收到的第 9 位数据 RB8 为 1 时,数据才装入 SBUF ,

置位 RI ,请求CPU 处理(地址);当 SM2=0 时,则接收到一个数据后,不管第 9 位数据 RB8 是 0还是 1 ,

都将数据装入接收缓冲器 SBUF ,置位 RI ,请求CPU 处理(奇偶校验)。

Page 60: 单片机原理及其应用

单片机原理及其应用 扬州大学

60

主机利用 TB8安排地址与数据帧 :

TB8=1: 地址帧, TB8=0: 数据帧。 从机用 SM2 识别地址帧 : 设定 SM2=1 。

接收到的 RB8= 1 时,为地址帧,该帧数据装入 SBUF ,置位 RI ,请求 CPU 处理主机地址呼叫;

若接收到的 RB8= 0 时,为数据帧,丢弃。 具体多机通信过程:1. 所有从机的 SM2=1, 只接收地址帧。2. 主机置 TB8=1, 发送某一从机地址。3. 所有从机收到该地址帧后,与本机地址比较:

相同,令 SM2=0, 准备接收数据帧;不同,维持 SM2=1, 对其后的数据帧不响应。

4. 主机置 TB8=0, 与被选中的从机进行通信。5. 通信结束后,从机再次令 SM2=1 。

Page 61: 单片机原理及其应用

单片机原理及其应用 扬州大学

61

Page 62: 单片机原理及其应用

单片机原理及其应用 扬州大学

62

【例 6-15】 (7-4) 甲乙双方以串口方式 1 ( 8 位数据)发送 /接收数据块。

1. 甲机发送 甲方将 78H,77H 单元内容( 2000H) 作首地址, 76H,75H 单元内容 (2020H)减一作末地址的外部数据存储器的数据块发送给乙方。 波特率选 4800 b/s, 晶振频率 6MHz.

T1 方式 1 作波特率发生器,需要在其中断服务程序中重赋初值:

甲机以查询方式发送地址,中断方式发送数据。

66 10 265536 65530

12 (32 4800)X

- =FFFAH

Page 63: 单片机原理及其应用

单片机原理及其应用 扬州大学

63

开始

SP=60H设堆栈指针

2000H 78H, 77H放入 2020H 76H, 75H放入

调用发送地址子程序

主程序循环

主程序流程图

Page 64: 单片机原理及其应用

单片机原理及其应用 扬州大学

64

ORG 0RESET: LJMP MAIN

ORG 001BHLJMP T1INT ; T1 中断入口ORG 0023HLJMP SINT ;串口中断入口

ORG 0100HMAIN: MOV SP, #60H

MOV 78H, #20H ;数据块首地址MOV 77H, #00HMOV 76H, #20H ;数据块末地址MOV 75H, #20HACALL TRANS ;调发送子程序

HERE: AJMP HERE

Page 65: 单片机原理及其应用

单片机原理及其应用 扬州大学

65

发送子程序流程图

开始

T1 1设定方式 ,置定时初值

CPU T1中断设置 开中断,T1允中断,串口关中断, 高

优先级,串口低优先级

T1启动

返回

发送末地址低位,串口允中断

查询发送首地址,末地址高位

1串口设定方式

F0=0置发送开始标志

等待数据发送完

Page 66: 单片机原理及其应用

单片机原理及其应用 扬州大学

66

TRANS: ANL TMOD, #0FH ;保留 T0 方式不变ORL TMOD, #10H ; T1 方式 1MOV TL1, #0FAH ; T1初值MOV TH1, #0FFHMOV PCON, #80H ; SMOD=1SETB EA ;CLR ES ; 关串口中断SETB ET1SETB PT1 ; T1 高优先级CLR PS ; 串口低优先级SETB TR1 ;启动 T1CLR T1 ; 清发送中断标志MOV SCON, #40H ;串口方式 1MOV SBUF, 78H ;发送首地址高 8 位

WAIT1: JNB TI,WAIT1 ;等待 SBUF空

Page 67: 单片机原理及其应用

单片机原理及其应用 扬州大学

67

CLR TIMOV SBUF, 77H ;发送首地址低 8 位

WAIT2: JNB TI, WAIT2CLR TIMOV SBUF, 76H ;发送末地址高 8 位

WAIT3: JNB TI, WAIT3CLR TIMOV SBUF, 75H ;发送末地址低 8 位SETB ESCLR F0 ; 置发送数据开始标志

WAIT4: JNB F0,WAIT4 ;等待全部数据发送完CLR TIRET

T1 中断服务程序:T1INT: CLR TR1 ;关 T1

MOV TL1, #0FAH ;重置初值MOV TH1, #0FFHSETB TR1 ;启动 T1RETI

Page 68: 单片机原理及其应用

单片机原理及其应用 扬州大学

68

串口中断发送流程图

保护现场

78H设数据指针( )DPH 77H( )DPL

取数据

中断返回

T1, F0=1关中断,关

TI ,清 发送数据

调整数据块地址

?已到数据块末尾

恢复现场

YN

Page 69: 单片机原理及其应用

单片机原理及其应用 扬州大学

69

串口中断服务程序:SINT: PUSH DPL

PUSH DPHPUSH A

ESCOM: MOV DPH, 78H ;设置数据指针MOV DPL, 77HMOVX A, @DPTR ;取数据CLR TI ;清发送中断标志MOV SBUF, A ;发送数据MOV A, DPH ;

CJNE A, 76H, END1 ;判是否到数据块末尾MOV A, DPLCJNE A, 75H, END1 ;再判低位,未到末尾CLR ES ;已到末尾,关串口中断

Page 70: 单片机原理及其应用

单片机原理及其应用 扬州大学

70

CLR ET1 ;关 T1 中断CLR TR1 ;关 T1SETB F0 ; 置数据发送结束标志

ESCOM1: POP APOP DPHPOP DPLRETI

END1: INC 77H ;数据块低地址加 1MOV A, 77HJNZ END2 ;判是否向高地址进位INC 78H ;数据块地址高位加 1

END2: SJMP ESCOM1

Page 71: 单片机原理及其应用

单片机原理及其应用 扬州大学

71

2. 乙机接收

波特率与甲机相同为 4800 b/s ( 晶振频率 6MHz )。 开始接收的第一、二字节是数据块首地址,第三、四字节是数据块末地址减一。从第五字节开始是数据。

设置地址 / 数据接收标志 B.0 , B.0 = 0 ,接收地址; B.0= 1 ,接收数据。

接收的地址放在 78H, 77H, 76H, 75H四个单元

乙机以中断方式接收甲机发送的数据。

Page 72: 单片机原理及其应用

单片机原理及其应用 扬州大学

72

ORG 0

RESET: LJMP MAIN

ORG 001BH

LJMP T1INT ; T1中断入口ORG 0023H

LJMP RSINT ;串口中断入口ORG 0100H

MAIN: MOV SP, #60H

ACALL RECEIVE ;调接收程序AJMP $

主程序

Page 73: 单片机原理及其应用

单片机原理及其应用 扬州大学

73

开始

T1 1设定方式 ,置定时初值

CPU, T1, 中断设置: 串口允许中断T1高优先级,串口低优先级

T1启动

返回

/置地址 数据标志为接收地址B. 0=0

1串口设方式 ,允许接收

70H放接收地址指针

F0=0置接收状态标志

接收状态?

N

Y

接收子程序

Page 74: 单片机原理及其应用

单片机原理及其应用 扬州大学

74

RECEIVE: ANL TMOD, #0FH ;保留 T0 方式不变ORL TMOD, #10H ; T1 方式 1

MOV TL1, #0FAH ; T1初值MOV TH1, #0FFH

MOV PCON, #80H ; SMOD=1

SETB EA ;

SETB ET1

SETB ES ; 允许串口中断SETB PT1 ; T1 高优先级CLR PS ; 串口低优先级SETB TR1 ;启动 T1

MOV SCON, #50H ;串口方式 1 ,允许接收CLR B.0 ;置地址 / 数据标志为地

址MOV 70H, #78H ; 70H 放起始接收地址

Page 75: 单片机原理及其应用

单片机原理及其应用 扬州大学

75

CLR F0 ;置接收状态标志WAIT: JNB F0, WAIT ; F0=0, 处于接收状态。

RET ;否则,退出接收

T1 中断服务程序:T1INT: CLR TR1 ;关 T1

MOV TL1, #0FAH ;重置初值MOV TH1, #0FFH

SETB TR1 ;启动 T1

RETI

Page 76: 单片机原理及其应用

单片机原理及其应用 扬州大学

76

接收中断流程图

(DPTR, A,保护现场 R0)

70H( ) R0 (接收地址存放指针)

从串口接收地址,存入对应单元

接收地址存放指针减一 (70H)-1 70H

中断返回

取外部数据存放地址 DPTR

RI清

B. 0=1置接收数据标志

?接收数据

(R0, A, DPTR)恢复现场

Y

N

?地址接收完

Y

N

RAM从串口接收数据,存入外部

RI清除

存放地址加一

到达数据块末地址?

关中断,置接 F0=1收完标志

Y

N

Page 77: 单片机原理及其应用

单片机原理及其应用 扬州大学

77

RSINT: PUSH DPL

PUSH DPH

PUSH A

MOV A, R0 ; 保护 R0

PUSH A

JB B.0, DATA1 ;是数据,转接收数据MOV R0, 70H ; R0 指向片内 RAM 单元地址MOV A, SBUF ;接收地址MOV @R0, A ;存入相应 RAM 单元DEC 70H ;存放地址减一CLR RI ;清接收中断标志MOV A, #74H

CJNE A, 70H, RETURN ;地址未接收完 ,返回SETB B.0 ; 置接收数据标志

Page 78: 单片机原理及其应用

单片机原理及其应用 扬州大学

78

RETURN: POP A

MOV R0, A ;恢复 R0

POP A

POP DPH

POP DPL

RETI

DATA1: MOV DPH, 78H ; 取数据存放地址MOV DPL, 77H ;到 DPTR

MOV A, SBUF ; 接收数据MOVX @DPTR, A ;存入外部存储器CLR RI ; 清接收中断标志INC 77H ;存放地址加 1

Page 79: 单片机原理及其应用

单片机原理及其应用 扬州大学

79

MOV A, 77H

JNZ END2 ;高位地址不用加 1

INC 78H ;加低位地址进位END2: MOV A, 76H ;检查是否到达数据末地

址CJNE A, 78H, RETURN

MOV A, 75H

CJNE A, 77H, RETURN

CLR ES ; 关串口中断CLR ET1 ;关 T1 中断CLR TI ;SETB F0 ;置接收完数据标志

AJMP RETURN

Page 80: 单片机原理及其应用

单片机原理及其应用 扬州大学

80

【例 6-16】 (7-5) 甲乙双方以串口方式 3 ( 8 位数据)发送 /接收数据块。

1. 甲机发送 甲方先发送存在 78H,77H 单元的地址,然后发送 00H, 01H,

… ,

FEH 共 255 个数据。 波特率选 2400 b/s, 晶振频率 6MHz 。

T1 作波特率发生器,工作在方式 2 ,初值为 F3H

甲机以查询方式发送地址,中断方式发送数据。TB8=1 地址TB8=0 数据

6( 1) 6 10 (1 1)256 256 243 3

384 384 2400oscf SMOD

X F H

=波特率

Page 81: 单片机原理及其应用

单片机原理及其应用 扬州大学

81

开始

T1 2设定方式 ,置定时初值

CPU开中断,串口禁中断

T1启动

动态停机

TI , 8清 发送地址低 位

8发送地址高 位

3串口设定方式TB8=1(地址)

串口开中断

发送完?Y

N

TB8=0( ), A=0( )数据 第一个发送数据

关串口中断

全部数据发送完?

Y

N

流程图中断入口

TI清零

发送新数据

(A+1准备下一个数据 A

中断返回

Page 82: 单片机原理及其应用

单片机原理及其应用 扬州大学

82

程序: ORG 0LJMP TRANSORG 0023HLJMP SINT ;串口中断入口ORG 0100H

TRANS: MOV A, #20H ; T1 方式 2MOV TMOD, A ;MOV TL1, #0F3H ; 波特率初值MOV TH1, #0F3HMOV PCON, #80HSETB EA ; CPU 开中断CLR ES ;禁止串口中断CLR ET1 ;禁止 T1 中断SETB TR1 ; 启动 T1MOV SCON, #0E0H ; 串口方式 3, SM2=1SETB TB8 ; 地址标识

Page 83: 单片机原理及其应用

单片机原理及其应用 扬州大学

83

MOV SBUF, 78H ;发送高位地址WAIT1: JNB TI, WAIT1 ; 等待发送一字节

CLR TI ; 清发送标志MOV SBUF, 77H ;发送低位地址MOV IE, #90H ; CPU, 串口开中断CLR TB8 ;数据标识MOV A, #00H ;第一个数据

WAIT2: CJNE A, #0FFH, WAIT2 ;发送未结束,等待CLR ES ;关串口中断

WAIT: AJMP WAIT ;停止串口中断服务程序SINT: CLR TI ; 清发送标志

MOV SBUF, A ;发送数据INC A ;准备下一个数据RETI

Page 84: 单片机原理及其应用

单片机原理及其应用 扬州大学

84

2. 乙机接收

开始接收的第一、二字节是数据块首地址,第三字节开始是255 个数据,从接收到的地址开始存放。

波特率与甲机相同,为 2400 b/s ( 晶振频率 11.0592MHz )。

乙机以中断方式接收甲机发送的数据。

6( 1) 11.0592 10 (1 1)256 256 232 8

384 384 2400oscf SMOD

X E H

=波特率

Page 85: 单片机原理及其应用

单片机原理及其应用 扬州大学

85

开始

SP=60H重置堆栈指针

调接收子程序

动态停机

T1 2 E8H方式 ,初值

FEH R0 ( )接收地址标志 F0=1 (处于接收状态)

3置串口方式

CPU,串口开中断T1 T1禁中断,启动

F0=1)接收完( ?

Y

N

接收子程序入口

返回

主程序流程图

Page 86: 单片机原理及其应用

单片机原理及其应用 扬州大学

86

主程序 ORG 0LJMP MAINORG 0023HLJMP RE ;串口中断入口ORG 0100H

MAIN: MOV SP, #60H ACALL RECEIVE ; 调接收程序SJMP $

RECEIVE: MOV A, #20H ; T1 方式 2MOV TMOD, AMOV TL1, #0E8H ; 波特率初值MOV TH1, #0E8HMOV PCON, #80HSETB EA ; CPU 开中断CLR ET1 ;禁止 T1 中断

Page 87: 单片机原理及其应用

单片机原理及其应用 扬州大学

87

SETB ES ;允许串口中断SETB TR1 ; 启动 T1MOV SCON, #0F0H ; 串口方式 3,SM2=1, 允许

接收MOV R0, #0FEH ; 接收高位 / 低位地址标

志SETB F0 ; 置接收状态标志

WAIT: MOV C, F0JC WAITRET

Page 88: 单片机原理及其应用

单片机原理及其应用 扬州大学

88

接收中断流程图

接收数据

接收的低位地址DPL

RI清

RB8=1?

Y

中断入口

SM2( )清零 下面接收数据

R0+1接收地址标志加一 R0

接收的高位地址DPH

中断返回

N

Y

R0=0?N Y

存数据到外部存储器

调整地址指针

RI清零

接收完全部数据?

SM2=1( /准备下次传送地址 数据) F0=0 (置接收结束标志)

Page 89: 单片机原理及其应用

单片机原理及其应用 扬州大学

89

串口接收中断服务程序:

RE: MOV C, RB8 ;取地址 / 数据标志JNC PD2 ; 是数据INC R0 ;是地址 , MOV A, R0 ;判高位 / 低位地址标

志JZ PD ;转接收低位地址MOV DPH, SBUF ;接收高位地址AJMP PD1

PD: MOV DPL, SBUF ;接收低位地址CLR SM2 ;只接收 8 位数据帧

PD1: CLR RI ;清接收中断标志RETI

Page 90: 单片机原理及其应用

单片机原理及其应用 扬州大学

90

PD2: MOV A, SBUF ;接收一个数据MOVX @DPTR, A ;存入INC DPTR ;数据指针加 1CLR RI ;清接收中断标志CJNE A, #0FEH, RETURN ;没接收完数据SETB SM2 ;数据接收完,恢复 SM

2CLR F0 ;清除接收状态标志

RERURN: RETI

Page 91: 单片机原理及其应用

单片机原理及其应用 扬州大学

91

本 章 结 束