ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:257.47KB ,
资源ID:22230654      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22230654.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言实现串口通信PC和单片机间Word文档格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言实现串口通信PC和单片机间Word文档格式.docx

1、PC机和单片机都可以发送和接收。上位机和下位机均采用查询方式发送控字符和数据、中断方式接收控制字符和数据。采用RS-232串口异步通信,上位PC机与下位单片机异步串行通信的通信协议为了保证可靠的通信,必须有一套完善的通信协议。分布式控制系统中的每台单片机均有唯一的番号。通信开始时,先由机呼叫被叫单片机的番号,单片机在接收到微机的呼叫后,首先判断是不是自己的番号,如果是,则发送呼叫应答信号,否则不予理睬。微机在接收到呼叫应答信号之后,将向单片机发出通信命令字符串。以下是上位机协议的格式:单片机号命令码停止标志其中,单片机号代表现场第几台单片机,占用个字节,发送两次的目的是为了防止干扰;命令码则代

2、表上位机向下位机发布的工作命令,它也占用个字节,发送两次的目的也是为了防止干扰。而停止标志则表明一次命令发送完毕。使用时可依据该标志判断上位机的命令是否发送完毕。下位机协议格式如下:数据块校验位该格式中,数据块为下位机上传到上位机的数据。校验位则用于机对收到的数据进行奇偶校验(占个字节)。校验正确后,可将数据写入内存,否则发出数据传输错误信息,以要求单片机重新传输数据。另外,作为一个完整的通信协议,只有上述约定还不够,还必须在发送和接收数据的时间间隔上加以限制。否则,很可能由于某些原因而造成无限制的等待对方应答,使整个系统处于工作不正常状态,或者延误其它动作的处理。具体时间限制可根据通信内容、

3、处理速度,再加上适当的余量来确定。2 单片机通信程序设计单片机的数据通信由串行口完成,定时器T1 作为波特率发生器,其波特率要与PC 机一致。数据的传送格式为1 位起始位、8 位数据位和1 位停止位。采用中断方式发送和接收数据,定时器T1 设置为工作工作模式2,串行口设置为工作方式3,由第9位判断停止。具体的程序流程图见下。单片机中断方式接收程序当PC 机不发送任何数据的时候,从机单片机始终处于等待状态(P.),直到PC 机发送数据过来。由于PC 机在发送有效数据之前会加一个开始符(FFH),在有效数据之后会加一个开始符(7FH),所以单片机接收到主机发送来的FFH 之后,置RAM 存贮单元的

4、初始地址30H 单元,用来放紧接着接收的数据,程序中还用了一个计数器COUNTER 来计接收到的数据位数,直到接收到7FH 为止。单片机接收主程序MAIN 及中断服务程序STR 清单如下:COUNTER EQU 40HPOINT EQU 41HORG 0000HLJMP MAINORG 0023HLJMP SRTMAIN:MOV SP,#60HMOV TMOD,#20H ;定时器T1 的方式2MOV PCON,#00H ;串行口波特率控制位MOV TH1,#0F4H ;2400Kb/sMOV TL1,#0F4HMOV 30H,#15MOV COUNTER,#1MOV R0,#30H ;接收数据

5、存放区MOV R1,#30HSETB TR1 ;开始计数CLR ET1 ;清定时中断MOV SCON,#50H ;串行口控制寄存器给值SETB EA ;开总中断SETB ES ;开串行口中断MOV IP,#10HMAIN1: ACALL DISPSJMP MAIN1SRT: PUSH ACCPUSH 01HJBC RI,GETSJMP EXITGET: MOV A,SBUFCJNE A,#0FFH,GET1 ;判断是否为开始字符,不是跳GET1 放数据存贮是开始符就置存贮区首地址30H,计数器清0 并跳出中断MOV COUNTER,#0GET1: CJNE A,#07FH,GET2 判断是否为

6、结束符,不是跳GET2 放数据存贮区MOV R5,COUNTER ;是结束符,放发送缓存区开始字符INC R5MOV POINT,#30HMOV SBUF,#255GET2: MOV R0,AINC R0INC COUNTEREXIT: POP 01HPOP ACCRETI单片机中断方式发送程序由于本次设计的系统要实现的功能是将PC 机送到单片机的数据回送到PC机,所以单片机要在接收完PC 机数据后立即将数据回送到PC 机。也就是说要将RAM 存贮单元的初始地址30H单元内数据逐一发送出去。程序框图见下。单片机发送主程序MAIN 及中断服务程序SEND清单如下:JBC RI,GET ;判断是否

