版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
7-1串行通信基础知识7-2串行口及控制寄存器7-3串行通信工作方式7-4串行口的应用第7章串行数据通信7-1串行通信基础知识一、串行通信基本原理: 并行 数据传送 同步(SYNC)
串行异步(ASYNC)(用于单片机中)
并行数据传送串行数据传送原理各数据位同时传送数据位按位顺序进行优点传送速度快、效率高最少只需一根传输线即可完成:成本低缺点数据位数→传输线根数:成本高速度慢应用传送距离<30米,用于计算机内部几米~几千公里,用于计算机与外设之间异步通信的双方需要两项约定:1.字符格式:一帧字符位数的规定:数据位,校验位,起始位和停止位。2.波特率-Baudrate(位/秒)即数据传送速率的规定:例:要求每秒传送120个字符,每帧为10位。解:传送的波特率为:B=120字符/s×10b/字符=1200波特(b/s)
每位代码的传送时间Td=0.83ms(二)同步通信:
以一串字符为一个传送单位,字符间不加标识位,在一串字符开始用同步字符(常约定1~2个)标识,硬件要求高,通讯双方须严格同步。二、串行通信的基本方式:(一)异步通信:以字符为传送单位用起始位和停止位标识每个字符的开始和结束字符,间隔不固定,只需字符传送时同步即可。异步通讯常用格式:一个字符帧D0D1D2D3D4D5D6D7停止位起始位在同步传送中,当检测到规定的同步字符后,就连续按顺序传送数据,直到通信告一段落;同步传送时,字符与字符之间眉宇间隙,也不用起始位和停止位,仅在数据块开始时用同步字符来表示.同步字符的插入可以是单同步字符或双同步字符,然后是连续的数据块;同步字符可以是由用户约定,也可以采用ASCII码中规定的同步字符SYNC代码,即16H.在同步传送时,要求用时钟来实现通信双方的同步,因此发送方除传送数据外,还要同时传送时钟信号.因此硬件要求较高三、串行接口功能:(1)发送器:并串数据格式转换,添加标识位和校验位,一帧发送结束,设置结束标志,申请中断。(2)接收器:串并数据格式转换,检查错误,去掉标识位,保存有效数据,设置接收结束标志,申请中断。(3)控制器:接收编程命令和控制参数,设置工作方式:同步/异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。四、串行通信的传输方式:1、单工通讯:数据单向传送。(1条数据线,单向)2、半双工通讯:数据可分时双向传送。(2条数据线,双向)3、全双工通讯:可同时进行发送和接收。(1条或2条数据线,双向)发送器接收器地线数据线发送接收器接收发送器地线数据线发送接收器接收发送器地线数据线五、异步串行通信的信号形式:1、远距离直接传输数字信号,信号会发生畸变,因此要把数字信号转变为模拟信号再进行传送。可利用光缆、专用通信电缆或电话线。方法:通常使用频率调制法(频带传送方式)。通常:“1”:1270Hz或2225Hz;“0”:1070Hz或2025Hz。2、因通信时(有干扰)信号要衰减,所以常采用RS232电平负逻辑,拉开“0”和“1”的电压档次,以免信息出错:RS232C负逻辑(EIA电平):“0”:+3V—+25V;“1”:-3V—-25V。最大传输信息的长度为15米。TTL正逻辑:“0”:0—2.4V;“1”:3.6V—+5V;高阻:2.4V—3.6V。TTL电平直接传输距离一般不超过1.5米。RS232负逻辑:“0”:+5V—+15V;“1”:-5V—-15V。最大传输信息的长度为15米。RS-232C(电平转换芯片为MAX232)RS-422RS-4857-2 串行口及控制寄存器串行接口输入/输出引脚:TXD(P3.1)、RXD(P3.0)数据格式:按不同方式,一帧数据位数8/10/11
发送/接收时,数据皆低位在前。一帧字符发送/接收结束,置位标志位(TI/RI),并申请串行中断。
中断控制:中断允许位ES、总允许EA;中断入口:0023H。D0D1D2D3D4D5D6D7停止位起始位D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D8停止位起始位D71个全双工串行接口,可同时进行发送和接收。7-2-1 MCS-51串行接口一、串行接口控制:
1.数据缓冲器SBUF:串行口缓冲器SBUF是可直接寻址的特殊功能寄存器,其内部RAM字节地址是99H。在物理上,它对应着两个独立的寄存器,一个发送寄存器,一个接收寄存器。发送时,就是CPU写SBUF的时候(51系列单片机没有专门的启动发送状态的指令);接收时,就是读取SBUF的过程,接收寄存器是双缓冲的,以避免在接收下一帧数据之前,CPU未能及时响应接收器的中断,没有把上一帧数据读走,而产生两帧数据重叠的问题。2.节电控制寄存器(或电源控制寄存器)PCON:
SMOD(PCON.7):波特率加倍控制位。
SMOD=1,波特率加倍;
SMOD=0,则不加倍。
SMOD:波特率倍增位。当SMOD=1时,波特率加倍;当SMOD=0时,波特率不加倍。SM0、SM1:选择串行口4种工作方式。REN:允许接收控制位,REN=1,允许接收;
REN=0,禁止接收。TB8:发送的第9位数据位,可用作校验位和地址/数据标识位。RB8:接收的第9位数据位或停止位。TI:发送中断标志,发送一帧结束,TI=1,必须软件清零;RI:接收中断标志,接收一帧结束,RI=1,必须软件清零。3.串行口控制/状态寄存器SCON(98H):9FH9EH9DH9CH9BH9AH99H98H位地址位符号表7.2串行口操作模式选择SM0SM1模式功能波特率0001101101238位同步移位寄存器
10位UART11位UART11位UARTfOSC/12可变(T1溢出率)fOSC/64或fOSC/32可变(T1溢出率)SM2:多机控制位,用于多机通讯。
在模式2和3中,若SM2=1,且接收到的第9位数据(RB8)是0,则接收中断标志(RI)不会被激活。在模式1中,若SM2=1且没有接收到有效的停止位,则RI不会被激活。在模式0中,SM2必须是0。7-3串行通信工作方式(1)方式0(SM0=0SM1=0):同步移位寄存器方式用于扩展并行I/O接口。
1.一帧8位,无起始位和停止位。
2.RXD(P3.0):数据输入/输出端。
TXD(P3.1):同步移位脉冲输出端,每个脉冲对应一个数据位。
3.波特率B=fosc/12
如:fosc=12MHz,B=1MHz,每位数据占1s。
4.发送过程:写入SBUF,启动发送.(MOVSBUF,A)
一帧发送结束,TI=1。接收过程:REN=1且RI=0,启动接收,(MOVA,SBUF)
一帧接收完毕,RI=1。发送、接收的是8位数据,低位在先。SM0、SM1选择四种工作方式。
发送时序写入SBUFRXD输出TXDTID0D1D2D3D4D5D6D7写REN=1RI=0RXD输入RI
接收时序(a)(b)时序图:(1)方式0输出(发送)串行数据通过RxD(P3.0)输出,而在TxD(P3.1)输出移位时钟脉冲。当一个数据写入串口数据发送缓冲器时,就开始发送。发送控制器送出移位信号。直到最高位(D7)数字移出后,停止发送数据和移位时钟脉冲。完成一帧数据的发送过程,并置TI为1(申请中断)。若CPU响应中断,则从0023H单元开始执行串口中断服务程序。
RxD8051TxDD1D274LS164CLKD7D6D5D4D3D2D1D0例如:在并行输出口接8支发光二极管,利用其串入并出功能,把发光管从左到右依次点亮,并反复循环.(假定发光管为共阴极型,共阴端接地)程序:MOVSCON,#00HMOVA,#80HDELR:MOVSBUF,AJNBTI,$ACALLDELAYCLRTIRRAAJMPDELR(2)方式0输入(接收)此时RxD端为数据输入端,TxD端为移位时钟信号输出。REN=0,禁止接收。REN=1,允许接收。当满足方式0,且REN=1,且RI=0的条件时,就会启动一次接收过程。在接收过程开始后的第10个机器周期,SCON中的RI位被置位,(中断申请)。至此,完成了一帧数据的接收过程。若CPU响应中断,就去执行由0023H作为入口地址的中断服务程序。
RxD8051TxDQ74LS165CLKD7D6D5D4D3D2D1D0说明:方式0发送或接收完8位数据后由硬件置位发送中断标志TI或接收中断标志RI。CPU响应中断请求转入中断服务程序时并不清TI或RI。中断标志TI或RI要用程序来清0。具体做法:
CLR
TI
CLR
RI或ANL
SCON,#0FEH
ANL
SCON,#0FDH来实现。以方式0工作时SM2位(多机通信控制位)必须为0.(2)方式1:8位数据异步通讯方式1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。2.RXD:接收数据端。
TXD:发送数据端。3.波特率:用T1作为波特率发生器,
B=(2SMOD/32)×T1溢出率。4.发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1(或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否则丢弃接收数据,不置位RI。
当REN=1,CPU开始采样RXD引脚负跳变信号,若出现负跳变,才进入数据接收状态,先检测起始位,若第一位为0,继续接收其余位;否则,停止接收,重新采样负跳变。数据采样速率为波特率16倍频,在数据位中间,用第7、8、9个脉冲采样3次数据位,并3中取2保留采样值。T1的时间常数计算:X=2N-所需定时时间/计数周期=2N-计数频率/所需频率(溢出率)返回写入SBUF采样(a)发送时序图TXD数据输出TID0D1D2D3D4D5D6D7停止位起始位RXD输入数据(b)接收时序图D0D1D2D3D4D5D6D7停止位起始位RI检测负跳变时序图:方式1的两种形式:(1)方式1发送CPU执行任何一条以SBUF为目标寄存器的指令,就启动发送。当发送完数据位时,置位中断标志位TI。(2)方式1接收当检测到RxD引脚上由1到0的跳变时开始接收过程,并复位内部16分频计数器,以实现同步。将1位时间等分成16份,在第7,8,9个计数状态时采样RxD的电平,保证排除噪声干扰。8位数据进入SBUF,停止位进入RB8,且置位中断标志RI。例:假定甲、乙机以方式1进行串行数据通信,其波特率为1200,时钟6MHz。甲机发送,发送数据在外部RAM4000~401FH单元中。乙机接收,并把接收到的数据块首末地址及数据依次存入外部RAM5000H开始的区域中。假设晶振频率为6MHz,按1200波特率,计算定时器1的计数初值:
X=256-fosc*2smod/(384*波特率)=256-6*106*1/(384*1200)=243=0F3Hsmod=0,波特率不倍增,则应使PCON=00H串行发送的内容包括数据块的首末地址和数据两部分内容。对数据块首末地址的传送以查询方式进行,而数据则以中断方式传送。因此在程序中要先禁止串行中断,后允许串行中断。
甲机:首末地址的发送采用查询法数据的发送采用中断法乙机:首末地址的接收采用查询法数据的接收采用中断法下面是发送和接收的参考程序:甲机发送主程序:
ORG 0023H
LJMP ACINT ORG 0100H MOV TMOD,#20H ;设置定时器1工作方式2
MOV TL1,#0F3H ;定时器1计数初值
MOV TH1,#0F3H ;计数重装值
SETB EA ;中断总允许
CLR ES ;禁止串行中断
MOV PCON,#00H ;波特率不倍增
SETB TR1 ;启动定时器1 MOV SCON,#40H ;设置串行口方式1,REN=0 MOV SBUF,#40H ;发送数据区首地址高位SOUT1:JNB TI,$ ;等待一帧发送完毕
CLR TI ;清发送中断标志
MOV SBUF,#00H ;发送数据区首地址低位SOUT2:JNB TI,$ ;等待一帧发送完毕续: CLR TI ;
MOV SBUF,#40H ;发送数据区末地址高位SOUT3:JNB TI,$ ;等待一帧发送完毕
CLR TI ;清发送中断标志
MOV DPTR,#4000H;数据区地址指针
MOV R7,#20H ;数据个数
SETB ES ;开放串行中断
MOV SBUF,#1FH ;发送数据区末地址低位AHALT:AJMP$ ;甲机中断服务程序:
ORG 8100H
ACINT:MOVXA,@DPTR ;读数据
CLR TI ;清发送中断续: MOV SBUF,A ;发送字符
CJNE R7,#00H,AEND1 ;未发送完转AEND1
CLR ES ;禁止串行中断
CLR TR1 ;定时器1停止计数
AJMP AEND2 ;发送完转AEND2AEND1: INC DPTR ;
DEC R7
AEND2:RETI ;中断返回乙机接收主程序:
ORG 0023H
LJMP BCINT
ORG 0100H MOV TMOD,#20H ;设置定时器1工作方式2
MOV TH1,#0F2H ;计数重装值
MOV TL1,#0F2H ;定时器1计数初值
SETB EA ;中断总允许
CLR ES ;禁止串行中断续: MOV PCON,#00H ;波特率不倍增
SETB TR1 ;启动定时
MOV SCON,#50H ;设置串行口方式1,REN=1
MOV DPTR,#5000H;数据存放首地址
MOV R7,#24H ;接收数据个数SIN1: JNB RI,$ ;等待
CLR RI ;清接收中断标志
MOV A,SBUF ;接收数据区首地址高位
MOVX@DPTR,A ;存首地址高位
INC DPTR ;地址指针增量SIN2: JNB RI,$ ;
CLR RI MOV A,SBUF ;接收数据区首地址低位
MOVX@DPTR,A ;存首地址低位
INC DPTRSIN3: JNB RI,$ ;
CLR RI续: MOV A,SBUF ;接收数据区末地址高位
MOVX@DPTR,A ;存末地址高位
INC DPTR ;地址指针增量SIN4: JNB RI,$ ;
CLR RI MOV A,SBUF ;接收数据区末地址低位
MOVX@DPTR,A ;存末地址低位
INC DPTR SETB ES ;开放串行中断BHALT:AJMP$ ;等待中断乙机中断服务程序:
ORG 8100HBCINT:MOV A,SBUF ;接收数据
MOVX@DPTR,A ;存数据
CLR RI ;清接收中断标志
CJNE R7,#00H,BEND1;未接收完转BEND1续:
AJMP BEND2 ;接收完转BEND2BEND1:INC DPTR
DEC R7BEND2:RETI ;中断返回(3)
方式2和方式3:9位数据异步通讯方式1.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。 第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。2.RXD:接收数据端,
TXD:发送数据端。3.波特率:方式2:B=(2SMOD/64)×fosc。 方式3:B=(2SMOD/32)×T1溢出率(与方式1相同)。4.发送:先装入TB8,写入SBUF并启动发送,发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1(或SM2=0),将接收数据装入接收SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据,不置位RI。(a)发送时序图写入SBUFTXD输出TIRXD输入(b)接收时序图RID0D1D2D3D4D5D6TB8停止位起始位D7D0D1D2D3D4D5D6RB8停止位起始位D7检测负跳变时序图:(4)计算波特率:方式0为固定波特率:B=fosc/12 方式2可选两种波特率:B=(2SMOD
/64)×fosc 方式1、3为可变波特率,用T1作波特率发生器。
B=(2SMOD/32)×T1溢出率T1为方式2的时间常数:X=28-t/T溢出时间:t=(28-X)T=(28-X)×12/foscT1溢出率=1/t=fosc/[12×(2n-X)]
波特率B=(2SMOD
/32)×fosc/[12×(28-X)]串行口方式1、3,根据波特率选择T1工作方式,计算时间常数。T1选方式2:TH1=X=28-fosc/12×2SMOD/(32×B)T1选方式1用于低波特率,需考虑T1重装时间常数时间。也可选工作方式3。4种方式比较:方式波特率传送位数发送端接收端用途01/12fosc(固定不变)8(数据)RXDRXD接移位寄存器,扩充并口12SMOD/32T1溢出率10(起始位、8位数据位、停止位)TXDRXD单机通讯22SMOD/64fosc11(第9位为1:地址;为0:数据)TXDRXD多机通讯32SMOD/32T1溢出率11位(同方式2)TXDRXD多机通讯7-4串行口的应用
串行口初始化编程格式:
SIO:MOVSCON,#控制状态字;写方式字且TI=RI=0 (MOVPCON,#80H) ;波特率加倍
(MOVTMOD,#20H) ;T1作波特率发生器
(MOVTH1,#X) ;选定波特率
(MOVTL1,#X) (SETBTR1) (SETBEA) ;开串行口中断
(SETBES)发送程序:1、查询方式:TRAM: MOV A,@R0
;取数据
MOV SBUF,A ;发送一个字符WAIT: JBC TI,NEXT ;等待发送结束
SJMP WAITNEXT: INC R0
;准备下一次发送
SJMP TRAM2、中断方式:
ORG 0023H ;串行口中断入口
AJMPSINTMAIN: … ;初始化编程TRAM: MOV A,@R0
;取数据
MOV SBUF,A ;发送第一个字符
H: SJMP H ;其它工作
SINT: CLRTI ;中断服务程序
INC R0 MOV A,@R0
;取数据
MOV SBUF,A
;发送下一个字符
RETI先发送一个字符,等待TI=1后再发送下一个字符。接收程序:1.查询方式:
WAIT: JBC RI,NEXT ;查询等待
SJMP WAITNEXT: MOV A,SBUF ;读取接收数据
MOV @R0,A ;保存数据
INCR0
;准备下一次接收
SJMP WAIT2.中断方式:
ORG 0023H AJMP RINTMAIN: … ;初始化编程
H: SJMP H ;其它任务
RINT: CLR RI
;清中断标志
MOV A,SBUF
;读取接收数据
MOV @R0,A
;保存数据
INC R0
RETIREN=1、RI=0等待接收,当RI=1,从SBUF读取数据。(一)串行口方式0:串行口通过接口74LS164实现:串行→并行的数据转换(显示器接口);
通过接口74LS165实现:并行→串行的数据转换。
用于接移位寄存器扩充并口。程序:
MOV R7,#20 ;送入20个字节
MOV R0,#20H ;送首地址为20HRCV0:CLR P1.0
;P1.0=0(并行置入数据)
SETB P1.0
;P1.0=1(允许串行移位)
MOVSCON,#10H ;允许方式0接收
JNB RI,$ ;等待RI=1,顺序执行
CLR RI ;RI=0为下一帧数据的接收准备
MOV A,SBUF ;取数
MOV @R0,A INC R0RCV2:DJNZ R7,RCV0 ;R7-1=0?≠0跳(判是否已读入预定字节数)
………. ;对读入数据进行处理ORG0000hAjmpmain
ORG0023H
;串行口中断入口
AJMPTRANIMAIN:MOV SCON,#80H;串行口初始化
MOV PCON,#80H;波特率
SETB EA SETB ES
;开串行口中断
MOV R0,#50H ;设数据指针
MOV R7,#10H
;数据长度LOOP: MOV A,@R0
;取一个字符
MOV C,P ;加奇偶校验
MOV TB8,C MOV SBUF,A
;启动一次发送HERE: SJMP HERE ;CPU执行其它任务(二)异步通讯程序举例:
1.发送程序:将片内RAM50H起始单元的16个数由串行口发送。要求发送波特率为系统时钟的32分频,并进行奇偶校验。 TRANI: PUSH A ;保护现场
PUSH PSW CLR TI ;清发送结束标志
DJNZ R7,NEXT ;是否发送完?
CLR ES ;发送完,关闭串行口中断
SJMP TEND NEXT: INC R0
;未发送完,修改指针
MOV A,@R0
;取下一个字符
MOV C,P ;加奇偶校验
MOV TB8,C MOV SBUF,A ;发送一个字符
POP PSW ;恢复现场
POP A TEND: RETI ;中断返回2.接收程序:RECS: MOV SCON,#50H;串行口方式1允许接收
MOV TMOD,#20H;T1方式2定时
MOV TL1,#0F4H;写入T1时间常数
MOV TH1,#0F4H SETBTR1 ;启动T1
MOV R0,#50H ;设数据指针
MOV R7,#10H ;接收数据长度
WAIT: JBC RI,NEXT ;等待串行口接收
SJMPWAIT NEXT: MOV A,SBUF ;读取接收字符
MOV @R0,A ;保存一个字符
CLR RI INC R0
;修改指针
DJNZR7,WAIT ;全部字符接收完? RET串行输入16个字符,存入片内RAM的50H起始单元,串行口波特率为2400(设晶振为11.0592MHz)。(采用方式1)3.接收程序:RECS: MOV SCON,#0D0H;串行口方式3允许接收
MOV TMOD,#20H;T1方式2定时
MOV TL1,#0F4H ;写入T1
时间常数
MOV TH1,#0F4H SETBTR1 ;启动T1
MOV R0,#50H ;设数据指针
MOV R7,#10H ;接收数据长度
WAIT: JBC RI,NEXT ;等待串行口接收
SJMPWAIT NEXT: MOV A,SBUF ;取一个接收字符
JNB P,COMP ;奇偶校验
JNB RB8,ERR ;P≠RB8,数据出错
SJMPRIGHT ;P=RB8,数据正确COMP: JB RB8,ERR RIGHT: MOV @R0,A ;保存一个字符
CLR RI INC R0
;修改指针
DJNZR7,WAIT ;全部字符接收完? CLR F0 ;F0=0,接收数据全部正确
RETERR: SETBF0 ;F0=1,接收数据出错
RET串行输入16个字符,串行口波特率为2400(设晶振为11.0592MHz)进行奇偶校验。(采用方式3)4.主从分布式微机系统:也叫集散控制系统:从机(单片机)作数据采集或实时控制,主机(PC机)作数据处理、中央管理等。应用:过程控制、仪器仪表、生产自动化和企业管理等方面。直接传送串行通信接法PC机调用的中断指令为:INT14H①单机通信:7-5多机通信技术典型应用:校园卡系统、智能楼宇、自动温控蔬菜大棚、大型粮库、工厂自动化;1#打卡机2#打卡机3#打卡机……n#打卡机通信过程所有从机的SM2=1,处于只接收地址帧状态所有同学坐着听讲主机发地址信息,以第9位TB8=1表示发送的是地址老师喊同学名字从机接收到地址帧后与本机地址比较所有同学听到名字与自己的名字比较被寻址从机SM2=0,其作从机SM2=1不变名字相符的同学站起来(SM2=0)主机发数据信息(TB8=0),对已被寻址的从机因SM2=0,可以接收主机发来的信息。其余从机因SM2=1不理睬主机。老师与站起的同学进行提问,课堂交流,TB8=0.被寻址的从机SM2置1.主机可另发地址帧与其它从机通信时。回答问题的同学坐下(SM2=1)②多机通信系统:PC机要对某一指定了地址编号的单片机通讯,就必须作好联络。①PC机处于发送状态,各单片机的串行口均处于接收状态并使其SM2=1,作好接收地址信息的准备。②PC机发出要通讯的那台单片机的地址编号,然后发送通讯数据,发地址时必须使第9位信息为1,发数据时必须使第9位数据为0。③各单片机收到PC机发来的地址信息后,因此此时各SM2=1,所以将引起各单片机的中断。在中断服务程序中,判断PC机发来的地址是否是自身的地址编号,仅有符合地址编号的那台才使其SM2=0,其它不符合者仍是SM2=1。④随着PC机信息的发出(第9位信息为0),因为符合地址编号的那台单片机此时已是SM2=0,所以这台单片机将再次进入中断,并在中断服务程序中接收PC机发来的数据。那些地址不符者,不能进入中断(因SM2=1),也就不能接收串行来的数据。SM2、RB8与从机动作关系SM2RB8从机动作10此时不能接收数据11能收到主机发的数据(地址信息)00进入串口中断,对接收的数据进行处理01进入串口中断,对接收的数据进行处理2.多机通信系统设计
设多机通信系统主、从机晶振为6MHz,波特率为1200bps,以方式3进行多机串行通信。0#为主机、其他为从机,主机向某从机发出起始地址和终止地址,要求把该地址范围内的数据块由所指定的从机片外数据存贮器中传送到主机片外RAM之相应单元,起始地址的高低两字节分别存放在各机片内RAM的70H和71H单元,终止地址在72H和73H中,主机74H单元存放欲呼叫的从机号。1#从机89c510#……2#从机n#从机图1多机通信系统硬件结构1简单通信协议
主机采用查询方式,从机采用中断方式通信,以确保及时收到主机的通信信息。主机的串口设为方式3,允许接收,并置TB8为1,因为只有一个主机,所以主机SCON中的SM2不置1,故控制字为11011000,即D8H.。主机与从机的通信程序流程图如图2、3所示。
主机呼叫从机和发送地址值用查询方式,接收数据采用中断方式ORG0000HAJMPMASTERORG0023HAJMPRECEIVMASTER:MOVTMOD,#21HMOVTL1,#0F2H;波特率设置
MOVTH1,#0F2HMOVPCON,#00HSETBTR1MOVSCON,#0D8H;
MOVR0,#74H;从机号所在的地址单元
MOVSBUF,@R0;发从机机号
JNBTI,$MOVTH0,#27H;定时器T0定时10msMOVTL0,#10HSETBTR0JNBTF0,$CLRTR0CLRTF0JNBRI,ERR
;若未接收到,则转出错处理
CLRRI
MOVA,SBUF;读从机应答信号
CJNEA,74H,ERR1;若应答非所呼叫则转ERR1(比如重发)
CLRTB8;若是所呼叫从机,则清TB8,接下来发送数据LOOP:CLRTI
DECR0
MOVSBUF,@R0;发送地址值
JNBTI,$
CJNER0,#70H,LOOP
CLRTI
SETBEA;打开中断
SETBESHERE:SJMP$ERR:……ERR1:MOVSBUF,@R0
………主机接收数据程序(中断)RECEIV:PUSHDPHPUSHDPLPUSHACCMOVDPH,70H;建立数据指针(高字节)
MOVDPL,71H;(低字节)
MOVA,SBUF;接收数据
MOVX@DPTR,A;存入主机的片外RAMCLRRIMOVA,72H;读末地址高字节
CJNEA,DPH,GOON;数据块尚未传完?
MOVA,73H;读末地址低字节
CJNEA,DPL,GOON;数据尚未传完?
CLRTR1CLRESTOMAIN:POPACCPOPDPLPOPDPHRETIGOON:INCDPTRMOV70H,DPHMOV71H,DPLAJMPTOMAINEND从机软件设计-----通信子程序
图3从机通信程序流程图
数据?接收并保存数据YN
清接收数据标志准备收地址信息接收地址
呼本机?准备接收数据Y清中断标志返回
开始N从机:从机(假设是2号机)发送和接收均采用中断方式从机主程序:ORG0000HAJMPSLAVE2ORG0023HAJMPSLV2ORG0100HSLAVE2:MOVTMOD,#20HMOVTH1,#0F2H;波特率设置1200bPSMOVTL1,#0F2HSETBTR1MOVSCON,#0F0H;SM1=1REN=1工作方式3
SETBEASETBESHERE:SJMP$
SLV2:PUSHACCJNBRI,XMT;非接收,转发送中断处理
MOVA,SBUF;读接收结果
CLRRIJNBRB8,ADDR;非代码转地址接收
CJNEA,#2,NOT;非呼叫本机号
CLRSM2;是清SM2MOVSBUF,#2;向主机发应答信号
CLRES;关中断
JNBTI,$;等待发送结束再开中断
CLRTISETBESMOVR0,#74H;建立地址指针ADDR1:DECR0POPACCRETINOT:SETBSM2;配合主机ERR1处理(主机再次发送从机号)
POPACCRETI
续:ADDR:MOV@R0,A;存接收的地址值
CJNER0,#74H,ADDR1;地址字节接受完?
MOVSCON,#0C0H;SM2=0TB8=0REN=0准备发送数据
XMT:PUSHDPH
PUSHDPL
MOVDPH,70H;建立数据指针
MOVDPL,71H
MOVXA,@DPTR;由片外RAM读数据
CLRTI
MOVSBUF,A;发送数据
MOVA,72H;读末地址高字节
CJNEA,DPH,AGAIN;数据块发送完?
MOVA,73H;读末地址低字节
CJNEA,DPL,AGAIN;数据块发送完?
CLRES
JNBTI,$;等待最后字节发送
CLRTI;清标志
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 氯丙嗪类中毒病因介绍
- 开题报告:中国技能型社会建设测度模型、驱动因素及路径优化研究
- 《流行歌曲中飞出的》课件
- 开题报告:学位法制定的相关问题研究
- 开题报告:新时代西部乡村教师内源式专业发展模型构建与支持体系研究
- 2024年大班体育教案反思《勇敢的解放军》
- 2024年夫妻名下公司分割自愿离婚合同版B版
- 2024年国际货物运输安全与环境保护公约
- 2024年公司长期股权激励约束条款合同版B版
- 中考地理总复习专题18 中国的地势、地形和气候(梯级进阶练)(解析版)
- 眼科延续性护理
- 上海中考语文一轮复习:综合运用提高题(教师版)
- 学习新质生产力什么是新质生产力课件
- 高等数学(第二版)课件:微分中值定理及导数的应用
- 《EXCEL基础教程》课件
- 提高大面积金刚砂地坪施工质量【QC成果】
- 2024年广东省广州市越秀区中考语文一模试卷
- 2025届高考语文复习:议论文拟题指导+课件
- 《专业演讲技巧》课件
- 八年级上册物理全册知识点总结(人教)
- 糖尿病足与压疮
评论
0/150
提交评论