0522单片机实训教程电子教案第6章_第1页
0522单片机实训教程电子教案第6章_第2页
0522单片机实训教程电子教案第6章_第3页
0522单片机实训教程电子教案第6章_第4页
0522单片机实训教程电子教案第6章_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.1实训概要MCS-51单片机内部除了4个并行I/O口外,还设置一个全双工串行口。在串行接口电路中,二进制数据一位一位一次传送,串行通信只需要2根传输线即可完成,传送成本低,适合于远距离传输。例如,在单片机之间、单片机与IBMPC机之间以及单片机与外部设备之间的数据传送,就依靠串行通信实现。其缺点是速度较慢。

第6章串行接口控制实训内容:串行数据传送串行接口扩展输出I/O口串行接口扩展输入I/O口串行口点对点通信双机通信多机通信预备知识:1.串行通信基本知识(1)计算机通信方式并行通信并行通信是指在同一时刻,数据字节的各位同时传送。在这种传送方式下,数据有几位,就需要几根数据传输线。该方式数据传输速度很快,它适用于计算机与其外设之间进行信息传递。串行通信串行通信是指数据一位一位依此传送。在这种传送方式下,只需要两根线:一根发送数据线,一根接收数据线。MCS-51单片机与其外部设备之间的通信可以通过并行通信和串行通信两种方式实现。如图6-1所示。P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7GNDD0D1D2外D3部D4设D5备D6D7GNDRXDTXDGNDTXDRXD外部设备GND

2)串行通信方式同步传送同步传送是按数据块传送的。它由若干个需要传送的字符顺序连接起来,形成数据块,前面加上特殊的字符—同步字符。同步字符作为数据传送的开始,使接收、发送双方取得同步,同步字符可以由用户定义。在数据块后面加上校验字符,用来检查传送的数据块是否正确。同步传送方式的字符格式如图6-2所示:

….

校验字符2校验字符1数据字节n数据字节2数据字节1同步字符2同步字符1….异步传送异步传送是以一个字符为单位传送的。多个字符可以一个接一个连续传送,也可以断续传送,并且同步时钟脉冲不传送到接收方。发送、接收双方各用自己的时钟源来控制发送和接收。在异步传送中,通过在发送的字符前、后加上若干位,分别叫起始位和停止位,利用每个字符的起止信号建立起收、发双方的同步关系。异步传送的字符格式如图6-3所示:数据位起始位奇偶校验位停止位异步传送格式一个异步传送的字符通常由四部分组成:起始位、数据位、奇偶校验位和停止位。例如:数据位为6位,起始位和停止位各占1位的异步传送字符如图6-4所示。010011011010100111数据位起始位停止位起始位数据位停止位(3)波特率波特率是串行通信中一个重要指标。它定义位每秒传送的二进制数码的位数。单位是:位/秒。波特率反应了串行通信的速率。 (4)串行通信的制式单工方式:采用这种方式的线路只允许数据按照一个固定的方向传送。半双工方式:数据能够从一个站传送到另一个站,也能从另一个站传回,但不能同时在两个方向上传送。全双工方式:数据可以在两个方向上同时发送和接收。三种方式如图6-5所示。

内部总线串口控制寄存器发送缓冲器SBUF发送控制器接收控制器输入移位寄存器接收缓冲器SBUF≥1定时器T1串口中断RXDTXDTIRIP3.1P3.0RXD

串行接口中的特殊功能寄存器串行口控制寄存器SCON:SCON是一个8位的特殊功能寄存器,其字节地址为98H。用于控制和管理串行口的工作方式、多机通信以及串口中断标志。具体如下:SM0、SM1:串行口工作方式选择位。单片机的串行口有4种工作方式,通过SM0和SM1的二进制组合取值选择。具体见表6-1所示。SM0SM1工作方式功能说明波特率00方式0移位寄存器方式fosc/1201方式18位UART可变10方式29位UARTfosc/n,n=64或3211方式39位UART可变

