串行口工作方式_第1页
串行口工作方式_第2页
串行口工作方式_第3页
串行口工作方式_第4页
串行口工作方式_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

关于串行口工作方式23.04.20241MCS-51单片机内部集成了一个全双工异步通信串行口单片机的串行通信使用的是异步串行通信1、并行通信和串行通信1010P1.0P1.1P1.2P1.3RXDTXD单片机外设1外设201011010P1.701017.0概述第2页,共75页,2024年2月25日,星期天异步方式:双方只有数据线而没有时钟线。双方都以自己的时钟源控制发送和接收的速率,发送端和接收端使用的不是同一个时钟。以字符为单位进行数据传送,每一个字符均按固定的字符格式传送,又被称为帧。2、异步方式和同步方式注意:由于通讯双方系统时钟往往不同,所以在异步通信中,要想保证通信的成功必须保证两点: ①通信双方必须保持相同的传送、接收速率(波特率); ②双方必须遵守相同的数据格式(字符帧)。优点:是不需要传送同步脉冲,可靠性高,所需设备简单;缺点:是传输速率低(增加起始位和停止位)。第3页,共75页,2024年2月25日,星期天同步方式:在物理结构上,通信双方除了通信的数据线外还增加了一个通信用的“时钟传输线clock”。由主控方提供时钟信号clock。由于有了时钟信号来“同步”发送或接收操作,所以被传送的数据不再使用“起始位”和“停止位”,因而提高了传送速度。因此同步通信常被用于系统内部各芯片之间的接口设计。由于同步通信多了一条“时钟线”,因此不太适合远距离的通信。优点是数据传输速率较高;缺点是要求发送时钟和接收时钟保持严格同步。主控方被控方dataclock主控方被控方dataclock

主控方发送数据主控方接收数据

第4页,共75页,2024年2月25日,星期天3、串行通信工作方式单工

A

B

收半双工

A

B

收发广播电台收音机对讲机全双工

A

发收

B

发电话机第5页,共75页,2024年2月25日,星期天例:异步串行通信的数据传送的速率是120字符/秒,而每个字符规定包含10位(1个起始位、8个数据位、1个停止位)数字,则传输波特率为:

120字符/秒×10位/字符=1200位/秒=1200bps4、波特率用于表征串行通信速率的参数称为“波特率”;波特率是指每秒钟传送二进制的位数;

(发送一个二进制位的时间的倒数)

波特率的单位为:位/秒(bit/s);波特(Baud)。波特率取值范围一般为:0~115200bit/s。影响波特率的主要因素取决于传输线的分布电容、通信电平标准和传送距离;第6页,共75页,2024年2月25日,星期天TTL电平、RS-232、RS-485等通信标准。5、串行通信的电平标准

TTL电平(0~5V):1.5米以内。RS-232标准(+12V~-12V):15米之内。RS-485标准(差分输入输出):1200米以上。

TTL电平:逻辑1:5V逻辑0:0VRS-232标准:逻辑1:-3~-15V逻辑0:+3V~+15VRS-485标准:逻辑1:+(2~6)V逻辑0:-(2~6)V第7页,共75页,2024年2月25日,星期天MCS-51单片机的异步串行通讯应用示意图MCS-51TXD(甲)RXDRXDMCS-51TXD(乙)单片机甲、乙之间近距离的直接通讯RS-232或485RS-232或485单片机甲乙两地之间远距离通讯MCS-51TXD(甲)RXDRXDMCS-51TXD(乙)RS-232PC机COM1,COM2单片机与PC机之间的数据通讯MCS-51TXDRXD第8页,共75页,2024年2月25日,星期天①异步串行UART、同步串行USRT总线接口;②SPI(Microwire)总线接口---同步外设接口(SPI)是由摩托罗拉公司开发全双工同步串行总线。

③I2C总线接口------由PHILIPS公司开发的两线式串行总线。

④1-Wire总线接口----是Maxim子公司达拉斯半导体的专利技术,采用单一信号线,

⑤CAN总线接口---1986年德国电气商博世公司开发出面向汽车的CAN通信协议

