第七章 串行数据通信.ppt_第1页
第七章 串行数据通信.ppt_第2页
第七章 串行数据通信.ppt_第3页
第七章 串行数据通信.ppt_第4页
第七章 串行数据通信.ppt_第5页
免费预览已结束,剩余62页可下载查看

下载本文档

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

文档简介

7-1串行通信基础知识,7-2串行口及控制寄存器,7-3串行通信工作方式,7-4串行口的应用,第7章串行数据通信,7-1串行通信基础知识,一、串行通信基本原理:并行数据传送同步(SYNC)串行异步(ASYNC)(用于单片机中),异步通信的双方需要两项约定:1.字符格式:一帧字符位数的规定:数据位,校验位,起始位和停止位。,2.波特率-Baudrate(位/秒)即数据传送速率的规定:例:要求每秒传送120个字符,每帧为10位。解:传送的波特率为:B=120字符/10字符=1200波特(b/s)每位代码的传送时间Td=0.83ms,(二)同步通信:以一串字符为一个传送单位,字符间不加标识位,在一串字符开始用同步字符(常约定个)标识,硬件要求高,通讯双方须严格同步。,二、串行通信的基本方式:(一)异步通信:以字符为传送单位用起始位和停止位标识每个字符的开始和结束字符,间隔不固定,只需字符传送时同步即可。异步通讯常用格式:一个字符帧,在同步传送中,当检测到规定的同步字符后,就连续按顺序传送数据,直到通信告一段落;同步传送时,字符与字符之间眉宇间隙,也不用起始位和停止位,仅在数据块开始时用同步字符来表示,同步字符的插入可以是单同步字符或双同步字符,然后是连续的数据块;同步字符可以是由用户约定,也可以采用ASCII码中规定的同步字符SYNC代码,即16在同步传送时,要求用时钟来实现通信双方的同步,因此发送方除传送数据外,还要同时传送时钟信号因此硬件要求较高,三、串行接口功能:,(1)发送器:并串数据格式转换,添加标识位和校验位,一帧发送结束,设置结束标志,申请中断。(2)接收器:串并数据格式转换,检查错误,去掉标识位,保存有效数据,设置接收结束标志,申请中断。(3)控制器:接收编程命令和控制参数,设置工作方式:同步/异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。,四、串行通信的传输方式:1、单工通讯:数据单向传送。(1条数据线,单向)2、半双工通讯:数据可分时双向传送。(2条数据线,双向)3、全双工通讯:可同时进行发送和接收。(1条或2条数据线,双向),五、异步串行通信的信号形式:,1、远距离直接传输数字信号,信号会发生畸变,因此要把数字信号转变为模拟信号再进行传送。可利用光缆、专用通信电缆或电话线。方法:通常使用频率调制法(频带传送方式)。,通常:“1”:1270Hz或2225Hz;“0”:1070Hz或2025Hz。,2、因通信时(有干扰)信号要衰减,所以常采用RS232电平负逻辑,拉开“0”和“1”的电压档次,以免信息出错:,RS232负逻辑(EIA电平):“0”:+3V+25V;“1”:-3V-25V。最大传输信息的长度为15米。,TTL正逻辑:“0”:02.4V;“1”:3.6V+5V;高阻:2.4V3.6V。TTL电平直接传输距离一般不超过1.5米。,RS232负逻辑:“0”:+5V+15V;“1”:-5V-15V。最大传输信息的长度为15米。,RS-232C(电平转换芯片为MAX232)RS-422RS-485,7-2串行口及控制寄存器,串行接口输入/输出引脚:TXD(P3.1)、RXD(P3.0)数据格式:按不同方式,一帧数据位数8/10/11发送/接收时,数据皆低位在前。,一帧字符发送/接收结束,置位标志位(TI/RI),并申请串行中断。中断控制:中断允许位ES、总允许EA;中断入口:0023H。,1个全双工串行接口,可同时进行发送和接收。,7-2-1MCS-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):,位地址,位符号,表7.2串行口操作模式选择,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.波特率Bfosc/12如:fosc12MHz,B1MHz,每位数据占1s。4.发送过程:写入SBUF,启动发送.(MOVSBUF,A)一帧发送结束,TI1。接收过程:REN=1且RI=0,启动接收,(MOVA,SBUF)一帧接收完毕,RI1。发送、接收的是8位数据,低位在先。,SM0、SM1选择四种工作方式。,时序图:,(1)方式0输出(发送),串行数据通过RxD(P3.0)输出,而在TxD(P3.1)输出移位时钟脉冲。当一个数据写入串口数据发送缓冲器时,就开始发送。发送控制器送出移位信号。直到最高位(D7)数字移出后,停止发送数据和移位时钟脉冲。完成一帧数据的发送过程,并置TI为1(申请中断)。若CPU响应中断,则从0023H单元开始执行串口中断服务程序。,例如:在并行输出口接支发光二极管,利用其串入并出功能,把发光管从左到右依次点亮,并反复循环(假定发光管为共阴极型,共阴端接地),程序:MOVSCON,#00HMOVA,#80HDELR:MOVSBUF,AJNBTI,$ACALLDELAYCLRTIRRAAJMPDELR,(2)方式0输入(接收),此时RxD端为数据输入端,TxD端为移位时钟信号输出。REN0,禁止接收。REN1,允许接收。当满足方式0,且REN1,且RI0的条件时,就会启动一次接收过程。在接收过程开始后的第10个机器周期,SCON中的RI位被置位,(中断申请)。至此,完成了一帧数据的接收过程。若CPU响应中断,就去执行由0023H作为入口地址的中断服务程序。,说明:,方式0发送或接收完8位数据后由硬件置位发送中断标志TI或接收中断标志RI。CPU响应中断请求转入中断服务程序时并不清TI或RI。中断标志TI或RI要用程序来清0。具体做法:CLRTICLRRI或ANLSCON,0FEHANLSCON,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的时间常数计算:,X2N所需定时时间/计数周期2N计数频率/所需频率(溢出率),返回,时序图:,方式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。甲机发送,发送数据在外部RAM4000401FH单元中。乙机接收,并把接收到的数据块首末地址及数据依次存入外部RAM5000H开始的区域中。,假设晶振频率为6MHz,按1200波特率,计算定时器1的计数初值:X256fosc*2smod/(384*波特率)2566*106*1/(384*1200)2430F3Hsmod0,波特率不倍增,则应使PCON00H串行发送的内容包括数据块的首末地址和数据两部分内容。对数据块首末地址的传送以查询方式进行,而数据则以中断方式传送。因此在程序中要先禁止串行中断,后允许串行中断。,甲机:首末地址的发送采用查询法数据的发送采用中断法乙机:首末地址的接收采用查询法数据的接收采用中断法,下面是发送和接收的参考程序:,甲机发送主程序:ORG0023HLJMPACINTORG0100HMOVTMOD,#20H;设置定时器1工作方式2MOVTL1,#0F3H;定时器1计数初值MOVTH1,#0F3H;计数重装值SETBEA;中断总允许CLRES;禁止串行中断MOVPCON,#00H;波特率不倍增SETBTR1;启动定时器1MOVSCON,#40H;设置串行口方式1,REN0MOVSBUF,#40H;发送数据区首地址高位SOUT1:JNBTI,$;等待一帧发送完毕CLRTI;清发送中断标志MOVSBUF,#00H;发送数据区首地址低位SOUT2:JNBTI,$;等待一帧发送完毕,续:,CLRTI;MOVSBUF,#40H;发送数据区末地址高位SOUT3:JNBTI,$;等待一帧发送完毕CLRTI;清发送中断标志MOVDPTR,#4000H;数据区地址指针MOVR7,#20H;数据个数SETBES;开放串行中断MOVSBUF,#1FH;发送数据区末地址低位AHALT:AJMP$;甲机中断服务程序:ORG8100HACINT:MOVXA,DPTR;读数据CLRTI;清发送中断,续:,MOVSBUF,A;发送字符CJNER7,#00H,AEND1;未发送完转AEND1CLRES;禁止串行中断CLRTR1;定时器1停止计数AJMPAEND2;发送完转AEND2AEND1:INCDPTR;DECR7AEND2:RETI;中断返回乙机接收主程序:ORG0023HLJMPBCINTORG0100HMOVTMOD,#20H;设置定时器1工作方式2MOVTH1,#0F2H;计数重装值MOVTL1,#0F2H;定时器1计数初值SETBEA;中断总允许CLRES;禁止串行中断,续:,MOVPCON,#00H;波特率不倍增SETBTR1;启动定时MOVSCON,#50H;设置串行口方式1,REN1MOVDPTR,#5000H;数据存放首地址MOVR7,#24H;接收数据个数SIN1:JNBRI,$;等待CLRRI;清接收中断标志MOVA,SBUF;接收数据区首地址高位MOVXDPTR,A;存首地址高位INCDPTR;地址指针增量SIN2:JNBRI,$;CLRRIMOVA,SBUF;接收数据区首地址低位MOVXDPTR,A;存首地址低位INCDPTRSIN3:JNBRI,$;CLRRI,续:,MOVA,SBUF;接收数据区末地址高位MOVXDPTR,A;存末地址高位INCDPTR;地址指针增量SIN4:JNBRI,$;CLRRIMOVA,SBUF;接收数据区末地址低位MOVXDPTR,A;存末地址低位INCDPTRSETBES;开放串行中断BHALT:AJMP$;等待中断乙机中断服务程序:ORG8100HBCINT:MOVA,SBUF;接收数据MOVXDPTR,A;存数据CLRRI;清接收中断标志CJNER7,#00H,BEND1;未接收完转BEND1,续:,AJMPBEND2;接收完转BEND2BEND1:INCDPTRDECR7BEND2: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。,时序图:,(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/122SMOD/(32B)T1选方式1用于低波特率,需考虑T1重装时间常数时间。也可选工作方式3。,4种方式比较:,7-4串行口的应用,串行口初始化编程格式:SIO:MOVSCON,#控制状态字;写方式字且TI=RI=0(MOVPCON,#80H);波特率加倍(MOVTMOD,#20H);T1作波特率发生器(MOVTH1,#X);选定波特率(MOVTL1,#X)(SETBTR1)(SETBEA);开串行口中断(SETBES),发送程序:,1、查询方式:TRAM:MOVA,R0;取数据MOVSBUF,A;发送一个字符WAIT:JBCTI,NEXT;等待发送结束SJMPWAITNEXT:INCR0;准备下一次发送SJMPTRAM,2、中断方式:ORG0023H;串行口中断入口AJMPSINTMAIN:;初始化编程TRAM:MOVA,R0;取数据MOVSBUF,A;发送第一个字符H:SJMPH;其它工作SINT:CLRTI;中断服务程序INCR0MOVA,R0;取数据MOVSBUF,A;发送下一个字符RETI,先发送一个字符,等待TI=1后再发送下一个字符。,接收程序:,1.查询方式:WAIT:JBCRI,NEXT;查询等待SJMPWAITNEXT:MOVA,SBUF;读取接收数据MOVR0,A;保存数据INCR0;准备下一次接收SJMPWAIT,2.中断方式:ORG0023HAJMPRINTMAIN:;初始化编程H:SJMPH;其它任务RINT:CLRRI;清中断标志MOVA,SBUF;读取接收数据MOVR0,A;保存数据INCR0RETI,REN=1、RI=0等待接收,当RI=1,从SBUF读取数据。,(一)串行口方式0:,串行口通过接口74LS164实现:串行并行的数据转换(显示器接口);通过接口74LS165实现:并行串行的数据转换。,用于接移位寄存器扩充并口。,程序:,MOVR7,#20;送入20个字节MOVR0,#20H;送首地址为20HRCV0:CLRP1.0;P1.0=0(并行置入数据)SETBP1.0;P1.0=1(允许串行移位)MOVSCON,#10H;允许方式0接收JNBRI,;等待RI=1,顺序执行CLRRI;RI=0为下一帧数据的接收准备MOVA,SBUF;取数MOVR0,AINCR0RCV2:DJNZR7,RCV0;R71=0?0跳(判是否已读入预定字节数).;对读入数据进行处理,ORG0000hAjmpmainORG0023H;串行口中断入口AJMPTRANIMAIN:MOVSCON,#80H;串行口初始化MOVPCON,#80H;波特率SETBEASETBES;开串行口中断MOVR0,#50H;设数据指针MOVR7,#10H;数据长度LOOP:MOVA,R0;取一个字符MOVC,P;加奇偶校验MOVTB8,CMOVSBUF,A;启动一次发送HERE:SJMPHERE;CPU执行其它任务,(二)异步通讯程序举例:1.发送程序:将片内RAM50H起始单元的16个数由串行口发送。要求发送波特率为系统时钟的32分频,并进行奇偶校验。,TRANI:PUSHA;保护现场PUSHPSWCLRTI;清发送结束标志DJNZR7,NEXT;是否发送完?CLRES;发送完,关闭串行口中断SJMPTENDNEXT:INCR0;未发送完,修改指针MOVA,R0;取下一个字符MOVC,P;加奇偶校验MOVTB8,CMOVSBUF,A;发送一个字符POPPSW;恢复现场POPATEND:RETI;中断返回,2.接收程序:,RECS:MOVSCON,#50H;串行口方式1允许接收MOVTMOD,#20H;T1方式2定时MOVTL1,#0F4H;写入T1时间常数MOVTH1,#0F4HSETBTR1;启动T1MOVR0,#50H;设数据指针MOVR7,#10H;接收数据长度WAIT:JBCRI,NEXT;等待串行口接收SJMPWAITNEXT:MOVA,SBUF;读取接收字符MOVR0,A;保存一个字符CLRRIINCR0;修改指针DJNZR7,WAIT;全部字符接收完?RET,串行输入16个字符,存入片内RAM的50H起始单元,串行口波特率为2400(设晶振为11.0592MHz)。(采用方式1),3.接收程序:,RECS:MOVSCON,#0D0H;串行口方式3允许接收MOVTMOD,#20H;T1方式2定时MOVTL1,#0F4H;写入T1时间常数MOVTH1,#0F4HSETBTR1;启动T1MOVR0,#50H;设数据指针MOVR7,#10H;接收数据长度WAIT:JBCRI,NEXT;等待串行口接收SJMPWAITNEXT:MOVA,SBUF;取一个接收字符JNBP,COMP;奇偶校验JNBRB8,ERR;PRB8,数据出错SJMPRIGHT;P=RB8,数据正确COMP:JBRB8,ERRRIGHT:MOVR0,A;保存一个字符CLRRIINCR0;修改指针DJNZR7,WAIT;全部字符接收完?CLRF0;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与从机动作关系,2多机通信系统设计,设多机通信系统主、从机晶振为6MHz,波特率为1200bps,以方式3进行多机串行通信。0#为主机、其他为从机,主机向某从机发出起始地址和终止地址,要求把该地址范围内的数据块由所指定的从机片外数据存贮器中传送到主机片外RAM之相应单元,起始地址的高低两字节分别存放在各机片内RAM的70H和71H单元,终止地址在72H和73H中,主机74H单元存放欲呼叫的从机号。,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;若未接收到,则转出错处理,CLRRIMOVA,SBUF;读从机应答信号CJNEA,74H,ERR1;若应答非所呼叫则转ERR1(比如重发)CLRTB8;若是所呼叫从机,则清TB8,接下来发送数据LOOP:CLRTIDECR0MOVSBUF,R0;发送地址值JNBTI,$CJNER0,#70H,LOOPCLRTISETBEA;打开中断SETBESHERE:SJMP$ERR:ERR1:MOVSBUF,R0,主机接收数据程序(中断),RECEIV:PUSHDPHPUSHDPLPUSHACCMOVDPH,70H;建立数据指针(高字节)MOVDPL,71H;(低字节)MOVA,SBUF;接收数据MOVXDPTR,A;存入主机的片外RAMCLRRIMOVA,72H;读末地址高字节CJNEA,DPH,GOON;数据块尚未传完?MOVA,73H;读末地址低字节CJNEA,DPL,GOON;数据尚未传完?CLRTR1CLRESTOMAIN:POPACCPOPDPLPOPDPHRETIGOON:INCDPTRMOV70H,DPHMOV71H,DPLAJMPTOMAINEND,从机软件设计-通信子程序,图3从机通信程序流程图,从机:从机(假设是号机)发送和接收均采用中断方式,从机主程序:ORG0000HAJMPSLAVE2ORG0023HAJMPSLV2ORG0100HSLAVE2:MOVTMOD,#20HMOVTH1,#0F2H;波特率设置1200bPSMOVTL1,#0F2HSETBTR1MOVSCON,#0F0H;SM1=1REN=1工作方式SETBEASETBESHERE:SJMP$,SLV2:PUSHACCJNBRI,XMT;非接收,转发送中断处理MOVA,SBUF;读接收结果CLRRIJNBRB8,ADDR;非代码转地址接收CJNEA,#2,NOT;非呼叫本机号CLRSM2;是清SM2MOVSBUF,#2;向主机发应答信号CLRES;关中断JNBTI,$;等待发送结束再开中断CLRTISETBESMOVR0,#74H;建立地址指针ADDR1:DECR0POPACCRETINOT:SETBSM2;配合主机处理(主机再次发送从机号)POPACCRETI,续:ADDR:MOVR0,A;存接收的地址值CJNER0,#74H,ADDR1;地址字节接受完?MOVSCON,#0C0H;SM2=0TB8=0REN=0准备发送数据XMT:PUSHDPHPUSHDPLMOVDPH,70H;建立数据指针MOVDPL,71HMOVXA,DPTR;由片外读数据CLRTIMOVSBUF,A;发送数据MOVA,72H;读末地址高字节CJNEA,DPH,AGAIN;数据块发送完?MOVA,73H;读末地址低字节CJNEA,DPL,AGAIN;数据块发送完?CLRESJNBTI,$;等待最后字节发送CLRTI;清标志,续:CLRTR1;停波特率发生器SJMPRTN;通讯结束AGIN:INCDPTR;调整指针MOV70H,DPH;保存指针MOV71H,DPLRTN:POPDPLPOPDPHPOPACCRETI,7-MCS-51单片机与PC机通信,8051单片机串口使用的是TTL电平,PC使用的是RS-232电平,因此它们之间不能用导线直接连接,而要通过电平转换电路。通常用MAX232等芯片对两者的电平进行转换。8.1MAX232简介MAX232芯片是MAXIM公司生产的低功耗、单电源双RS232发送/接收器。MAX232芯片内部有一个电源电压变换器,可以把输入的+5V电源变换成RS-232输出电平所需10V电压,所以

温馨提示

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

评论

0/150

提交评论