SM2:多机通信控制位。在方式0时,SM2必须为0;在方式1时,如SM2=1,则只有收到有效的停止位时,才会激活RI;在方式2、3时,SM2=1,表示允许多机通信,然后根据接收到的第9位数据的值来决定从机是否接收主机的信号。REN:允许串行接收位。当REN=1时,允许串行接收;REN=0时,禁止串行接收。TB8:方式2或方式3中要发送的第9位数据。需要时可由软件置位或复位。RB8:方式2或方式3中要接收的第9位数据。需要时可由软件置位或复位。方式0中不使用该位。方式1中,若SM2=0,则RB8是接收到的停止位。TI:串口发送中断标志位。由硬件在方式0串行发送第8位结束时置“1”,或在其它方式串行发送停止位的开始时置“1”。必须由软件清“0”。

RI:串口接收中断标志位。在方式0串行接收到第8位结束时置“1”,或在其它方式串行接收到停止位的中间时置“1”。必须由软件清“0”。电源控制寄存器PCON:PCON是一个8位的特殊功能寄存器,其字节地址为87H。其最高位是串行口波特率系数控制位,用于设置串行通信的波特率。具体如下:D7D6~D0PCONSM0DSMOD=1波特率加倍。PCON的其它位为掉电方式控制位。4.串行接口的工作方式方式0 串口方式0为移位寄存器I/O方式,用于扩展I/O口。方式0输出 数据从RXD(P3.0)脚串行输出,TXD(P3.1)脚输出同步脉冲。方式0输入 是否允许串行口接收数据由串行口控制寄存器SCON的REN位控制。当REN=1且RI=0时,串行口开始接收数据。在方式0下,SCON的TB8和RB8没有使用,多机通信控制位SM2必须为0。

方式1 图6-7中,方式1的数据传送字符格式为:

起始位停止位图6-7方式1的数据传送格式串行口以方式1发送数据时,由TXD输出。在方式1接收数据时,数据通过RXD端输入。方式2和方式3:方式2和方式3可用于多机通信。详见教材。6.2实训22串行数据传送6.2.1实训目的

通过本节实训,主要学习下面内容:串行数据传送的工作原理。通过实例理解串行通信的含义。理解波特率的概念。6.2.2实训要求将片内RAM20H中的并行数据转换成串行数据,送到接在P1.0脚上的发光二极管显示,其波特率为1位/秒。

6.2.3实训器材MCS-51单片机开发系统、发光二极管6.2.4硬件电路原理图并行数据转换成串行数据实训电路如图6-8所示。

6.2.5实训步骤(1)按硬件原理图6-8连接电路,将发光二极管与8031的P1.0

脚相连。(2)理解程序,给每条指令加注释,并画出程序流程图。(3)将程序机器码送入单片机开发系统中,并检查程序是否正确。(4)预先为片内RAM20H单元送入一个数据,如(20H)=55H。连续执行程序,观察发光二极管的亮灭变化,是否与传送的数据相符。6.2.6实训程序并行数据转换成串行数据输出实训程序见表6-2所示。

存储地址机器码行号源程序注释20001ORG2000H20007F082MOVR7,#82002E5203MOVA,20H2004C34CLRC产生起始位200592905MOVP1.0,C20071220176LCALLDELY200A337A1:RLCA200B92908MOVP1.0,C

200D1220179LCALLDELY2010DFF810DJNZR7,A12012D311SETBC产生停止位2013929012MOVP1.0,C201580FE13SJMP$20177C0414DELY:MOVR4,#420197EFA15LL3:MOVR6,#250201B7D6416LL2:MOVR5,#100201D0017LL1:NOP201E0018NOP

201F0019NOP2020DDFB20DJNZR5,LL12022DEF721DJNZR6,LL22024DCF322DJNZR4,LL320262223RET24END6.2.7分析与思考(1)将单字节数据传送程序修改成16字节数据传送程序,执行并观察。(2)修改数据传送时间即波特率,观察数据传送情况。提示:当发送“1”时,发光二极管被点亮,但若连续传送多个“1”时,其一直亮。而发送多个连续“0”时,其一直熄灭。发送10101010B或01010101B时,最便于观察其传送的波特率。6.3实训23串行接口扩展输出I/O口6.3.1实训目的