;⑥USB总线接口---是由Intel、Compaq、Digital、IBM、

Microsoft、NEC、NorthernTelecom等7家世界著名的计算机和通信公司共同推出。6、当前嵌入式系统流行的串行接口第9页,共75页,2024年2月25日,星期天4种工作方式如何设置波特率如何设置7.1串行口的结构一、串行口的结构图:CPU如何查知已发完或已接收完数据如何发送和接收数据第10页,共75页,2024年2月25日,星期天23.04.202411第11页,共75页,2024年2月25日,星期天自然优先级矢量地址自然优先级矢量地址高级中断请求PCPC断请求低级中SCON中断标志IPPX01PT0110PX110PS100PT10IEEX0ET0EX1ET1ESTCONIE0TF0IE1TF1TIRIRXTXT11INT10T0INT010源允许总允许优先级硬件查询EAP3.0P3.1P3.5P3.4P3.2P3.3IT0IT1第12页,共75页,2024年2月25日,星期天2、SCON:串行口控制寄存器98HSM0SM1SM2RENTB8RB8TIRI3、PCON:波特率加倍寄存器87H1、SBUF:串行发送/接收数据缓冲器

99HEA

--ESET1EX1ET0EX04、IE:中断允许寄存器

A8HSMOD发送接收5、IP:

中断优先级寄存器-

--PSPT1PX1PT0PX0B8H第13页,共75页,2024年2月25日,星期天1、SBUF串行发送/接收数据缓冲器

99HSBUF串行发送/接收数据缓冲器是两个独立的物理单元,共用一个地址(99H),可同时收、发数据。指注:向发送缓冲器SBUF写入数据即可发送数据;从接收缓冲器SBUF读出数据即可接收数据。发送SBUF接收SBUFMOVSBUF,A

;启动一次数据发送MOVA,SBUF

;完成一次数据接收二、特殊功能寄存器第14页,共75页,2024年2月25日,星期天

SM2:多机通信控制位(常与RB8配合,决定是否激活RI)多机通信方式2和3中,若SM2=1且接收到的第九位数据(RB8)为1,才将接收到的前8位数据送入接收缓冲寄存器SBUF中,并置位RI产生中断请求;否则丢弃前8位数据。若SM2=0,则不论第九位数据(RB8)为1还是为0,都将前8位送入接收SBUF中,并产生中断请求。在方式0时,SM2必须置0。2、SCON:串行口控制寄存器98HSM0SM1SM2RENTB8RB8TIRISM0SM1方式功能说明波特率00方式0移位寄存器方式fosc/1201方式18位UART可变(由T1的溢出率决定)10方式29位UARTfosc/64或者fosc/3211方式39位UART可变第15页,共75页,2024年2月25日,星期天23.04.202416REN:允许接收控制位,软件置位或清零TB8:将要发送的第九位数,在执行MOVSBUF,A指令之前要事先将TB8设定好;双机通信作校验位,多机通信作地址/数据标识位。RB8:方式1中放停止位,方式2、3中放接收的第九位数TI——发送中断标志位在方式0时,发送完第8位数据后,该位由硬件置位。在其它方式下,于发送停止位之前,由硬件置位。

TI=1表示帧发送结束,其状态既可供软件查询使用,也可请求中断。TI由软件清“0”。RI——接收中断标志位在方式0时,接收完第8位数据后,该位由硬件置位。在其它方式下,接收到停止位之前,该位硬件置位。

RI=1表示帧接收结束,其状态既可供软件查询使用,也可请求中断。RI由软件清“0”。第16页,共75页,2024年2月25日,星期天SMOD3、PCON:

波特率加倍寄存器87H它的D7位SMOD为串行口波特率控制位,可由软件置位或清零。若SMOD=1,则使工作在方式1、2、3时的波特率加倍。系统复位时默认为SMOD=0。第17页,共75页,2024年2月25日,星期天(1)当CPU执行:MOVSBUF,A

指令后,便发送一帧数据。1、利用发送标志TI(SCON.1)控制数据的发送操作思考(1)CPU如何发送数据?(2)CPU如何知道已发送完一帧数据?方案一:使用查询的方式对TI进行检测:

JNB TI,$

;如果TI≠1则等待

CLRTI

;清楚标志位

MOVSBUF,A

;TI=1时发送下一个数据方案二:如果系统中断是开放的,则TI=1会自动引发中断。

CLRTI

;清楚标志位

MOVSBUF,A

;在中断程序中发送下一个数据;(2)当完成一帧数据的发送后,TI=1,有两种方案可以知道已发完一帧数据。三、接收和发送操作第18页,共75页,2024年2月25日,星期天2、利用接收标志RI(SCON.0)控制数据的接收操作(1)当SUBF从RXD引脚接收完一个完整的数据帧时RI=1思考(1)CPU如何知道已接收完一帧数据?(2)CPU如何处理接收的数据?(2)CPU可以使用两种方案来处理接收的数据:方案一:CPU采用查询RI来控制数据的读取。

JNBRI,$

;如果RI≠1则等待

CLRRI

;清楚标志位

MOVA,SBUF

;RI=1时,取SBUF中数据送A。方案二:如果中断是开放的,则RI=1时会自动引发中断。

CLRRI

MOVA,SBUF

;中断方式接收数据;

第19页,共75页,2024年2月25日,星期天RXD:接收、发送的是8位数据端,低位在前,波特率固定为fosc/12,接收/发送完,置位RI/TI,(SM2=0)

TXD:输出同步移位脉冲

当数据写入SBUF后,数据从RXD端在移位脉冲(TXD)的控制下,逐位移入74LS164,74LS164能完成数据的串并转换。当8位数据全部移出后,TI由硬件置位,发生中断请求。若CPU响应中断,则从0023H单元开始执行串行口中断服务程序,数据由74LS164并行输出。

7.2串行口的工作方式一、方式0:同步移位寄存器输入输出方式第20页,共75页,2024年2月25日,星期天串行口方式0的时序思考:1、如何启动发送过程?2、如何知道发送完毕?2、多长时间移一位?思考:1、如何启动接收过程?2、如何知道接收完毕?2、多长时间接收一位?接收条件:

TI=0,置位REN=1发送条件:TI=0第21页,共75页,2024年2月25日,星期天3、方式0的应用:扩展并行输入输出口CB:MOVR7,#0AHMOVR0,#50HMOVSCON,#00HSEND1:MOVA,@R0MOVSBUF,AWAIT:JNBTI,WAIT

CLRTIINCR0DJNZR7,SEND1RET例:将以50H为首地址的10个单元中数据由串口送出。第22页,共75页,2024年2月25日,星期天CB:MOVR7,#05HMOVR0,#30HRE1:MOVSCON,#10HWAIT:JNBRI,WAIT

CLRRIMOVA,SBUFMOV@R0,AINCR0DJNZR7,RE1RET例:从扩展口读入5个数据,存到内部RAM以30H开始的单元中。第23页,共75页,2024年2月25日,星期天23.04.20242424*MCS-51串行口方式0驱动数码管

1、LED数码管 (1)结构

COM:显示器位选线a~dp:显示器段选线第24页,共75页,2024年2月25日,星期天23.04.20242525

发光管驱动额定电流:10~40mA,静态取下限。 (2)静态显示及其段码 静态显示:利用8位锁存功能的I/O口线驱动一个数码管,多 个数码管同时显示,需增加I/O口线。 段码形成:在COM送入低电平或高电平,然后控制个各笔 段引脚电平,即可形成相应段码。【例5-4】:利用P1口并行输出控制八段数码管,设小数点暗,采用共阳顺序、共阴顺序、共阴逆序确定0~9的显示程序为:

解:1)共阳顺序显示硬件结构如图:

2)共阳顺序、共阴顺序、共阴逆序的段码如下:第25页,共75页,2024年2月25日,星期天23.04.20242626共阳顺序段码:C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H共阴顺序段码:3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH(Dp→a)共阴逆序段码:FCH,60H,DAH,F2H,66H,B6H,BEH,E0H,FEH,F6H(a→Dp)第26页,共75页,2024年2月25日,星期天23.04.202427272)并行输出,循环显示0~9秒的显示程序:DIR: MOV R0,#0 MOV DPTR,#TABLOOP:MOV A,R0 MOVC A,@A+DPTR MOV P1,A LCALL DELAY INC R0 CJNE R0,#0AH,LOOP AJMP DIRTAB:DBC0H,F9H,A4H DBB0H,99H,92H DB82H,F8H,80H,90H第27页,共75页,2024年2月25日,星期天23.04.202428282、串行口方式0驱动数码管 (1)串行口与并行口转换控制①

串入并出移位寄存器74LS164图(a)②

并入串出移位寄存器74LS165图(b)第28页,共75页,2024年2月25日,星期天23.04.20242929(2)利用74LS164驱动共阴数码管【例】:利用8031串行口控制八段数码管,设小数点暗,采用共阴逆序,设计循环显示0~9秒的程序。 解:1)硬件结构图(共阴逆序、小数点暗)

2)控制流程、程序第29页,共75页,2024年2月25日,星期天23.04.20243030START:MOV SCON,#00H MOV R0, #00H CLR ES;禁止中断

MOV DPTR, #TABLE LOOP:MOV A, R0 MOVC A, @A+DPTR CLR TI MOV SBUF, A LCALL DELAY INC R0 CJNE R0, #10, LOOP MOV R0, #00H AJMP LOOPTABLE:DB 0FCH,60H,0DAH,0F2H,66H DB0B6H,0BEH,0E0H,0FEH,0F6HORG 0100HDELAY:1秒延时程序(略)

RET第30页,共75页,2024年2月25日,星期天1、波特率:(2SMOD×T1的溢出率)/32,可变。

2、数据格式:一帧信息10位。D0D1D2D3D4D5D6D7停止位起始位发送D7D6D5D4D3D2D1D0起始位停止位接收送RB8当接收到数据后,必须同时满足以下两个条件,接收才真正有效:

REN=1,RI=0SM2=0

或接收到的停止位为1。此时,数据装载SBUF,RI置1,停止位进入RB8。

二、方式1:波特率可变的10位异步通信方式

第31页,共75页,2024年2月25日,星期天注意:何时开始接收信息?检测到起始位的负跳变时,开始接收。第32页,共75页,2024年2月25日,星期天

1、波特率:(2SMOD×fosc)/64,固定。

2、一帧信息11位。

D0D1D2D3D4D5D6D7TB8停止位起始位发送发送完数据置位TI。

TB8D7D6D5D4D3D2D1D0起始位停止位接收接收到有效数据完毕,置位RI的条件:

REN=1,RI=0且SM2=0或接收到第9位数据为1,此时,数据装载SBUF,RI置1,第9位数据(TB8)送入

RB8。

送RB8三、方式2:固定波特率的11位异步接收/发送方式第33页,共75页,2024年2月25日,星期天串行口方式2、3的时序1、波特率:(2SMOD×T1的溢出率)/32,可变,同方式1。

2、一帧信息11位。

四、方式3:可变波特率的11位异步接收/发送方式第34页,共75页,2024年2月25日,星期天方式0:波特率固定为fosc/12。方式2:波特率由PCON中的选择位SMOD来决定,可由下式表示:波特率=(2SMOD/64)×fosc

方式1和方式3:波特率是可变的,由定时器T1的溢出率控制。波特率=(2SMOD/32)×定时器T1溢出率

T1溢出率=T1计数率/产生溢出所需的周期

=(fosc/12)/(28

TC)五、串行口的通信波特率第35页,共75页,2024年2月25日,星期天例:设晶振fosc为11.0592MHz,选定定时器工作方式2,SMOD=0求:4800bps、9600bps时的初值。解:定时器方式2的初始值X的公式经过推导可得到在实际应用时,通常是先确定波特率,后根据波特率求T1定时初值.T1初值=256-2SMOD32×fosc12×波特率故:

