基于单片机的串行通信系统设计毕业论文.doc_第1页
基于单片机的串行通信系统设计毕业论文.doc_第2页
基于单片机的串行通信系统设计毕业论文.doc_第3页
基于单片机的串行通信系统设计毕业论文.doc_第4页
基于单片机的串行通信系统设计毕业论文.doc_第5页
免费预览已结束,剩余43页可下载查看

下载本文档

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

文档简介

基于单片机的串行通信系统设计毕业论文 武汉大学毕 业 论 文基于单片机的串行通信系统设计51单片机是一种集CPU,RAM,FLASH ROM,I/O接口和定时中断系统于一体的微型计算机。本文通过对51单片机串行通信接口的分析,建立了单片机串行通讯系统,设计了其控制寄存器目 录第1章绪论1.1 串行通信简介11.2 串行通信现状1第2章 串行通信基础2.1 并行通信与串行通信22.1.1 串行通信22.1.2 并行通信22.1.3 串行通信工作模式32.2 串行通信控制寄存器42.3 串行通信工作方式及波特率7第3章 设计方案3.1 硬件设计方案93.1.1 系统控制单元STC89C52单片机介绍93.1.2 复位电路与晶振电路103.1.3 显示电路113.1.4 外部键入值电路和触发电路113.1.5 主从单片机连接电路123.1.6 串行通信硬件连接电路图133.1.7 串行通信设计思路143.2 软件设计方案163.2.1 软件流程163.2.2 程序17第4章 电路调试与仿真分析4.1 仿真及结果分析18结论20参考文献21附录22后记45第1章绪论1.1 串行通信简介所谓串行通信,就是将数据和控制信息分成一个个二进制位,然后通过一个通信信道逐位按顺序传输,实现单片机之间的数据交换,串行通信与并口相比,速度慢但传送数据远,因此,常应用于需要长距离通信而对速度要求不高的场合,串行通信因其占用硬件资源少、可有效降低成本、简化通信设备、抗干扰能力强等优点,在电力通信、自动化控制、数据采集和过程控制等领域得到广泛应用。串行通行的通信方式有以下三种:单工、半双工和全双工。由于单工只能单向传送数据,不能反向传送数据,所以应用比较广泛的通信方式是半双工及全双工。1.2 串行通信现状社会快速发展,电子计算机技术为生产带来的诸多方便,让单片机通信与控制在工业应用中越来越普遍,广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,来对生产过程实行实时监控,。,PC机和多台单片机构成的多机联络通信系统成为单片机技术发展的一个主攻趋势。,。,第2章 串行通信基础2.1并行通信与串行通信2.1.1串行通信串行通信的设备是最古老的沟通机制之一。从IBM个人电脑和兼容式电脑的时代开始,几乎所有的计算机都配有一个或多个串行端口和一个并行端口。顾名思义,一个串行端口发送和接收串行数据,一次一位数据。相反,一个并行端口一次发送和接收8位数据,使用8个单独的线路。开始传输时,设备先发送一个起始位,其次是数据位。该数据位可以是五,六,七,或8位,基于商定而定。两个发送方和接收器必须设置为相同的数据通信比特或正确的比特率。数据位被发送完后,就会发送一个停止位。一个停止位可以是一位,一个半位,或两位。波特率是数据从一个设备到另一个的传输速度。波特率通常以每秒的位数(bps)来计量。为了检测数据已被正确发送,一个可选的校验位可以同数据位在一起。一个校验位可以是以下内容:奇数,偶数,mark,space或无(空的奇偶位标志几乎总是被使用)。使用校验位提供了一个基本的机制,以检测已发送数据损坏,但不保证检查数据本身的错误。然而,校验位可用于改善完整性数据传送。2.1.2 并行通信在计算机和终端之间的数据传输通常是靠电缆或信道上的电流或电压变化实现的。如果一组数据的各数据位在多条线上同时被传送,这种传输被称为并行通信,如图2-1所示。并行通信时数据的各个位同时传送,可以字或字节为单位并行进行。并行通信速度快,但用的通信线多、成本高,故不宜进行远距离通信。图2-1 并行通信图2.1.3 串行通信工作模式如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输。如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工。电话线就是二线全双工信道。由于采用了回波抵消技术,双向的传输信号不致混淆不清。双工信道有时也将收、发信道分开,采用分离的线路或频带传输相反方向的信号,如回线传输。在串行通信中,数据通常是在两个站(如终端和微机)之间进行传送,按照数据流的方向可分成三种基本的传送方式:全双工、半双工、和单工。但单工目前已很少采用,下面仅介绍前两种方式。半双工方式:若使用同一根传输线既作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时收发数据,这样的传送方式就是半双工制,如图2-2所示。采用半双工方式时,通信系统每一端的发送器和接收器,通过收/发开关转接到通信线上,进行方向的切换,因此,会产生时间延迟。收/发开关实际上是由软件控制的电子开关。图2-2 半双工方式当计算机主机用串行接口连接显示终端时,在半双工方式中,输入过程和输出过程使用同一通路。有些计算机和显示终端之间采用半双工方式工作,这时,从键盘打入的字符在发送到主机的同时就被送到终端上显示出来,而不是用回送的办法,所以避免了接收过程和发送过程同时进行的情况。目前多数终端和串行接口都为半双工方式提供了换向能力,也为全双工方式提供了两条独立的引脚。在实际使用时,一般并不需要通信双方同时既发送又接收,像打印机这类的单向传送设备,半双工甚至单工就能胜任,也无需倒向。全双工方式:当数据的发送和接收分流,分别由两根不同的传输线传送时,通信双方都能在同一时刻进行发送和接收操作,这样的传送方式就是全双工制,如图2-3所示。在全双工方式下,通信系统的每一端都设置了发送器和接收器,因此,能控制数据同时在两个方向上传送。全双工方式无需进行方向的切换,因此,没有切换操作所产生的时间延迟,这对那些不能有时间延误的交互式应用(例如远程监测和控制系统)十分有利。这种方式要求通讯双方均有发送器和接收器,同时,需要2根数据线传送数据信号(可能还需要控制线和状态线,以及地线)。图2-3 全双工方式?2.2串行通信控制寄存器STC89C52单片机串行端口有控制寄存器SCON、PCON,用于设置工作方式、发送或接收的状态、特征位、数据传送波特率每秒传送的位数以及作为中断标志等。串行端口有一个数据寄存器SBUF在特殊功能寄存器中的字节地址为99H,该寄存器为发送和接收所共用串口控制寄存器,用于控制串行通信的方式选择、接收和发送,指示串口的状态。SCON既可以字节寻址,也可以位寻址,其字节地址为98H,地址位为98H9FH串口控制寄存器方式0:的工作方式0为I/O方式,可外接移位寄存器,一扩展I/O口,也可外接同步I/O设备。 发送操作:当执行一条“MOV,A”指令时,启动发送操作,由TXD输出移位脉冲,由RXD串行SBUF中的数据。发送完8位数据后自动置TI 1.请求中断。要继续发送时,TI必须有指令清零。 接收操作:REN是接收允许控制位。REN 0时禁止接收;REN 1时允许接收。当软件将REN置“1”时,即开始从RXD端口以fosc/12输入数据,当接收到8位数据时,将中断标志RI置“1”。再次接收数据之前,必须用软件将RI清0。方式1:位10位通用异步接口。发送或接收一帧数据信息为10位,包括1位起始位“0”、8位、1位停止位“1”。发送数据:数据从TXD端口输出,当数据写入发送缓冲器时,就启动发送器发送。发送完一帧数据后,置中断标志TI 1,申请中断,通知CPU可以发送下一个数据了。接收数据:首先使REN 1(允许接收数据),从RXD接收数据,当采样到1至0跳变时,确认是起始位“0”,就开始接收一帧数据,当接收完一帧数据时,置中断标志RI 1,申请中断,通知CPU从取走接收到的数据 。方式2:为11位异步通信接口。发送或接收一帧信息包括1位起始位“0”、8位、1位可编程位、1位停止位“1”。发送数据:发送前,先根据由软件设置TB8为“”或“数据标识位”,然后将要发送的数据写入,即能启动发送器。发送过程是由执行任何一条以为目的寄存器的指令而启动的,把8位数据装入SBUF,同时还把TB8装到发送的第9位上,然后从TXD(P3.1)端口输出一帧数据。接收数据:先置REN 1,使为允许接收状态,同时还要将RI清“0”。然后再根据SM2的状态和所接收到的RB8的状态决定此在信息到来后是否置R1 1,并申请中断,通知CPU接收数据。当SM2 0时,不管RB8为“0”还是为“1”,都置RI 1,此将接收发送来的信息。当SM2 1时,且RB8 1,表示在多机通信情况下,接收的信息为“地址帧”, 此时置RI 1,将接收发来的地址。当SM2 1时,且RB8 0,表示在多机通信情况下,接收的信息为“”, 但不是发给本从机的,此时RI不置为“1”,因而中接收的数据帧将丢失。方式3为可变的11位异步通信方式,除了波特率有所区别之外,其余方式都与方式2相同各位的说明如下:1SM0、SM1串行口工作方式选择位其状态组合和对应工作方式为: SM0 SM1 工作方式0 方式001 方式10 方式2 1 方式3串行口工作方式2? SM2允许方式2、3的多机通信控制位在方式2和3中,若SM21且接收到的第九位数据(RB8)为1,才将接收到的前8位数据送入接收SBUF中,并置位RI产生中断请求;否则丢弃前8位数据。若SM20,则不论第九位数据(RB8)为1还是为0,都将前8位送入接收SBUF中,并产生中断请求。方式0时,SM2必须置0。3? REN允许接收位REN0 禁止接收数据REN1 允许接收数据4? TB8发送数据位8在方式2、3时,TB8的内容是要发送的第9位数据,其值由用户通过软件来设置。5? RB8接收数据位8在方式2、3时,RB8是接收的第9位数据。在方式1时,RB8是接收的停止位在方式0时,不使用RB86? TI发送中断标志位在方式0时,发送完第8位数据后,该位由硬件置位在其它方式下,于发送停止位之,由硬件置位。因此,TI1表示帧发送结束,其状态既可供软件查询使用,也可请求中断。TI由软件清“0”。7? RI接收中断标志位在方式0时,接收完第8位数据后,该位由硬件置位。在其它方式下,于接收到停止位之,该位由硬件置位。因此,RI1表示帧接收结束,其状态既可供软件查询使用,也可请求中断。RI由软件清“0”。PCONPCOND7D6D5D4D3D2D1D087HSMOD1SMOD2-POF2GF1GF0PDIDL表2.3 电源控制寄存在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD 1时,串行口波特率加倍。系统复位默认为SMOD 0。当为用52单片机的定时器2产生波特率时,波特率不受SMOD影响。各位的定义: SMOD:该位与串口通信有关。SMOD 0; 串口方式1,2,3时,波特率正常。SMOD 1; 串口方式1,2,3时,波特率加倍。GF1,GF0:两个通用工作标志位,用户可以自由使用。PD:掉电模式设定位。PD 0 单片机处于正常工作状态。PD 1 单片机进入掉电(Power Down)模式 ,可由外部中断或硬件复位模式唤醒,进入掉电模式后,外部晶振停振,CPU、定时器、串行口全部停止工作,只有外部中断工作。在该模式下,只有硬件复位和上电能够唤醒单片机。IDL:空闲模式设定位。IDL 0 单片机处于正常工作状态。IDL 1 单片机进入空闲(Idle)模式,除CPU不工作外,其余仍继续工作,在空闲模式下可由任一个中断或硬件复位唤醒。只有打开全局开关,其它各位的开关才可以开启。所有开关赋值为1则开,赋值为0则关位序号外部中断0定时/计数0外部中断1定时/计数1串行口中断定时/计数2无效位全局中断位位符号位地址串行口缓冲SBUF串行口中有两个缓冲SBUF一个是发送寄存器,一个是接收寄存器,在上是完全独立的。它们都是字节寻址的,字节地址均为99H。这个重叠的地址靠读/写指令区分:串行发送时,CPU向SBUF写入数据,此时99H表示发送SBUF;串行接收时,CPU从SBUF读出数据,此时99H表示接收SBUF。2.3串行通信工作方式及波特率串行口的工作方式:STC89C52的串行口有4种工作方式方式0,方式1,方式2,方式3方式0 设定SM0,SM1为00时,串行接口工作于方式0,在方式0下,RXD(P3.0)为数据输入/输出端,TXD(P3.1)为同步脉冲输出端,发送或接收的数据为8位低位在前,高位在后,方式0的波特率固定为fosc/12,也就是每一机器周期传送1位数据,方式0可外接移位寄存器,将串行接口扩展为并行接口,也可外接同步输入输出设备。方式1 当设定SM0,SM1为01时,串行接口工作于方式1,方式1为波特率可变的8位异步通信方式,由TXD发送,RXD接收。一帧数据为10位,1位起始位(低电平)8位数据位(低位在前)和1位停止位(高电平)。波特率 2SMOD*(定时器T1溢出率)/32方式2和方式3 当设定SM0,SM1为10或11时,串行口工作于方式2或方式3,这两种方式都是9位异步通信,仅波特率不同,适用于多机通信,在方式2或方式3下,数据由TXD发送,RXD接收,1帧数据为11位,1位起始位(低电平)8位数据位(低位在前)1位可编程位(第9位数据)用作奇偶校验或地址/数据选择,1位停止位,与方式1相比多了一位可编程位,发送时,第9位数据为TB8,接收时,第9位数据送入RB8。方式2和方式3的区别只在于波特率不同。方式2波特率 2SMOD*fosc/64 方式3波特率 2SMOD*(定时器T1溢出率)/32第3章 设计方案3.1 硬件设计方案3.1.1系统控制单元STC89C52单片机介绍图3.1 系统控制单元DIP封装的STC89C52系统使用的部分芯片特性简介51指令系统,定义端口完整,易于软件程序的编写,控制IO口非常方便8kB可反复擦写 大于1000次)Flash ROM,装载驱动程序用32个双向I/O口;实现功能时时控制,信息交互。3个16位可编程定时/计数器中断;通过中断程序的应用,可以使功能更加实用,程序更加简单。低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;功耗低,非常节能。有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求,本系统采用40PINS的DIP封装STC89C52单片机。系统使用部分引脚解释P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。 端口引脚 第二功能: P3.0 RXD 串行输入口 P3.1 TXD 串行输出口 P3.2 INTO 外中断0 P3.3 INT1 外中断1 P3.4 TO 定时/计数器0 P3.5 T1 定时/计数器1 P3.6 WR 外部数据存储器写选通 P3.7 RD 外部数据存储器读选通 此外,P3口还接收一些用于编程和程序校验的控制信号图3.2 复位电路与晶振电路3.1.3显示电路 采用LED灯显示发送的数据是否正确,验证通信的准确性。为了提高P2口的负载能力,采用74ls240来驱动,提高电流。如图3.3图3.3 显示电路3.1.4外部键入值电路和触发电路低电平触发,查询方式,如图3.4图3.4 外部键入值电路和触发电路3.1.5主从单片机连接电路,如图3.5图3.5 主机的RXD与从机的TXD相连3.1.6串行通信硬件连接电路图 主从机接收数据执行程序时通过中断来实现。中断来时,转到中断服务程序,执行程序命令,通过液晶或数码管显示信息。通过不同按键触发,主机查询检测,来显示不同的通信信息。框图3.6如下所示:图 3.6硬件连接3.1.7串行通信设计思路 在多机通信中,要保证主机与从机的顺利通信,必须具有从机身份的识别功能,每个从机都有唯一的地址码,该地址码就是从机身份的识别标志。串行口控制寄存器SCON中的SM2位就是为了满足这一要求而设置的多机通信控制位。串行口以方式2或方式3实现多机通信时,主机发出的信息有两类:一类是地址信息,用来为地确定需要和主机通信的从机,其特征是主机串行传送的的第九位信息TB8为1,即令主机TB8 1,呼叫从机;另一类是数据信息,特征是串行传送的第九位信息TB8为0,实现主机和从机之间的数据传送。对主机来说,也要利用SCON寄存器中的SM2位的控制功能来区分地址信息和数据信息。在接收时,令RI 0,若SM2 1,则仅当接受到的第九位信息RB8为1时,接收到的一帧信息才有效,并将接收到的信息装入SBUF,置位RI,请求CPU对主机发出的信息进行处理。若SM2 1,接收到的第九位RB8位为0时,接收到的一帧信息无效。若从机令SM2 0,则接收到一个数据后,不管第九位信息RB8是0还是1,都将数据装入接收缓冲器SBUF,并置位中断标志RI,请求CPU处理。因而,对于从机来说,在接收地址时,应使SM2 1,以便接收主机发来的地址码,从而确定主从之间的通信关系。主从之间的通信关系一经确认,从机应使SM2 0.以便接收主机发来的命令/数据或识别下一地址码。主从式单片机多机通信一般过程如下:(1) 所有从机的SM2位置1,处于接收地址帧状态 监听状态 。(2) 主机发送一地址帧,其中八位是地址,第九位是地址/数据的区分标志,该位置1表示该帧为地址帧,即令主机TB8 1,呼叫从机。(3) 所有从机收到地址帧后,把收到地址与本机地址进行比较。地址符合的从机,使自己的SM2为0(以接收主机随后发来的数据帧),并将本站地址发回主机作为应答;对于不符合自己的从机,仍保持监听状态SM 1,对随后发来的的数据帧不予理睬,直至主机发送一个新的地址帧。(4) 主机收到从机应答地址后,确认地址是否相符,如果不符,发复位信号 数据帧中TB8 1 ,如果地址符合,则清TB8,开始发数据。(5) 从机发送数据结束后,要发送一帧笑验证和,并置第九位TB8 1,作为从机数据传送的标志。(6)主机接收数据时,先判断数据接收标志RB8。若接收帧的RB8 0,则存数据到缓冲区,并接收下帧信息:若RB8 1,表示数据传送结束,并比较此帧的校验和,如果正确则回送正确信号00H,此信号命令该从机复位,即从机回到监听状态,重新等待地址帧,如果校验和出错,则发送0FFH,命令该从机重新发送数据。(7)从机收到复位命令后回到监听状态(SM 1),否则开始接收数据和命令。 8 最后,数据发送完后,发送到P2口显示。从机状态字格式为:D7D6D5D4D3D2D1D0ERRTRDYRRDY表3.1从机状态字格式RRDY 1,:表示从机准备好接收。TRDY 1:表示从机准备好发送。ERR 1:表示从机接收的命令是非法的。约定主机和从机之间每次传送8个字节,从机地址存于40H单元,主机要发送的命令存于41H单元。40H单元中若为AA表示从机一,66表示从机二,41H单元中若为77表示发,88表示接收全局电路图:图3.7 全局图3.2软件设计方案3.2.1软件流程 图3.8 主机程序流程图图3.9 从机中断服务程序流程图3.2.2程序 如附录第4章 电路调试与仿真分析4.1仿真及结果分析主机与各个从机通信,显示一样,说明通信正确,如图4.1图4.1 主机与各个从机通信主机呼叫从机1,并与之通信,显示一样,说明通信正确,如图4,2图4.2 主机与从机1通信主机呼叫从机2,并与之通信,显示一样,说明通信正确,如图4.3图4.3 主机与从机2通信结 论本系统设计方案符合论文设计的要求,系统经测试满足设计要求和实际需要,通信系统电路简洁明了,系统具有开发参考价值,是一个不错的方案。通过毕业设计,我深刻体会到要做好一件事情,需要有完整的思维方式和方法,对待要解决的问题,要耐心、要善于运用挖掘已有的资源。自知自己能力有限,此系统有些地方有待完善,待以后有时间希望在日后有更加深入的研究。受限于知识水平,论文中不足之处,敬请各位专家、老师和同学提出宝贵的意见和建议。参考文献1 李朝青单片机原理及接口技术M北京:北京航空航天大学出版社,20052 何立民单片机高级教程M北京:北京航空航天大学出版社,19993 张俊谟单片机中级教程M北京:北京航空航天大学出版社, 20064 陈忠平,2版)M北京:清华大学出版社,20115 陈忠平,2版)应用指导M北京:清华大学出版社,20116 万光毅,2版)M北京:北京航空航天大学出版社,20067 夏继强,2版)M北京:北京航空航天大学出版社,20068 周立功等单片机实验与实践教程(三)M北京:北京航空航天大学出版社,20069 冯育长,雷思孝,马金强单片机系统分析设计与实例分析M西安:西安电子科技大学出版社,200 0000SJMP STARTSTART:MOV 30H,#0F0HMOV 31H,#0EHMOV 32H,#0CHMOV 33H,#0AHMOV 34H,#08HMOV 35H,#06HMOV 36H,#04HMOV 37H,#02HJUEDING:JNB P3.6,FAJNB P3.7,SHOUSJMP JUEDINGFA: NOPMOV 41H,#77HXUANZE:JNB P3.5,YI1JNB P3.4,ER2SJMP XUANZEYI1:MOV 40H,0AAH ;从机地址LJMP MAINER2:MOV 40H,66HLJMP MAINSHOU:NOPMOV 41H,#88HXUANZE2:JNB P3.5,YIJNB P3.4,ERSJMP XUANZE2YI:MOV 40H,0AAH ;从机地址LJMP MAINER:MOV 40H,55HLJMP MAINMAIN:MOV TMOD,#20H ;T1方式2MOV TH1,#0FDH ;波特率9600MOV TL1,#0FDHMOV PCON,#00HSETB TR1MOV SCON,#0F0H ;串口方式3,多机,准备接收应答LOOP1:SETB TB8MOV SBUF,40HJNB TI,$CLR TIJNB RI,$CLR RIMOV A,SBUFXRL A,40H ;判断应答的地址是否正确JZ ADOKADERR:MOV SBUF,0FFH ;应答错误,发命令0FFHJNB TI ,$CLR TISJMP LOOP1ADOK:CLR TB8MOV SBUF,41HJNB TI,$CLR TIJNB RI,$CLR RIMOV A,SBUFXRL A,#80HJNZ COOKSETB TB8SJMP ADERRCOOK:MOV A,SBUF ;应答正确,判断是发送还是接收命令XRL A,#77HJZ SEDATA ;从机准备好,转向主机发送MOV A,SBUFXRL A,88HJZ REDATALJMP SEDATAREDATA:MOV R6,#00HMOV R0,#50HMOV R7,#08H ;接收8字节数据LOOP2:JNB RI,$CLR RIMOV A,SBUFMOV R0,AINC R0ADD A,R6MOV R6,ADJNZ R7,LOOP2JNB RI,$CLR RIMOV A,SBUFXRL A,R6JZ XYOKMOV SBUF,#0FFHJNB TI,$CLR TILJMP REDATAXYOK:MOV SBUF,#00HJNB TI,$CLR TISETB TB8LJMP RETEND1SEDATA:MOV R6,#00HMOV R0,#30HMOV R7,#08HLOOP3:MOV A,R0MOV SBUF,AJNB TI,$CLR TIINC R0ADD A,R6MOV R6,ADJNZ R7,LOOP3MOV A,R6MOV SBUF,AJNB TI,$CLR TIJNB RI,$CLR RIMOV A,SBUFXRL A,#00HJZ RETENDSJMP SEDATARETEND:MOV P2,30HNOPLCALL DELAYMOV P2,31HNOPLCALL DELAYMOV P2,32HNOPLCALL DELAYMOV P2,33HNOPLCALL DELAYMOV P2,34HNOPLCALL DELAYMOV P2,35HNOPLCALL DELAYMOV P2,36HNOPLCALL DELAYMOV P2,37HNOPLCALL DELAYRETRETEND1:MOV P2,50HNOPLCALL DELAYMOV P2,51HNOPLCALL DELAYMOV P2,52HNOPLCALL DELAYMOV P2,53HNOPLCALL DELAYMOV P2,54HNOPLCALL DELAYMOV P2,55HNOPLCALL DELAYMOV P2,56HNOPLCALL DELAYMOV P2,57HNOPLCALL DELAYRETDELAY: MOV R3,#10;D1: MOV R4,#200;D2: MOV R6,#248;DJNZ R5,$DJNZ R4,D2;DJNZ R3,D1;RETEND从机1程序ORG 0000SJMP STARTSTART:MOV 40H,0AAHMOV 41H,#77HMOV 42H,#88HMOV 50H,#0F0H;与发送的8个字节数据MOV 51H,#0CCHMOV 52H,#33HMOV 53H,#0AAHMOV 54H,#55HMOV 55H,#0FHMOV 56H,#11HMOV 57H,#77HMAIN:MOV TMOD,#20HMOV TH1,#0FDHMOV TL1,#0FDHMOV PCON,#00HSETB TR1MOV SCON,#0F0HLOOP1:SETB EASETB ESSETB RRDYSETB TRDYSJMP LOOP1SERVE:PUSH PSWPUSH ACCCLR ESCLR RIMOV A,SBUFXRL A,40HJZ SEROKLJMP ENDI ;不是本机,继续监听SEROK:CLR SM2 ;是本机,取消监听,MOV SBUF,40HJNB TI,$CLR TIJNB RI,$CLR RIJB RB8,ENDII ;不是复位,判断是接收还是发送MOV A,SBUFXRL A,41HJZ SERISE ;发送处理MOV A,SBUFXRL A,42HJZ SERISE ;接收处理SJMP FFMLSERISE: JB TRDY,SEND ;从机发送是否好MOV SBUF,#00HSJMP WAIT01WAIT01: 返回发送准备好JNB TI,$CLR TIJNB RI,$CLR RIJB RB8,ENDII ;主机是否准备就绪LCALL SEDATA ;发送数据LJMP RETURNFFML:MOV SBUF,#80H ;发非法命令,回复监听JNB TI,$CLR TILJMP ENDIISERIRE: 从机接收是否准备好JB RRDY,RECEMOV SBUF,#00HSJMP WAIT02RECE: MOV SBUF,#01H;返回接收准备好WAIT02:JNB TI,$CLR TIJNB RI,$CLR RIJB RB8,ENDIILCALL REDATALJMP RETURNENDII:SETB SM2ENDI: SETB ESRETURN:POP ACCPOP PSWRETI; JIE SHOUSEDATA: CLR TRDYMOV R6,#00HMOV R0,#30HMOV R7,#08HLOOP2:MOV A,R0MOV SBUF,AJNB TI,$CLR TIINC R0ADD A,R6MOV R6,ADJNZ R7,LOOP2MOV A,R6MOV SBUF,AJNB TI,$CLR TIJNB RI,$CLR RIMOV A,SBUFXRL A,#00H ;数据是否发错JZ SENDOKSJMP SEDATASENDOK:RETEND1:MOV P2,50HNOPLCALL DELAY ;延时显示MOV P2,51HNOPLCALL DELAYMOV P2,52HNOPLCALL DELAYMOV P2,53HNOPLCALL DELAYMOV P2,54HNOPLCALL DELAYMOV P2,55HNOPLCALL DELAYMOV P2,56HNOPLCALL DELAYMOV P2,57HNOPLCALL DELAYSETB SM2SETB ESRETDELAY: MOV R3,#10;D1: MOV R4,#200;D2: MOV R6,#248;DJNZ R5,$DJNZ R4,D2;DJNZ R3,D1;RET; JIE SHOUREDATA:CLR RRDYMOV R6,#00HMOV R0,#30HMOV R7,#08HLOOP3:JNB RI,$CLR RIMOV A,SBUFMOV R0,AINC R0ADD A,R6MOV R6,ADJNZ R7,LOOP3JNB RI,$CLR RIMOV A,SBUFXRL A,R6 ;判断校验和是否正确JZ RECEOKMOV SBUF,#0FFHJNB TI,$CLR TILJMP REDATARECEOK:MOV A,#00HMOV SBUF,AJNB TI,$CLR TI;XIAN SHIMOV P2,30HNOPLCALL DELAYMOV P2,31HNOPLCALL DELAYMOV P2,32HNOPLCALL DELAYMOV P2,33HNOPLCALL DELAYMOV P2,34HNOPLCALL DELAYMOV P2,35HNOPLCALL DELAYMOV P2,36HNOPLCALL DELAYMOV P2,37HNOPLCALL DELAYSETB SM2SETB ESRETEND从机2接收程序ORG 0000SJMP STARTSTART:MOV 40H,66HMOV 41H,#77HMOV 42H,#88HMOV 50H,#0F0HMOV 51H,#0CCHMOV 52H,#33HMOV 53H,#0AAHMOV 54H,#55HMOV 55H,#0FHMOV 56H,#11HMOV 57H,#77HMAIN:MOV TMOD,#20HMOV TH1,#0FDHMOV TL1,#0FDHMOV PCON,#00HSETB TR1MOV SCON,#0F0HLOOP1:SETB EASETB ESSETB RRDYSETB TRDYSJMP LOOP1SERVE:PUSH PSWPUSH ACCCLR ESCLR RIMOV A,SBUFXRL A,40HJZ SEROKLJMP ENDISEROK:CLR SM2MOV SBUF,40HJNB TI,$CLR TIJNB RI,$CLR RIJB RB8,ENDIIMOV A,SBUFXRL A,41HJZ SERISEMOV A,SBUFXRL A,42HJZ SERISESJMP FFMLSERISE:JB TRDY,SENDMOV SBUF,#00HSJMP WAIT01WAIT01:JNB TI,$CLR TIJNB RI,$CLR RIJB RB8,ENDIILCALL SEDATALJMP RETURNFFML:MOV SBUF,#80HJNB TI,$CLR TILJMP ENDIISERIRE:JB RRDY,RECEMOV SBUF,#00HSJMP WAIT02RECE: MOV SBUF,#01HWAIT02:JNB TI,$CLR TIJNB RI,$CLR RIJB RB8,ENDIILCALL REDATALJMP RETURNENDII:SETB SM2ENDI: SETB

温馨提示

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

评论

0/150

提交评论