通过本节实训,主要学习下面内容:串行口扩展输出I/O口的方法。串行接口编程控制。串行数据转换成并行数据输出。并行数据转换成串行数据输出。6.3.2实训要求串口方式0输出。用单片机串口通过串入/并出芯片74LS164扩展8位输出口,并将片内RAM30H单元的数据输出到接在74LS164上的发光二极管显示。多字节传送。将片内RAM30H~3FH共10个字节单元中的并行数据转换成串行数据,送到接在P1.0脚上的发光二极管显示,其波特率为1位/秒。6.3.3实训器材 MCS-51单片机开发系统、74LS164、发光二极管6.3.4硬件电路原理图串口扩展输出口实训电路如图6-9所示。

8031

P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732

A11A10A9A8A7A6A5A4A3A2A1A0

0××××000000000000

0××××000000000001

0××××000000000010

0××××000000000011

0××××1111111111118031

P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732

A11A10A9A8A7A6A5A4A3A2A1A0

0××××000000000000

0××××000000000001

0××××000000000010

0××××000000000011

0××××1111111111118031

P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732

A11A10A9A8A7A6A5A4A3A2A1A0

0××××000000000000

0××××000000000001

0××××000000000010

0××××000000000011

0××××1111111111118031

P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732

A11A10A9A8A7A6A5A4A3A2A1A0

0××××000000000000

0××××000000000001

0××××000000000010

0××××000000000011

0××××111111111111C

P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732

A11A10A9A8A7A6A5A4A3A2A1A0

0××××000000000000

0××××000000000001

0××××000000000010

0××××000000000011

0××××111111111111C

P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732

A11A10A9A8A7A6A5A4A3A2A1A0

0××××000000000000

0××××000000000001

0××××000000000010

0××××000000000011

0××××111111111111C

P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732

A11A10A9A8A7A6A5A4A3A2A1A0

0××××000000000000

0××××000000000001

0××××000000000010

0××××000000000011

0××××111111111111C

P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732

A11A10A9A8A7A6A5A4A3A2A1A0

0××××000000000000

0××××000000000001

0××××000000000010

0××××000000000011

0××××111111111111C

P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732

A11A10A9A8A7A6A5A4A3A2A1A0

0××××000000000000

0××××000000000001

0××××000000000010

0××××000000000011

0××××111111111111

6.3.5实训步骤(1)按硬件电路原理图连接电路。(2)理解程序,给每条指令加注释,并画出程序流程图。(3)分别将实训程序机器码送入单片机开发系统中,并检查程序是否正确。(4)预先为片内RAM30H单元送入一个数据,如(30H)=AAH。连续执行程序,观察发光二极管的亮灭变化,是否与传送的数据相符。6.3.6实训程序串口方式0扩展输出口实训程序见表6-3、表6-4、表6-5所示。

存储地址机器码行号源程序注释20001ORG2000H2000E5302STRT:MOVA,30H2002F43CPLALED共阳时使用20037598004MOVSCON,#00H2006F5995MOVSBUF,A20083099FD6A1:JNBTI,A1200BC2997CLRTI8END

存储地址机器码行号源程序注释00001ORG0000H00000220002LJMPMAIN00233ORG0023H00230220504LJMPZD20005ORG2000H2000E5306MAIN:MOVA,30H2002F47CPLA20037598008MOVSCON,#00H

20037598008MOVSCON,#00H2006F5999MOVSBUF,A2008D2AF10SETBEA200AD2AC11SETBES200CD2BC12SETBPS200E80FE13SJMP$205014ORG2050H205053980015ZD:ANLSCON,#00H205385984016MOV40H,SCON20563217RETI18END

存储地址机器码行号源程序注释30001ORG3000H30007F0A2STAT:MOVR7,#10循环次数300278303MOVR0,#30H30047598004MOVSCON,#00H3007E65SEND:MOVA,@R03008F5996MOVSBUF,A300A3099FD7A1:JNBTI,A1300D5398008ANLSCON,#00H30101230199LCALLD1S30130810INCR03014DFF111DJNZR7,SEND301602300012LJMPSTAT30197C0413D1S:MOVR4,#4延时1秒子程序301B7EFA14LL3:MOVR6,#250301D7D6415LL2:MOVR5,#100301F0016LL1:NOP30200017NOP30210018NOP3022DDFB19DJNZR5,LL13024DEF720DJNZR6,LL23026DCF321DJNZR4,LL330282222RET23END6.3.7分析与思考