X1=256-(11.0592×1)/(384×4800)=FAHX2=256-(11.0592×1)/(384×9600)=FDH第36页,共75页,2024年2月25日,星期天7.3串行口的应用使用串行口的步骤:1、通信双方的硬件连接2、制定通信协议工作方式、波特率、数据格式、效验方法等。3、主程序串行口中断入口处理串口初始化:SCON

PCONT1工作方式及初值、IE、IP4、中断服务程序第37页,共75页,2024年2月25日,星期天一、串口方式0的应用例:用8051串行口外接CD4094扩展8位并行输出口,8位并行口的各位都接一个发光二极管,要求发光二极管呈流水灯状态(轮流点亮)。

方案一:采用查询TI决定是否发送下一帧数据方案二:采用中断决定是否发送下一帧数据第38页,共75页,2024年2月25日,星期天

RRA

CLRP1.0

SJMPOUT0 DELAY:MOVR7,#250 D1:MOVR6,#250 D2:DJNZR6,D2 DJNZR7,D1 RET END

ORG0000H START:MOVSCON,#00H MOVA,#80H

CLRP1.0

OUT0:MOVSBUF,A

OUT1:JNBTI,OUT1 CLRTI

SETBP1.0

ACALLDELAY

第39页,共75页,2024年2月25日,星期天P3.0RXDP3.1TXD分析:从串口送出什么样的数据才能显示0?例:利用串并转换将数字0~9输出到LED显示器上显示,输出同一个数字。

第40页,共75页,2024年2月25日,星期天

ORG0000HAJMPMAINORG0030HMAIN:MOVSP,#60HMOVSCON,#00H

MOVR1,#00HL1:MOVA,R1MOVDPTR,#TABMOVCA,@A+DPTR

MOVSBUF,AJNBTI,$CLRTI

MOVSBUF,AJNBTI,$CLRTICALLDELAYCJNER1,#9,L2MOVR1,#00HAJMPMAINL2:INCR1AJMPL1TAB:DB03H,9FH,25H,0DH,99H,49HDB41H,1FH,01H,09HDELAY:

END思考:不用串行口发送数据,采用某一个输出口是否也可以完成串并转换?

第41页,共75页,2024年2月25日,星期天单片机P1.0P1.1P1.2P1.3RXDTXDP3.0P3.1P1.0P1.1P1.2P1.3RXDTXD单片机P3.0P3.1例:采用串行口方式1进行双机通信,将内部RAM中以50H为首地址的连续10个单元内容送出。硬件连接通信协议方式12400B/S定时器T1方式2晶振12MHZ初值:

二、串口方式1的应用通信距离不超过1.5米第42页,共75页,2024年2月25日,星期天ORG0000HAJMPMAINORG0023HAJMPSINTORG0100HMAIN:MOVTMOD,#00100000BMOVSCON,#40HMOVPCON,#00HMOVTL1,#0F4HMOVTH1,#0F4HSETBESCLRET1SETBTR1SETBEAL1:MOVR0,#50HMOVA,@R0MOVSBUF,AL2:CJNER0,#5AH,L2AJMPL1ORG0200HSINT:CLRTIINCR0MOVA,@R0MOVSBUF,ARETI

END发送程序第43页,共75页,2024年2月25日,星期天ORG0000HAJMPMAINORG0023HAJMPSINTORG0100HMAIN:MOVTMOD,#00100000BMOVSCON,#50HMOVPCON,#00HMOVTL1,#0F4HMOVTH1,#0F4HSETBESCLRET1SETBTR1SETBEAMOVR0,#50HSJMP$SINT:CLRRIMOVA,SBUFMOV@R0,AINCR0RETI

END接收程序第44页,共75页,2024年2月25日,星期天数据送累加器ATB8=PMOVSBUF,ATI=1?CLRTINOYES发送端程序(原始TI=0)RI=1?MOVA,SBUFPSW.P=RB8?出错处理CLRRIYESNO接收端程序(原始RI=0)NY数据送内存例:采用方式2奇偶校验进行双机通信。三、串口方式2的应用第45页,共75页,2024年2月25日,星期天例:采用方式2奇偶校验进行双机通信。SE:MOVA,@R0

