c51串行通信汇编语言,基于VB与C51串行通信协议的设计与实现

1 引言

串行通信是计算机之间较常用的通信手段之一,在工业控制中,经常要将带有rs232总线接口的仪器作为i/o接口设备,通过rs232串行总线与pc计算机组成一整套仪器系统。

单片机c语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。

本文通过制定串行通信协议,上位机采用vb语言,单片机用c语言编程来实现计算机与单片机之间的串行通信,这对功能复杂的通信,采用串口通信协议将使数据传送准确可靠。

2 通信协议及程序设计思想

pc机与单片机之间的通信是通过串行口实现的,由于单片机系统电平是ttl电平,与标准rs232不兼容,本实验通过max232将ttl电平转换为 rs232标准,再与pc机的串口连接。为使数据在链路上无差错的传送,并实现不同的功能,本文采用通信协议来规约数据的传输。本文采用的通信协议如下:

(1) 通信参数设定:

波特率9600,无奇偶校验,8个数据位,1个停止位。

(2) 命令帧格式:

1byte 1byte 2byte 1byte

起始标志 功能码 参数 校验和命令帧起始标志为63h。

功能码:命令帧中的功能码代表不同的命令,例如,当功能码取50h时为上位机读数据命令,下位机接到此命令后把数据传给上位机;当功能码取60h时为上位机写数据命令。命令帧的第三个段为命令参数,是传输命令时的附加信息,如果命令不需要附加信息时,可以将它置为0即可,但有些命令需要进一步的信息,例如,当功能码取52h时帧表示错误命令,这时就可以用命令帧的参数段来表示错误的原因或类型。这种命令帧格式可以保证很大的扩展性和灵活性。

在命令帧和数据帧中都设置了一个字节的校验码,可以确保帧在传输过程中没有错误,这里采用比较容易实现的和校验方式.

(3) 数据帧格式:

1byte 2byte 10byte 1byte

起始标志 序号 数据块 校验和

其中数据帧起始标志为64h,序号是当多帧数据要发送时所规定的发送顺序号。数据块为所要传输的内容。

上位机(pc机)作为主机控制通信的进行,下位机(单片机)作为从机中断响应上位机的通信要求,进入中断服务程序,进行相应的操作。

3 vb中的串行通信机制及其在上位机通信中的实现

vb6中有一个专门用来串行通信的控件-mscomm控件。在vb6中选择“工程/部件”菜单项,在“控件”对话框选中“microsoft l 6.0”,单击“确定”即可添加mscomm控件,然后在窗体中依次布置如下控件并正确设置其属性:3个commandbutton按钮,两个 textbox文本框,一个定时器timer1。其中text1显示的是pc机接收单片机发送的数据,text2显示的是pc机发往单片机的数据。

mscomm控件有两种处理通讯的方式:事件驱动通讯和查询方式。事件驱动的通讯方式处理串行端口交互作用非常有效,是一种功能强大的处理通讯的方法。在通讯过程中,当有通讯事件或错误发生时,mscomm控件的oncomm事件可捕获并处理它们。commevent属性中保留了最近一次通讯事件或错误的数值代码,无论何时当commevent属性的值变化时,就产生oncomm事件。笔者采用oncomm对comevreceive事件的响应来处理收到的数据。当接收缓冲中有rthreshold个字符时该事件产生并持续直到用input属性从接收缓冲区中删除数据。

首先,上位机向单片机发一个连接命令,下位机接到该命令后给一个表示确认的应答信号,于是实现双方握手。不管上位机是读取数据还是发送数据,在数据接收或发送之前都先发送一帧命令以确定是什么样的数据(这是在命令帧的功能码和参数中设定的)。

上位机读数据时,每隔一定时间向下位机发送一帧读数据命令,下位机接到此命令即把数据传上来,送到文本框中显示。上位机发送数据时,首先给下位机发一“写数据”命令帧,下位机接到命令后做好准备接收数据,然后上位机才发数据帧。

(1) “连接”命令按钮的鼠标单击事件

功能:设置mscomm控件的属性,参数,向下位机发送一个握手信号。

private sub command1_click() ‘发送连接命令

dim x(1) as byte

x(0)=246 ‘握手信号(十六进制为f6h)

=1 ‘从接收缓冲区读取1个字符

ld=1‘接收缓冲区每收到指定个的字符都会使mscomm控件产生 ‘oncomm事件。

s=“9600,n,8,1”‘波特率9600,

‘无奇偶校验,8个数据位,1个停止位

if =false then

=true‘判断通讯口1是否打开

end if

=x

end sub

fe580b69d9f2d8ef27ae3e9a36367ee7.gifa7709b72b6f48bddeadcf4f8e4e60776.gifa4c8dea83f375845f0a8bf7655e820ed.gif

【免责声明】本文仅代表作者个人观点,与中国计量测控网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以 及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值