表6-3查询方式实训程序中第3行指令CPLA在本程序中是否合适?为什么?提示:在使用串行口方式0外接串入并出的移位寄存器扩展并行输出口时,一般要求移位寄存器带有输出允许控制端,避免数据在串行输出时,并行输出端出现不稳定的输出。输出口最好再连接一个寄存器或锁存器,以免在输出门关闭时(STB=0),输出又发生变化。6.4实训24串行接口扩展输入I/O口6.4.1实训目的通过本节实训,主要学习下面内容:通过串行口扩展输入I/O口的方法。串行接口编程控制。并行数据转换成串行数据存储。

6.4.2实训要求串行口方式0输入。用单片机串行口通过并入/串出芯片74LS165扩展8位输入口,外接输入设备,并将输入的数据送到片内RAM20H单元。6.4.3实训器材MCS-51单片机开发系统、74LS165、8路开关6.4.4硬件电路原理图串行口扩展输入I/O口实训电路如图6-10所示。

6.4.5实训步骤(1)按硬件电路原理图6-10连接电路。(2)理解程序,给每条指令加注释,并画出程序流程图。(3)分别将实训程序机器码送入单片机开发系统中,并检查程序是否正确。(4)预先拨动开关,然后连续执行程序,检查片内RAM20H单元内容是否与开关状态相符。6.4.6实训程序串口方式0扩展输入I/O口实训程序见表6-6、表6-7所示。

存储地址机器码行号源程序注释30001ORG3000H300078202MOVR0,#20H3002C2903CLRP1.03004D2904SETBP1.030067598105MOVSCON,#10H30093098FD6A1:JNBRI,A1300C5398007ANLSCON,#00H300FE5998MOVA,SBUF3011F69MOV@R0,A301280FE10SJMP$11END

存储地址机器码行号源程序注释00001ORG0000H00000230002LJMPMAIN00233ORG0023H00230230504LJMPZD30005ORG3000H300078206MAIN:MOVR0,#20H3002C2907CLRP1.03004D2908SETBP1.030067598109MOVSCON,#10H3009D2AF10SETBEA

300BD2AC11SETBES300DD2BC12SETBPS300FE59913MOVA,SBUF3011F614MOV@R0,A301280FE15SJMP$305016ORG3050H305053980017ZD:ANLSCON,#00H305385983018MOV30H,SCON30563219RETI20END

提示:通过中断方式扩展输入I/O口时,注意串行口中断源入口地址必须为0023H。CPU响应串行口中断后,必须由用户通过程序清0。

6.5实训25双机通信

6.5.1实训目的

通过本节实训,主要学习下面内容:单片机串行口的工作原理以及接收/发送控制过程。单片机串行通信程序设计过程。

6.5.2实训要求将主单片机片外RAM5000H开始的16个字节单元的内容传送至从机片外RAM5000H开始的单元中。6.5.3实训器材MCS-51单片机开发系统2台、导线通信协议

为保证串行通信成功,主机、从机双方必须在软件上约定,称为协议。本通信的协议如下:双方均采用2400波特的速率传送,采用全双工通信方式。主机发送,从机接收。开始时,主机发送一个呼叫信号06H,询问从机是否可以接收。从机收到呼叫信号后,若同意接收,则发给主机00H信号作为应答;若不同意接收则发回0FH信号。主机只有收到从机发来的00H后,才能将片外RAM5000H单元开始的数据发送给从机;否则,继续呼叫,直到从机同意接收为止。双方约定发送数据的格式为:从机根据接收到的校验和,判断已接收到的数据是否正确:若接收正确,则向主机发送0FH。若接收错误,则向主机发送F0H;主机只有接收到0FH,才算完成发送任务,回被调用的程序。否则,继续呼叫,重发据。字节数数据位累加校验和6.5.5程序设计思想