7、为接收,是跳GET 接收程序,否执行发送程序CLR TIDJNZ R5,SEND1SEND1: MOV R1,POINTMOV A,R1MOV SBUF,AINC R1MOV POINT,R1单片机显示程序单片机显示部分可以用来检测接收到的数据是否正确,单片机显示程序主要将接AT89C51 从串行口收到的数据显示出来。在程序设计中,在AT89C51RAM 存贮器中的四个显示缓冲器单元30H34H,分别存放着由PC 机方发送过来的数据,AT89C51 的P2 口扫描输出总是只有一位为高电平,即4 位显示器中仅有一位公共阴极为低电平,其它位为高电平,AT89C51 的P0 口相应位(阴极为低)的显

8、示数据的段数据,使该位显示出一个字符,其它们为暗,依次地改变P2 口输出为高的位,P0 口输出对应的段数据,4 位显示器就显示出由缓冲器中显示数据所确定的字符。程序框图见下:单片机显示子程序清单如下:DISP:MOV DPTR,#TABMOV A,COUNTERJZ DISP2 ;没有接收到数据,跳出DISP 继续显示P.等待状态MOV R2,AMOV R6,#08HDISP1:CPL AANL A,#0FHMOVC A,A+DPTRMOV P0,A ;送字形码到P0 口MOV A,R6MOV P2,A ;送位控制到P2 口RR AMOV R6,ADJNZ R7,$DJNZ R2,DISP1

9、;判断接收位数DISP2:RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDB 77H,7CH,39H,5EH,79H,0F3HEND3 PC机通信程序PC 通信程序采用Visual Basic 语言编程,VB 提供了串行端口控制Mscomm来为应用程序提供串行通讯。该控件屏蔽了通信过程中的底层操作,我们可以设置、监视Mscomm 控件的属性和事件,结合Timer 控件即可完成对串行口的初始化和数据的输入输出工作。主程序按照通信协议的要求,首先确定波特率和信息帧格式,然后调用发送子程序将键盘输入的数据发送出去,为了使主机能够对整个检测过程进行

10、控制,须要在发送命令以后设定等待的时间,也可以通过条件判断下一步是发送还是接收命令。对发送的命令,可能是文本方式或二进制代码。在发送二进制代码时,应特别注意发送的格式。PC 机通信程序清单:Private Sub Command1_Click()Dim outstring As StringDim i As IntegerDim de As Integeroutstring = Text1.TextMSComm1.RThreshold = Len(Text1.Text) + 2MSComm1.Output = Chr(255)For i = 1 To Len(outstring)MSComm1

11、.Output = Chr(Asc(Mid(outstring, i, 1) - 48)Next iMSComm1.Output = Chr(127)End SubPrivate Sub Command2_Click()Text2.Text = Private Sub Command3_Click()If MSComm1.PortOpen = False ThenMSComm1.PortOpen = TrueCommand3.Caption = 关闭端口ElseMSComm1.PortOpen = False打开端口End IfPrivate Sub Form_Load()MSComm1.Co

12、mmPort = 1 定义用端口COM1MSComm1.Settings = 2400,n,8,1 波特率,无奇偶校验,8 位数据,1位停止位MSComm1.PortOpen = True 打开端口Private Sub MSComm1_OnComm()Dim lenth As Integer, i As Integerlenth = Len(Text1.Text) + 2ReDim instring(1 To lenth) As IntegerSelect Case MSComm1.CommEventCase comEvReceiveFor i = 1 To lenthinstring(i) = MSComm1.Input(0)End SelectIf instring(i) 255 And instring(i) 9999 Then Text1 = 1000Command1_Click7附:单片机通信程序清单:定时器T1的方式2ACALL DISP;*中断服务子程序*CJNE A,#0FFH,GET1;判断是否为开始字符,不是跳GET1 放数据存贮区 CJNE A,#07FH,GET2 ;判断是否为结束符,不是跳GET2 放数据存贮区*显示程序*欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习资料等等打造全网一站式需求

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1