MOVC,P

MOVTB8,C

MOVSBUF,AHE:JNBTI,HECLRTIINCR0SJMPSE数据送累加器ATB8=PMOVSBUF,ATI=1?CLRTINOYES发送端程序(原始TI=0)第46页,共75页,2024年2月25日,星期天例:采用方式2奇偶校验进行双机通信,采用偶校验。RE:JNBRI,REMOVA,SBUFMOVC,P

JNCL1JNBRB8,ERPAJMPL2L1:JBRB8,ERP

CLRRIL2:MOV@R0,AINCR0SJMPRERI=1?MOVA,SBUFPSW.P=RB8?出错处理CLRRIYESNO接收端程序(原始RI=0)NY数据送内存第47页,共75页,2024年2月25日,星期天传统方式的多路数据采集系统单片机系统或微型计算机系统传感器1传感器2传感器3传感器4传感器N接口电路

机房或仪表室检测现场四、串口方式3的应用第48页,共75页,2024年2月25日,星期天采用“智能传感器”组成的多路数据采集系统主机从机N从机4从机3从机2从机1RXDTXDTXDRXD第49页,共75页,2024年2月25日,星期天TI:发送中断标志,发送一帧结束,TI=1,必须软件清零

RI:接收中断标志,接收一帧结束,RI=1,必须软件清零

RB8:方式1中放停止位,方式2、3中放接收的第九位数REN:允许接收控制位,软件置位或清零SM2:多机通信控制位(常与RB8配合,决定是否激活RI)方式3:11,11位UART,其波特率为可变,由定时器控制。多机通信SCON的设置SM0SM1SM2RENTB8RB8TIRITB8:将要发送的第九位数,在执行MOVSBUF,A指令之前要事先将TB8设定好;双机通信作校验位;多机通信作地址/数据标识位。第50页,共75页,2024年2月25日,星期天接收到有效数据完毕,置位RI的条件:(1)REN=1,RI=0

(2)且SM2=0或接收到第9位数据为1,此时,数据装载SBUF,RI置1,第9位数据(TB8)送入

RB8。

在方式2、3中接收到的数据是否能装载SBUF的条件:1、SM2=0:RB8=1或RB8=0

都使RI=1,接收数据送入SBUF。2、SM2=1:RB8=1,使RI=1并引发中断,接收的数据送入SBUF。

RB8=0,信息丢失。第51页,共75页,2024年2月25日,星期天多机通讯原理1、SM2=0:RB8=1或RB8=0都使RI=1,接收数据送入SBUF。2、SM2=1:RB8=1,使RI=1并引发中断,接收的数据送入SBUF。

RB8=0,信息丢失。主机1、SM2=02、主机发出地址码

TB8=13、主机发出数据码或命令码TB8=0从机1、SM2=12、从机接收到RB8=1,接收地址码,判断是否和本机地址码相同,若相同,则SM2=0,若不同,则SM2=13、被寻中的从机,接收RB8=0,且SM2=0

将主机发出的数据码或命令码送入SBUF,

RI=1,

没有被寻中的从机,接收RB8=0,且SM2=1,不接收任何数据。第52页,共75页,2024年2月25日,星期天多机通讯中主机与从机之间的控制、状态信息主机的控制命令:

00H主机发送,从机接收;(控制从机的操作)01H主机接收,从机发送。(命令分类)从机状态字:从机向主机发送的用于表征从机工作状态的信息。。ERR·····TRDYRRDY0:合法命令0:发送未就绪

0:接收未就绪1:非法命令1:发送就绪

1:接收就绪从机返回的状态字例:串口方式3应用编程(多机通信)第53页,共75页,2024年2月25日,星期天主机程序框图T1为定时,模式2B=1200,启动T1设串口为模式3REN=1,SM2=0TB8=1设定程序数据:R0~R5停机MCOMMU从机应答?地址相符?发送命令字(TB8=0)从机应答?命令正确?命令分类从机接收就绪?从机发送就绪?RET命令从机复位发FFHNNYYNNYYNNYY接收发送调用MCOMMU接收数据块发送数据块发送从机地址第54页,共75页,2024年2月25日,星期天(一)主机程序(初始化部分) ORG2000HSTART:MOVTMOD,#20H ;定时器T1为模式2(8位自动重装)

