linux串口工具 SRT,汇编语言实现串口通信(PC和单片机间).doc

汇编语言实现串口通信(PC和单片机间)

8.用C语言或?汇编语言实?现串口通信?(PC和单片?机间)

上位机和下?位机的主从?工作方式为?工业控制及?自动控制系?统所采用。由于PC机?分析能力强?、处理速度更?快及单片机?使用灵活方?便等特点,所以一般都?将PC

机作为上位?机,单片机作为?下位机,二者通过R?S-232或者?RS-485接收?、发送数据和?传送指令。单片机可单?独处理数据?和控制任务?,同时也将数?据传送给P?C机,由PC机对?这些数据进?行处理或显?示

1 硬件电路的?设计

MCS-51单片机?有一个全双?工的串行通?讯口UAR?T,利用其RX?D和TXD?与外界进行?通信,其内部有2?个物理上完?全独立的接?收、发送缓冲器?SBUF,可同时发送?和接收数据?。所以单片机?和PC机之?间可以方便?地进行串口?通讯。单片机串口?有3条引线?:TXD(发送数据),RXD(接收数据)和GND(信号地)。因此在通信?距离较短时?可采用零M?ODEM方?式,简单三连线?结构。IBM-PC机有两?个标准的R?S-232串行?口,其电平采用?的是EIA?电平,而MCS-51单片机?的串行通信?是由TXD?(发送数据)和RXD(接收数据)来进行全双?工通信的,它们的电平?是TTL电?平;为了PC机?与MCS-51机之间?能可靠地进?行串行通信?,需要用电平?转换芯片,可以采用M?AXIM公?司生产的专?用芯片MA?X232进?行转换。电路如图1?所示。硬件连接时?,可从MAX?232中的?2路发送器?和接收器中?任选一路,只要注意发?送与接收的?引脚对应关?系即可。接口电路如?图3.5所示。

总体设计按?照整体设计?思路方案绘?制原理图如?下所示:

2 系统软件设?计

软件设计分?上位机软件?设计和下位?机软件设计?。这两部分虽?然在不同的?机器上编写?和运行,但它们要做?的工作是对?应的:一个发送,另一个接收?。为了保证数?据通信的可?靠性,要制定通信?协议,然后各自根?据协议分别?编制程序。现约定通信?协议如下:PC机和单?片机都可以?发送和接收?。上位机和下?位机均采用?查询方式发?送控字符和?数据、中断方式接?收控制字符?和数据。采用RS-232串口?异步通信,

1 上位PC机?与下位单片?机异步串行?通信的通信?协议

为了保证可?靠的通信,必须有一套?完善的通信?协议。分布式控制?系统中的每?台单片机均?有唯一的番?号。通信开始时?,先由PC机?呼叫被叫单?片机的番号?,单片机在接?收到微机的?呼叫后,首先判断是?不是自己的?番号,如果是,则发送呼叫?应答信号,否则不予理?睬。微机在接收?到呼叫应答?信号之后,将向单片机?发出通信命?令字符串。以下是上位?PC机协议?的格式:

单片机号

单片机号

命令码

命令码

停止标志

其中,单片机号代?表现场第几?台单片机,占用1个字?节,发送两次的?目的是为了?防止干扰;命令码则代?表上位机向?下位机发布?的工作命令?,它也占用1?个字节,发送两次的?目的也是为?了防止干扰?。而停止标志?则表明一次?命令发送完?毕。使用时可依?据该标志判?断上位机的?命令是否发?送完毕。

下位机协议?格式如下:

数据块

校验位

该格式中,数据块为下?位机上传到?上位PC机?的数据。校验位则用?于PC机对?收到的数据?进行奇偶校?验(占1个字节?)。校验正确后?,可将数据写?入内存,否则发出数?据传输错误?信息,以要求单片?机重新传输?数据。

另外,作为一个完?整的通信协?议,只有上述约?定还不够,还必须在发?送和接收数?据的时间间?隔上加以限?制。否则,很可能由于?某些原因而?造成无限制?的等待对方?应答,使整个系统?处于工作不?正常状态,或者延误其?它动作的处?理。具体时间限?制可根据通?信内容、CPU处理?速度,再加上适当?的余量来确?定。

2 单片机通信?程序设计

单片机的数?据通信由串?行口完成,定时器T1? 作为波特率?发生器,其波特率要?与PC 机一致。数据的传送?格式为1 位起始位、8 位数据位和?1 位停止位。采用中断方?式发送和接?收数据,定时器T1? 设置为工作?工作模式2?,串行口设置?为工作方式?3,由第9位判?断停止。具体的程序?流程图见下?。

①单片机中断?方式接收程?序

当PC 机不发送任?何数据的时?候,从机单片机?始终处于等?待状态(P.),直到PC 机发送数据?过来。由于PC 机在发送有?效数据之前?会加一个开?始符(FFH),在有效数据?之后会加一?个开始符(7FH),所以单片机?接收到主机?发送来的F?FH 之后,置RAM 存贮单元的?初始地址3?0H 单元,用来放紧接?着接收的数?据,程序中还用?了一个计数?器COUN?TER 来计接收到?的数据位数?,直到接收到?7FH 为止。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值