1.主机发送程序的编制波特率设置初始化:设置定时器T1工作在方式2,电源控制寄存器PCON的SMOD位为“1”,则要实现2400波特的波特率传送数据,则定时器T1初始值为: 波特率=2SMOD×T1的溢出率/32 T1的溢出率=1/[(28-T1初始值)×2μS] 即:2400=21/32×1/[(28-T1初始值)×2μS] T1初始值=243=F3H8031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02764

A12A11A10A9A8A7A6A5A4A3A2A1A0

0000000000000000

00011111111111118031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02764

A12A11A10A9A8A7A6A5A4A3A2A1A0

0000000000000000

00011111111111118031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02764

A12A11A10A9A8A7A6A5A4A3A2A1A0

0000000000000000

00011111111111118031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02764

A12A11A10A9A8A7A6A5A4A3A2A1A0

0000000000000000

00011111111111118031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02764

A12A11A10A9A8A7A6A5A4A3A2A1A0

0000000000000000

0001111111111111串行口初始化:设置串行口方式1,允许发送。片内RAM和工作寄存器的设置:规定片内RAM31H、30H存放发送数据块的首地址;2FH存放发送数据块的长度;工作寄存器R6为累加校验和寄存器。2.从机接收程序的编制:波特率初始化:与主机发送程序相同。串行口初始化:设置串行口方式1,允许接收。片内RAM和工作寄存器的设置:规定片内RAM 31H、30H存放接收数据块的首地址;工作寄存器R7存放数据块长度;R6为累加校验和寄存器。从机应答主机的状态信息:00H—同意接收0FH—接收正常F0H—传送出错

6.5.6硬件电路原理图

双机通信实训硬件电路如图6-11所示。6.5.7实训步骤(1)将两台单片机用三条导线如图6-11形式连接(2)将主机发送实训程序和从机接收程序分别送入两台单片机中。(3)将主机、从机的片内RAM(2FH)=10H,(30H)=00H,(31H)=50H。(4)先将主机片外RAM从5000H开始的16个字节单元分别送入00H、11H、22H、……FFH。(5)运行程序:先运行从机程序,再运行主机程序。(6)检查、对比主机、从机的片外RAM5000H~500FH单元内容是否一致。

6.5.8程序流程图主机发送程序流程及细化流程如图6-12、图6-13所示。从机接收程序流程及细化流程如图6-14、图6-15所示。在此从略.

存储地址机器码行号源程序注释20001ORG2000H20007589202START:MOVTMOD,#20HT1方式22003758DF33MOVTH1,#0F3HT1初值,波特率2400波特2006758BF34MOVTL1,#0F3H2009D28E5SETBTR1启动T1200B7598506MOVSCON,#50H串口方式1接收200E7587807MOVPCON,#80H波特率倍增20118531838FMT_RAM:MOVDPH,31H设置外部RAM地址,存于31H30H20148530829MOVDPL,30H2017AF2F10MOVR7,2FH数据块长度

8031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A06116

A10A9A8A7A6A5A4A3A2A1A0

0××××00000000000

0××××00000000001

0××××00000000010

0××××00000000011

0××××111111111118031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A06116

A10A9A8A7A6A5A4A3A2A1A0

0××××00000000000

0××××00000000001

0××××00000000010

0××××00000000011

0××××111111111118031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A06116

A10A9A8A7A6A5A4A3A2A1A0

0××××00000000000

0××××00000000001

0××××00000000010

0××××00000000011

0××××111111111118031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A06116

A10A9A8A7A6A5A4A3A2A1A0

0××××00000000000

0××××00000000001

0××××00000000010

0××××00000000011

0××××111111111118031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A06116

A10A9A8A7A6A5A4A3A2A1A0

0××××00000000000

0××××00000000001

0××××00000000010

0××××00000000011

0××××111111111118031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A06116

A10A9A8A7A6A5A4A3A2A1A0

0××××00000000000

0××××00000000001

0××××00000000010

0××××00000000011

0××××111111111118031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A06116

