基232协议串口通信

上传人:jkl****17 文档编号:71940700 上传时间:2022-04-07 格式:DOC 页数:21 大小:298KB
返回 下载 相关 举报
基232协议串口通信_第1页
第1页 / 共21页
基232协议串口通信_第2页
第2页 / 共21页
基232协议串口通信_第3页
第3页 / 共21页
点击查看更多>>
资源描述
目 录0. 引言21. 总体方案设计32. 硬件电路的设计32.1 单片机介绍32.2 时钟控制电路42.3 电源电路42.4 复位电路52.5 电平转换电路设计62.6 数码管显示电路72.7 串行口介绍82.7.1 串行口基本结构82.7.2串行通讯的方式82.8 整体电路设计103 软件设计103.1串行通信的实现103.2流程框图114.联合调试124.1 硬件调试124.2 软件调试125. 实训心得12参考文献14附录I 原理图15附录II 源程序15桂林电子科技大学实训论文 基于232协议的串口通信技术摘要:随着计算机技术特别是单片机技术的发展,单片机的应用领域越来越广泛,单片机在工业控制、数据采集以及仪器仪表自动化等许多领域都起着十分重要的作用。但在实际应用中,在要求响应速度快、实时性强、控制量多的应用场合,单个单片机往往难以胜任,这时使用多个单片机接合PC机组成分布式系统是一个比较好的解决方案。这样,单片机的数据通信技术就变得十分重要。串口通信是指数据一位一位地按顺序传送。串口通信通过串口来实现。在全双工的串口通信中,仅需要一根发送线和一根接收线,串口通信可大大节省传送线路的成本,但数据传送速度慢。因此,串口通信适合于远距离通信。关键字:单片机、PC机、串口、通信0. 引言在各种单片机应用系统的设计中,如智能仪器仪表、各类手持设备、GPS接收器等,常常遇到计算机与外界的信息交换,即通讯。通信的基本方式可分为并行通信与串行通信两种。RS-232是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。因此在视频界的应用,许多厂家都建立了一套高层通信协议,或公开或厂家独家使用。如录像机厂家中的Sony与松下对录像机的RS-422控制协议是有差异的,视频服务器上的控制协议则更多了,如Louth、Odetis协议是公开的,而ProLINK则是基于Profile上的。 目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机往往只负责数据的采集和通信,而上位机通常以基于图形界面的Windows系统为操作平台,为便于查询和保存数据,还需要数据库的支持,如在测控系统中使用SQL Server数据库。1. 总体方案设计PC机与单片机之间可以由RS-232C、接口相连,在PC机系统内部装有异步通信适配器,利用它可以实现异步串行通信。该适配器的核心元件是可编程的Intel 8250芯片,它使PC机有能力与其他具有标准的RS-232C接口的计算机或设备进行通信。而51单片机本身具有一个全双工的串行口,因此只要配以电平换换的驱动电路、隔离电路就可以组成一个简单的通信接口。同样,PC机和单片机之间的通信也分为双机通行与多机通信。数据通信的硬件上采用3线制,将单片机和PC串口的3个引脚(TXD、RXD、GND)分别连在一起,即将PC机和单片机的发送数据线TXD与接收数据线RXD交叉连接,两者的地线GND直接相连,而其他信号线如握手信号线均不用,采用软件握手的方式。这样既可以实现预定的任务又可以简化电路设计。 PC机和单片机最简单的连接时零调制三线经济系。这是进行全双工通信所必需的最少线路,因为51单片机输入、输出电平为TTL电平,但由于单片机的TTL逻辑电平和RS-232的电气特性完全不同,RS-232的逻辑0电平规定为+5+15V之间,逻辑1电平为-5-15V之间,因此在将PC机和单片机的TXD和RXD交叉连接时必须进行电平转换,这里我选用的是MAX232电平转换芯片。其原理框图为图 1 RXDTXDGNDRS-232CTIN TOUTROUT RINGND TXD RVD GND 图1串口通信原理图2. 硬件电路的设计2.1 单片机介绍标准型89系列单片机是与MCS-51系列单片机兼容的。在内部含有4KB或8KB可重复编程的Flash存储器,可进行1000次擦写操作。全静态工作为0-33MHz,有3级程序存储器加密锁定,内含有128-256字节的RAM、32条可编程的I/O端口、2-3个16位定时器/计数器,6-8级中断,此外有通用串行接口、低电压空闲模式及掉电模式。AT89C51相当于将8051中的4KB ROM换成相应数量的Flash存储器,其余结构、供电电压、引脚数量及封装均相同,使用时可直接替换。AT89C51在内部采用40条引脚的双列直插式封装,引脚排列如图2所示:图2 AT89C51芯片引脚2.2 时钟控制电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。AT89C51时钟产生方式通常有两种:一是内部时钟方式,二是外部时钟方式。由于外部时钟方式是把外部已有的时钟信号引入到单片机内,此种方式常用于多片89C51单片机同时工作,以便于单片机的同步。并且高低脉冲电平持续时间应不短于20ns,否则工作不稳定。因此,我们不选用这种时钟方式。 在本次设计当中我们选用的是:内部时钟方式,利用单片机的引脚18(XTAL2)和引脚19 (XTAL1)外接晶振及电容,与片内可以构成振荡器的反向放大器一起组成工作主频电路,如图3.1所示。AT89C51的工作频率取决于晶振Y1的频率。采用晶振的目的是可以提高工作频率的稳定性。图41中的C2、C3的作用是稳定频率和快速起振,电容值一般在530pF 图3 时钟电路图典型值为30pF,我们取11.0592MHz。在设计电路板的时候应使C2、C3和Y1尽量靠近单片机芯片,以减少分布电容所引起对振荡电路的影响。2.3 电源电路在本次设计当中我们采用双电源供电的方式。一种是电源电路采用912V电压经过稳压三极管LM7805和其外围电路组成稳定5V电压的输出。 二是采用具有USB接口供电。在我们身边非常容易找到USB接口的充电器。使电压稳定。图4电源稳压部分由于我们在大一的时候焊接凌阳61板,对61板有初步的了解,知道其电源部分的稳压设计较好输出稳定,故我们采用它的电路形式,只需将其中的稳压管换为LM7805即可。而USB接口供电不需要设计它的输出是一个比较稳定的5V电压,我们只需购买一个USB头和一根USB线即可。其电路如图35所示.具有电源指示灯。2.4 复位电路当在AT89C51单片机的REST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。在实际的应用当中复位操作有两种形式:一种是上电复位,另一种是按键复位电路。上电复位电路如图51 所示。求接通电源后,单片机自动实现复位操作,上电的瞬间REST引脚获得高电平,随着电容的充电,REST引脚的高电平将逐渐下降。REST引脚的高电平只要维持足够的时间(2个机器周期),单片机就可以进行复位操作。按键复位电路如下图52所示。按键复位电路可以随时通过按键来发出复位信号。该电路除具有上电复位功能外,若要复位,只需按图中的K键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。这对系统的可控性是很有帮助的。图51 上电复位电路 图52按键复位电路 图53 复位电路通过比较这两种方式的优缺点我们最后选择上电与按键均有效的复位电路的形式。其电路结构如上图53所示。其中电容电阻的大小是根据工程经验计算得到的,它们的取值大小随时钟频率的不同而变化,要根据具体情况取得合适的值,否则应用现场干扰极为严重,影响正常的复位工作。 2.5 电平转换电路设计和其他的单片机器件一样,作为单片机的标准外围电路,串口的电平转换也有专用的芯片,但也可以使用三极管自行调整电平匹配。本次设计我主要采用专用芯片进行电平转换的方法。目前较为广泛的是使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL和RS-232C的双向电平转换。在这里我采用的芯片是MAX232。如图6图6 电平转换芯片MAX232 在电气特性上RS-232C采用负逻辑,要求高、低两信号间有较大的幅度,标准规定为:逻辑1:-5-15V ,逻辑0:+5+15V 。而单片机的信号电平与TTL电平兼容,逻辑1大于+2.4V,逻辑0为0.4V以下。很显然,RS-232C信号电平与TTL电平不匹配,为了实现两者的连接,必须进行电平转换。MAX232C为单一+5V供电,内置自升压电平转换电路,一个芯片能同时完成发送转换和接收转换的双重功能。MAX232 的引脚主要为5个部分:(1)外接电容:有5个外接电容、进行电压匹配和电源去耦。(2)TTL的输入:电路TTL电平的输入引脚11和10引脚,连接单片机的TXD输出端口。(3)TTL的输出:电路TTL电平的输出引脚12和9引脚,连接单片机的RXD输出端口。(4)RS-232的输入:两路RS-232电平的输入引脚13和8引脚,连接RS-232的TXD的输出端口。(5)RS-232的输出:两路RS-232电平的输出引脚14和7引脚,连接RS-232的RXD的输出端口。通过MAX232的TTL和RS-232 的输入/输出端口,自动地调节了单片机串口的TTL电平信号和RS-232的串行通信信号的电平匹配。电平转换芯片与单片机的连接电路如下:地址分配和连接:只列出和系统相关的、关键部分的单片机与各个模块管脚的连接和相关的地址分配。MAX232的11引脚:MAX232 的TTL电平输入引脚,连接单片机的TXD,TTL串口输入信号。MAX232的12引脚:MAX232的TTL电平输出引脚,连接单片机的RXD、TTL串口输入信号。MAX232的14引脚:MAX232 的RS-232电平输出引脚,连接RS-232的RXD,RS-232的串口输入信号。MAX232的13引脚:MAX232 的RS-232电平输入引脚,连接RS-232的TXD,RS-232的串口输出信号。MAX232和单片机串口连接的电路如图7。图7 MAX232和单片机串口连接电路图2.6 数码管显示电路2.7 串行口介绍2.7.1 串行口基本结构单片机的串行口的功能是与外部器件进行串行数据通信。串行口电路也称为通用异步收发器(UART)。从原理上说,一个UART包括发送器电路、接收器电路和控制电路。8051单片机的UART已集成在其中,构成一个全双工串口,全双工通信是指同时可以作双向通信,两个即可同时发送、接收,又可同时接收、发送。其示意图如图3所示。这个口即可以实现串行异步通信,也可以作为同步移位寄存器使用。发送接收 发送 接收 全双工通信图3 全双工通信示意图8051的串行口通过引脚RXD(P3.0串行口数据接收端)和引脚TXD(P3.1串行口数据发送端)与外部设备进行串行通信。其中共有两个串口双缓冲寄存器(SBUF),一个是发送寄存器,一个是接收寄存器,以便8051能以全双工方式进行通信。串行发送时,从片内总线向发送SBUF写入数据;串行接收时,从接收SBUF向片内总线读出数据。它们都是可寻址的寄存器,但因为发送与接收不能同时进行,所以给这两个寄存器赋一同一地址99H。在接收方式下,串行数据通过引脚RXD进入,由于在接收寄存器之前还有移位寄存器,从而构成了串行接收的双缓冲结构,以避免在数据接收过程中出现帧重叠错误,即在下一帧数据来时,前一帧数据还没有走。在发送方式下口,串行数据通过引脚TXD发出。与接收数据情况不同,发送数据时,由于CPU是主动的,不会发生帧重叠错误,因此发送电路就不需要双缓冲结构,这样可以提高数据发送速度2.7.2串行通讯的方式异步通讯:它用一个起始位表示字符的开始,用停止位表示字符的结束。同步通讯:在同步通讯中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。通讯方向:在串行通讯中,把通讯接口只能发送或接收的单向传送方法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。在双工传送方式中又分为半双工传送和全双工传送。半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。串行口的工作方式:8051 单片机的全双工串行口可编程为 4 种工作方式,现分述如下: 方式 0:为移位寄存器输入/输出方式。可外接移位寄存器以扩展 I/O 口,也可以外接同步输入/输出设备。8 位串行数据者是从 RXD 输入或输出,TXD 用来输出同步脉冲。输出串行数据从 RXD 引脚输出,TXD 引脚输出移位脉冲。CPU 将数据写入发送寄存器时,立即启动发送,将 8 位数据以 fos/12 的固定波特率从 RXD 输出,低位在前,高位在后。发送完一帧数据后,发送中断标志 TI由硬件置位。输入当串行口以方式 0 接收时,先置位允许接收控制位 REN。此时,RXD 为串行数据输入端,TXD 仍为同步脉冲移位输出端。当(RI)=0 和(REN)=1 同时满足时,开始接收。当接收到第 8 位数据时,将数据移入接收寄存器,并由硬件置位 RI。方式 1:为波特率可变的 10 位异步通讯接口方式。发送或接收一帧信息,包括 1 个起始位 0,8 个数据位和1 个停止位 1。输出当 CPU 执行一条指令将数据写入发送缓冲 SBUF 时,就启动发送。串行数据从 TXD 引脚输出,发送完一帧数据后,就由硬件置位 TI。输入在(REN)=1 时,串行口采样 RXD 引脚,当采样到 1 至 0 的跳变时,确认是开始位 0,就开始接收一帧数据。只有当(RI)=0 且停止位为 1 或者(SM2)=0 时,停止位才进入 RB8,8 位数据才能进入接收寄存器,并由硬件置位中断标志 RI;否则信息丢失。所以在方式 1 接收时,应先用软件清零 RI 和 SM2 标志。方式 2: 为固定波特率的 11 位 UART 方式。它比方式 1 增加了一位可程控为 1 或 0 的第 9 位数据。输出发送的串行数据由 TXD 端输出一帧信息为 11 位,附加的第 9 位来自 SCON 寄存器的 TB8 位,用软件置位或复位。它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。当 CPU 执行一条数据写入 SUBF 的指令时,就启动发送器发送。发送一帧信息后,置位中断标志 TI。输入在(REN)=1 时,串行口采样 RXD 引脚,当采样到 1 至 0 的跳变时,确认是开始位 0,就开始接收一帧数据。在接收到附加的第 9 位数据后,当(RI)=0 或者(SM2)=0 时,第 9 位数据才进入 RB8,8 位数据才能进入接收寄存器,并由硬件置位中断标志 RI;否则信息丢失。且不置位 RI。再过一位时间后,不管上述条件是否满足,接收电路即行复位,并重新检测 RXD 上从 1 到 0 的跳变。方式 3: 为波特率可变的 11 位 UART 方式。除波特率外,其余与方式 2 相同。波特率选择:如前所述,在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。在 8051 串行口的四种工作方式中,方式 0 和 2 的波特率是固定的,而方式 1 和 3 的波特率是可变的,由定时器 T1 的溢出率控制。2.8 整体电路设计 PC机和单片机最简单的连接时零调制三线经济系。这是进行全双工通信所必需的最少线路,因为51单片机输入、输出电平为TTL电平,但由于单片机的TTL逻辑电平和RS-232的电气特性完全不同,RS-232的逻辑0电平规定为+5+15V之间,逻辑1电平为-5-15V之间,因此在将PC机和单片机的TXD和RXD交叉连接时必须进行电平转换,这里我选用的是MAX232电平转换芯片。将PC机键盘的输入发送给单片机,单片机收到PC机发来的数据后,会送统一数据给PC机。并在屏幕中显示出来。只要屏幕中显示出来的字符与所键入的字符相同,说明二者之间的通信正常。总串行通信图为图6所示 图6 串行通信电路图3 软件设计将PC机键盘的输入发送给单片机,单片机收到PC机发来的数据后,会送统一数据给PC机。并在屏幕中显示出来。只要屏幕中显示出来的字符与所键入的字符相同,说明二者之间的通信正常。3.1串行通信的实现(1)串行口工作于方式3;用定时器1产生9600bit/s的波特率,工作于方式2。(3)通信协议:PC机首先发送数据,单片机接收到之后返回一个相同数据到PC机表示通信正常。(4)通信过程使用第九位发送奇偶校验位。(5)从机接收到一个数据后,立即进行奇偶校验,若数据没有错误,则返回00H,否则返回FFH。(6)主机发送一个数据后,等待从机返回数据;若为00H,则继续发送下一个数据,若为FFH,则重新发送数据。3.2流程框图(1) 51单片机通过中断方式接收PC机发送数据,并回送。其程序流程图,如图7所示:是否接受PC机发送数据?程序初始化接受PC机发送数据N回发数据给PC机是否发送完成?N清除标志位开始YY结束 图7发送端程序流程图4.联合调试4.1 硬件调试在制版过程中,出现以下几点问题:1.电源指示等不亮分析:一、是否有漏焊,虚焊原因造成;二、LED灯接反,导致不亮或LED灯烧坏;三、电源没有供电;调试:首先,对焊接点进行检查,再将LED用万用表测量正负极是否接反,这几项通过检查都没问题,因此我判断是USB供电源有问题,用万用表测量是USB的供电管脚在PCB上VCC与GND接反,导致供电不上LED灯不亮。2.数码管显示不亮分析:一、单片机是否工作,软件设计是否正确;二、三极管驱动是否按接正确,时候正常驱动;三、P0口与数码管相连接,是否接有上拉电阻;调试:首先我对单片机是否工作进行检查,我通过串口将HEX文件烧入进去,发现能正常烧入,证明单片机工作正常。 然后,我检查三极管的是三个管脚是否接错,发现我E级和C级接反了,所以我们将其更改过来,单数码管还是没亮。最后,我考虑上拉电阻的问题 将P0口接了一个10K的排阻作为上拉电阻,这样使得数码管亮了。4.2 软件调试1.PC机上显示的字符不是发送的数分析:我没有掌握好PC机和单片机的数值关系,没有进行ASCLL码与十六进制之间的转换。调试:在软件程序设计中,将单片机发送的数据都将其转换为ASCLL码值再发送给PC机,同理,将PC机传送来的数据都进制十六进制转换再经过查表送给数码管显示。5. 实训心得单片机与PC机串行通信系统的设计告一段落,该系统的开发是一项非常有价值的项目。本论文以单片机系统设计方法作为全文的组织线索,开发一个单片机系统是需要按照规范的系统设计方法严谨的进行的。为了开发通信系统,选择8051单片机,必须掌握单片机控制系统硬件电路的设计,如复位电路和时钟电路等的设计,另外对汇编语言的灵活运用是少不了的,如单片机中断、定时器和串行口的汇编语言编程,而对单片机的串口知识深刻的理解下,确定以定时器T1的工作方式2作为波特率发生器是一个关键的,计算机方面,首先是 RS-232C接口,RS-232C接口是最为常用的、应用最为广泛的串行接口标准,大量的集成设备、工业产品都提供了RS-232C接口,因此单片机应用系统的设计中,RS-232C通信设计是十分重要的。51兼容单片机通常都自带一个标准UART端口,这个端口用过电平转换电路就可以构成一个标准的RS-232C接口,并且与计算机的接口相匹配,运用RS-232C连接的最简单形式:3线制,将单片机与PC机进行硬件连接。其中由于单片机系统使用的是TTL电平,单片机中的串口输出的信号也是如此,但是串行通信中使用的RS-232C通信协议,二者的电平并不相同,在和单片机进行通信时,还需要有一定的外围电路的配合,使得单片机的通信电平和标准的串行通信协议相匹配。这一点用MAX232芯片进行处理。以上所形成的通信系统的原理方案 ,便是本系统的硬件电路的设计依据。接着到了系统软件的设计部分,一个完整的单片机系统只有硬件还不能工作,必须有软件来控制整个系统的运行,PC机部分的串口通信软件开发,采用的是VB的MSComm控件来实现串行通信,这一部分,我编制出了利用文本框接受和发送数据的界面,其中对如何接受单片机发送的16进制代码和向单片机发送数据,是我做的不足的地方,采用的编程方法是正确的,但只形成了基本框架,不足的是不能很好的对收发数据进行代码处理,而这一部分,我认为应该单独作为一个课题进行研究。开发出强大的串口通信软件,鉴于VB是一种弱字符语言,可以考虑用VC+等语言来开发,目的是使传输的数据不受任何限制,使通信系统更容易实现。而单片机的汇编程序方面,我一方面编写出了单片机自动发送和按键发送数据的程序,另一方面编写出了单片机查询接受数据和中断接受数据的程序,并在AT89C51单片机试验开发板上进行了测试,都达到了很好的效果,这也是让我满意的一部分。最后,在硬软件设计完毕后,最重要的一步是对系统的调试,而对于可能出现的问题,需要从软件和硬件两个方面进行考虑,这一阶段需要大量的测试程序对系统等各个部分进行分别的测试,才能找到问题的所在,并进行针对性地修改和完善,而最终目的是使软件和硬件能够很好的配合,完成预定的功能,再在实际的环境中对开发出来的系统进行考验,并随时对产生的问题进行处理,我认为这一步很费工夫,也存在着许多困难,但开发出成功的单片机系统,这一步是必经阶段,只有在这一阶段,多摸索,多探索,才能使自己的能力有所突破与提高。随着我一步一步做我的论文和设计,我才发现自己能力的不足与知识的贫乏,这是需要在后续的学习中,持续积累与拼搏的。参考文献1 高海生,单片机应用技术大全,19962 张毅刚,刘杰.MCS51单片机原理及应用.哈尔滨: 哈尔滨工业大学出版社,2004.63 何立民.单片机应用技术选编.北京: 北京航天航空大学出版,2002.54 张军,梅丽凤.单片机原理接口技术.北京交通大学出版社,2006.55 张婧武,周灵彬.单片机系统的PROTEUS设计与仿真.北京: 电工出版社,2007.4附录I 原理图附录II 源程序ORG 0000HAJMPSTARTORG 0023HLJMP AGAINORG 0030HSTART:MOV DPTR,#TABMOV SCON,#0F0H ;设定串行方式;9位异步,允许接收,工作在方式3MOV TMOD,#20H ;设定计数器1为模式2ORL PCON,#10H ;波特率加倍MOV TH1,#0FDH ;设定波特率为9600MOV TL1,#0FDHSETBTR1 ;计数器开始计数SETB EASETB ES ;启动串口MOV 60H,#00H ;数码管显示内容MOV 61H,#00HMOV 62H,#00HMOV 63H,#00HMOV 64H,#01H ;确认发送多少位MOV 68H,#00HMOV 69H,#00HMOV 70H,#00HMOV R1,#60H ;取显示内容;-主程序-LOOP: ACALL DISPLAY ;调用显示 JB P1.0 ,EN1 ;判断加ACALL DELAYJB P1.0,EN1N1:ACALL DISPLAY JNB P1.0,N1CJNE R1,#0FH,ENN ;是否等于FEN1: JB P1.1 ,EN2 ;判断减ACALL DELAYJB P1.1,EN2N2: ACALL DISPLAYJNB P1.1,N2CJNE R1,#00H,ENN1 ;是否等于0EN2: JB P1.2 ,EN3 ;数码管选位ACALL DELAYJB P1.2,EN3N3:ACALL DISPLAYJNB P1.2,N3INC R1INC 64H;确定发送多少位MOV A,64HCJNE A,#05H,NNMOV 64H,#01HNN:CJNE R1,#64H,N;判断是否超出数码管位数MOV R1,#60HN:JMP EN3ENN:INC R1;加1 SJMPEN3ENN1:DEC R1;减1 EN3: JB P1.3,EN4 ;发送键ACALL DELAYJB P1.3,EN4N4:ACALL DISPLAY JNB P1.3,N4ACALL LOOP1 ;调用发送程序EN4: SJMP LOOP;-发送程序-LOOP1: CLRES ;关串口中断 MOV 68H,64H ;保存发送的位数 MOV 69H,R1 ;保存R1的值 MOV R1,#60HM1: MOV A,R1 ;从第一个数(60h里面的值)开始发送 ACALL SUB1 ;调用发送转换程序 MOVSBUF,A ;发送数据 ACALLDELAY1 INC R1 ;移位发送 DJNZ 64H,M1 ;判断是否发送完 MOV R1,69H ;取回值 MOV 64H,68H ;取回值 SETBES ;开串口中断 RET;-中断服务程序-AGAIN: JBC RI,L ;判断是接收中断还是发送中断,接收清0 CLR TI ;发送清0JMP NEXTL:MOV A,SBUF ;接收数据送缓存ACALLSUB2 ;调用接收转换程序 MOV R1,A ;把收到数据保存MOV A,60H ;多机通信3CJNE A,#6,L1MOV A,61H ;多机通信3CJNE A,#6,L1MOV A,62H ;多机通信3CJNE A,#6,L1MOV A,63H ;多机通信3CJNE A,#6,L1XRL SCON,#20H ;异或,进行单机通信MOV SBUF,#36H ;回传本机号L1:INC R1 ;移位保存 CJNE R1,#64H,NEXT ;判断是否接收满4位MOV R1,#60H ;满4位从第一位开始存储NEXT: RETI;-接收转换-SUB2:CLRC ;清标记位cSUBBA,#30H ;把接收的数据减30MOVR7,A ;减后的值保存起来MOVA,#09HSUBBA,R7 ;用09减去R7的值JNCEXIT1 ;C为0,够减说明接收的数据小于等于9,跳转CLRC ;C为1,不够减说明接收的数据大于9MOVA,R7SUBBA,#07H ;把原来的值减7后给A送到数码管显示EXIT:RETEXIT1:MOV A,R7 ;把原来的值给A送到数码管显示 JMP EXIT;-发送转换-SUB1:PUSHACCCLRCSUBBA,#0AHPOPACC JCAD30ADD A,#07HAD30:ADD A,#30HRET;-显示程序-DISPLAY: MOV R3,#04H MOV R4,#0FEH MOV R0,#60HDP: MOV A,R0 MOVC A,A+DPTR MOV P0,A MOV P2,R4 ACALL DELAY MOV A,R4 RL A MOV R4,A INC R0 MOV P2,#0FFH DJNZ R3,DP RET;-延时程序- DELAY: MOV 40H,#10 D1: MOV 41H,#50 DJNZ 41H,$ DJNZ 40H,D1 RET DELAY1: MOV 42H,#0FFH D2: MOV 43H,#0FFH DJNZ 43H,$ DJNZ 42H,D1 RETTAB: DB 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F DB0x77,0X7C,0X39,0X5E,0X79,0X71 END 第20页
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 合同文书


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!