MOVTH1,#0F4H MOVTL1,#0F4H ;波特率为1200(设外接6MHz晶体)

SETBTR1 ;启动T1 MOVSCON,#0D8H ;串口为模式3,REN=1,SM2=0,TB8=1 MOVPCON,#00H ;设PCON中的SMOD=0 MOVR0,#40H ;发送数据块首地址送R0指针

MOVR1,#20H ;接收数据块首地址送R1指针

MOVR2,#SLAVE ;被寻从机地址送R2 MOVR3,#00H/#01H ;主发、从收命令。或主收、从发命令

MOVR4,#14H ;发送数据块长度送R4(20)计数器

MOVR5,#14H ;接收数据块长度送R5(20)计数器

ACALLMCOM ;调用主机通讯子程序

SJMP$第55页,共75页,2024年2月25日,星期天(二)主机通讯子程序(MCOM)

ORG2100HMCOM: MOVA,R2 ;取从机地址

MOVSBUF,A JNBRI,$ ;注意:为什么判断RI而不是TI? CLRRI MOVA,SBUF ;取从机的返回地址

XRLA,R2 ;核对两个地址

JZMTXD2 ;相符时,转MTXD2MTXD1:MOVSBUF,#0FFH ;返回地址错误时,发送从机复位信号

SETBTB8 ;设定地址标志

SJMPMCOM;重发从机地址,所有从机重新判断地址MTXD2:CLRTB8 ;将TB8=0,准备发送命令

MOVSBUF,R3 ;送出命令

JNBRI,$ ;等待从机应答

CLRRI ;从机应答后清标志

MOVA,SBUF ;接收从机应答命令

JNBACC.7,MTXD3 ;命令无错时,则命令分类

SJMPMTXD1 ;命令错返回重新联络第56页,共75页,2024年2月25日,星期天MTXD3:CJNER3,#00H,MRXD ;从机发送主机接收时,转MRXD JNBACC.0,MTXD1 ;从机接收时,若从机未准备好转回MTXD4:MOVSBUF,@R0 ;若从机准备好,则开始发送

JNBTI,$ CLRTI INCR0 DJNZR4,MTXD4 RETMRXD: JNBACC.1,MTXD1 ;从机发送未准备好返回MRXD1:JNBRI,$ ;等待接收

CLRRI MOVA,SBUF INCR1 ;接收数据区指针加一

DJNZR5,MRXD1 ;未接收完则继续(R5接收数据计数器)

RET END ERR从机返回的状态字TRDYRRDY0:合法命令0:发送未就绪0:接收未就绪1:非法命令1:发送就绪1:接收就绪第57页,共75页,2024年2月25日,星期天从机主程序框图T1为定时,模式2B=1200,启动T1设串口为模式3REN=1,SM2=1TB8=1设定程序参数:R0~R3开串行口中断动态停机等待主机发送地址码保护现场接收地址符合本机?向主机回送本机地址接收下一字符是命令吗?命令分类

本机发送准备就绪?

本机接收准备就绪?发TRDY=1状态字发RRDY=1状态字发送数据接收数据发送完?接收完?保护现场返回NNYY发送命令接收命令非法命令送TRDY=0送RRDY=0NNNY中断服务程序NY接收FFH时第58页,共75页,2024年2月25日,星期天

ORG0000H LJMPSTART ORG0023H LJMP0100H ORG0040HSTART:MOVTMOD,#20H ;设定定时器T1为模式2 MOVTH1,#0F4H ;设定波特率为1200 MOVTL1,#0F4H SETBTR1 ;启动定时器T1 MOVSCON,#0F8H ;设串口模式3,REN=1,SM2=1,TB8=1 MOVPCON,#00H MOVR0,#20H ;R0指向发送数据块首地址

MOVR1,#40H ;R1指向接收数据块首址