A10A9A8A7A6A5A4A3A2A1A08031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A06116

A10A9A8A7A6A5A4A3A2A1A08031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A06116

A10A9A8A7A6A5A4A3A2A1A0

0××××00000000000

0××××00000000001

0××××00000000010

0××××00000000011

0××××111111111118031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A06116

A10A9A8A7A6A5A4A3A2A1A0

0××××00000000000

0××××00000000001

0××××00000000010

0××××00000000011

0××××1111111111120197E0011MOVR6,#00H清累加校验和201B740612TX_ACK:MOVA,#06H呼叫信号201DF59913MOVSBUF,A发送201F10990214WAIT1:JBCTI,RX_YES发完否?202280FB15SJMPWAIT1未完,继续发202410980216RX_YES:JBCRI,NEXT1收到否?202780FB17SJMPRX_YES未收到,继续收2029E59918NEXT1:MOVA,SBUF收到,传于ACC202BB400ED19CJNEA,#00H,TX_ACK接收到00H吗?202EEF20TX_BYTES:MOVA,R7是00H,传块长202FF59921MOVSBUF,A发送

20312E22ADDA,R6校验2032FE23MOVR6,A203310990224WAIT2:JBCTI,TX_NEWS发完否?203680FB25SJMPWAIT2未完,继续发2038E026TX_NEWS:MOVXA,@DPTR发送数据2039F59927MOVSBUF,A203B2E28ADDA,R6校验203CFE29MOVR6,A203DA330INCDPTR取下一单元203E10990231WAIT3:JBCTI,NEXT2数据发完否?204180FB32SJMPWAIT3未完?继续发2043DFF333NEXT2:DJNZR7,TX_NEWS全部发完否?2045EE34TX_SUM:MOVA,R6全部发完,发送校验数据2046F59935MOVSBUF,A204810990236WAIT4:JBCTI,RX_0FH校验发完否?204B80FB37SJMPWAIT4未完?继续

204D10980238RX_0FH:JBCRI,IF_0FH发完,接收0FH205080FB39SJMPRX_0FH未收到,继续2052E59940IF_0FH:MOVA,SBUF接收2054B40FBA41CJNEA,#0FH,FMT_RAM收到是0FH?否,重来。是,从头开始。205702200042LJMPSTART43END

存储地址机器码行号源程序注释20001ORG2000H20007589202START:MOVTMOD,#20HT1方式22003758DF33MOVTH1,#0F3HT1初值,波特率2400波特2006758BF34MOVTL1,#0F3H2009D28E5SETBTR1启动T1200B7598506MOVSCON,#50H串口方式1接收200E7587807MOVPCON,#80H波特率倍增20118531838FMT_RAM:MOVDPH,31H设置外部RAM地址,存于31H30H20148530829MOVDPL,30H20177E0010MOVR6,#00H清累加校验和

201910980211RX_ACK:JBCRI,IF_06H收到06H信号?201C80FB12SJMPRX_ACK未收到,继续201EE59913IF_06H:MOVA,SBUF接收2020B4060914CJNEA,#06H,TX_15H接收是06H?2023740015TX_00H:MOVA,#00H是,发00H应答2025F59916MOVSBUF,A202710990E17WAIT1:JBCTI,RX_BYTES发完?202A80FB18SJMPWAIT1未完,继续202C741519TX_15H:MOVA,#15H收到非06H信号,发15H应答202EF59920MOVSBUF,A203010990221WAIT2:JBCTI,HAVE1发完否?203380FB22SJMPWAIT2未完,继续203502201923HAVE1:LJMPRX_ACK未收到06H,重新发送203810980224RX_BYTES:JBCRI,HAVE2收到06H否?203B80FB25SJMPRX_BYTES未完,继续发203DE59926HAVE2:MOVA,SBUF接收字节数203FFF27MOVR7,A暂存2040FE28MOVR6,A204110980229RX_NEWS:JBCRI,HAVE3收完否?204480FB30SJMPRX_NEWS未完?继续2046E59931HAVE3:MOVA,SBUF收完,接收数据2048F032MOVX@DPTR,A存于片外RAM2049A333INCDPTR修改指针