MOVR2,#14H ;R2赋发送数据块长度

MOVR3,#14H ;R3赋接收数据块长度

SETBEA SETBES ;开中断

CLRRI ;清标志RI准备接收数据

SJMP$ ;等待中断(三)从机主程序(初始化)第59页,共75页,2024年2月25日,星期天(四)从机中断服务程序

ORG0100HSINTS: CLRRI ;接收到地址后清RI PUSHACC PUSHPSW ;保护现场

MOVA,SBUF ;接收主机送来得从机地址

XRLA,#SLAVE ;核实从机地址

JZSRXD1 ;若是本机地址转SRXD1RETU: POPPSW ;返回主程序

POPACC ;恢复现场

RETI ;中断返回SRXD1:CLRSM2 ;SM2清零,单独接收主机数据/命令

MOVSBUF,#SLAVE ;向主机发回从机地址

JNBRI,$ ;等待主机的命令

CLRRI ;接收到主机命令后清RI JNBRB8,SRXD2 ;若是命令(RB8=0)则转SRXD2继续

SJMPRETU ;接收的不是命令时(RB8=1),返回第60页,共75页,2024年2月25日,星期天SRXD2:MOVA,SBUF ;将接收到的命令送A CJNEA,#02H,NEXT ;命令合法(A-02H)NEXT: JCSRXD3 ;若命令合法(A<02H)则继续

CLRTI ;命令不合法则清TI准备发回ERR=1 MOVSBUF,#80H ;发送ERR=1的状态字

SETBSM2 ;SM2重新置位

SJMPRETU ;返回主程序SRXD3:JZSCHRX ;若A=00H既主机发送从机接收转SCHRX JBF0,STXD ;若从机准备好(F0=1)时,转STXD MOVSBUF,#00H ;未准备好时,向主机发回TRXD=0信息

SETBSM2 SJMPRETU ;返回主程序第61页,共75页,2024年2月25日,星期天STXD: MOVSBUF,#02H ;向主机发送TRDY=1的状态字

JNBTI,$ ;等待发送完毕

CLRTI ;发送完毕后清标志TILOOP1:MOVSBUF,@R0 ;开始发送数据块

JNBTI,$ CLRTI INCR0 DJNZR2,LOOP1 SETBSM2 ;数据块发送完毕

SJMPRETU ;返回主程序SCHRX:JBPSW.1,SRXD ;本机接收就绪转SRXD(PSW.1:标志)

MOVSBUF,#00H ;接收未准备好时,向主机发RRDY=0 SETBSM2 SJMPRETU ;返回主程序第62页,共75页,2024年2月25日,星期天SRXD: MOVSBUF,#01H ;向主机发送RRDY=1状态字LOOP2:JNBRI,$ ;等待接收数据块,开始接收数据块

CLRRI MOV@R1,SBUF INCR1 DJNZR3,LOOP2 SETBSM2 ;数据块接收完毕

SJMPRETU ;返回主程序

END第63页,共75页,2024年2月25日,星期天五、单片机与PC机的通信

单片机与PC机通信种类:双机通信、多机通信;

近距离通信、远距离通信。单片机与PC机通信设计:

1、单片机程序设计

2、PC机程序设计

3、电路设计(电平转换、接口设计)。不大于15米传输距离1200米第64页,共75页,2024年2月25日,星期天1、单片机接收或发送程序:

ORG3000H MAIN:MOVTMOD,#20H;在11.0592MHz下,串行口波特率

MOVTH1,#0FDH ;9600bps,方式3 MOVTL1,#0FDH MOVPCON,#00H SETBTR1 MOVSCON,#0D8H LOOP:JBCRI,RECEIVE ;接收到数据后立即发出去

SJMPLOOP RECEIVE:MOVA,SBUF MOVSBUF,A SEND:JBCTI,SENDEND SJMPSEND SENDEND:SJMPLOOP END 第65页,共75页,2024年2月25日,星期天2、PC机接收或发送程序:(VB语言)

SubForm_Load()

温馨提示

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

评论

0/150

提交评论