204A2E34ADDA,R6校验数据204BFE35MOVR6,A204CDFF336DJNZR7,RX_NEWS全部接收完?204E10980237RX_SUM:JBCRI,HAVE4RI=1?205180FB38SJMPRX_SUM否,继续2053E59939HAVE4:MOVA,SBUF接收2055B5060940CJNEA,06H,TX_ERR是(06H)?2058740F41TX_RIGHT:MOVA,#0FH是,发0FH信号205AF59942MOVSBUF,A205C10990E43WAIT3:JBCTI,GOOD接收到?205F80FB44SJMPWAIT3未收到,继续206174F045TX_ERR:MOVA,#0F0H接收错,发送出错信息F0H2063F59946MOVSBUF,A206510990247WAIT4:JBCTI,AGAIN发完否?206880FB48SJMPWAIT4未完,继续206A02201149AGAIN:LJMPFMT_RAM完成,转206D02200050GOOD:LJMPSTART重新开始51END6.5.10分析与思考利用图6-16电路,编写单片机串行口自发自收程序,实现串行通信的自发自收。1.实训练习电路如图6-16所示。

8031A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A06264

A12A11A10A9A8A7A6A5A4A3A2A1A0

0010000000000000

0010000000000001

0010000000000010

00111111111111118031A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A06264

A12A11A10A9A8A7A6A5A4A3A2A1A0

0010000000000000

0010000000000001

0010000000000010

00111111111111118031A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A06264

A12A11A10A9A8A7A6A5A4A3A2A1A0

0010000000000000

0010000000000001

0010000000000010

0011111111111111

2.实训练习参考程序实训练习参考程序见表6-10所示。存储地址机器码行号源程序注释20001ORG2000H20007589202START:MOVTMOD,#20H2003758DCC3MOVTH1,#0CCH2006758BCC4MOVTL1,#0CCH2009D28E5SETBTR1200B7598506MOVSCON,#50H200EC2997A1:CLRTI

20107590FE8MOVP1,#0FEH201311269ACALLDAY201574FF10MOVA,#0FFH2017F59911MOVSBUF,A20193098FD12JNBRI,$201CC29813CLRRI201EE59914MOVA,SBUF2020F59015MOVP1,A2022112616ACALLDAY202480E817SJMPA120267FFF18DAY:MOVR7,#0FFH20287FFF19DAL:MOVR7,#0FFH202ADFFE20DJNZR7,$202CDEFA21DJNZR6,DAL202E2222RET23END提示:如果不能传送,则检查通信线路是否连接正确、线路是否过长、双方波特率是否一致,甚至考虑更换另一台机器等。有关波特率的设计请参阅相关教材。

6.6实训26多机通信

6.6.1实训目的

通过本节实训,主要学习下面内容:单片机串行口的工作原理以及接收/发送控制过程。单片机多机串行通信程序设计过程。

6.6.2实训要求编程将主机片内RAM50H~5FH单元内容传送到各从机片内50H~5FH单元中。6.6.3实训器材MCS-51单片机开发系统5台6.6.4硬件电路原理图将5台单片机器连接成一个网络系统。实现一机与多机通信。采用主从方式:一台作为主机,其余为从机。主机负责控制,发送数据,从机服从主机调度、支配,接收数据。串行通信采用串口方式2。实训硬件电路如图6-17所示。

6.6.5程序流程图

主机、从机流程及细化流程分别如图6-18、图6-19、图6-20和图6-21所示。

开始接收主机发来的地址联络成功?发送数据继续联络发送完成否?指向下一个从机YNYN

开始接收主机发来的地址继续联络接收数据联络成功?YN6.6.6实训步骤(1)将5台单片机按照硬件电路如图6-17形式连接。(2)阅读并理解程序,填加注释。(3)将主机发送实训程序和从机接收程序分别送入单片机中。(4)为主机的片内RAM50H~5FH单元分别送入16个数。(5)运行程序:先运行从机程序,再运行主机程序。(6)检查、对比主机、从机的片内RAM50H~5FH单元内容是否一致。

6.6.7实训程序

主机发送

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论