Turbo51学习笔记(5):单片机端的串行通信代码

在不同设备上进行数据交换,最价廉物美的莫过于串行通信(RS232)了,有关串行通信的点滴可自行去百度搜索。

在以下的篇幅里,展示51单片机如何与计算机进行通信,本节解析51单片机的Turbo51代码。

先上51单片机的硬件电路图:


在通信之前,必须约定一个握手的协议,以保证通信的正确无误。此工作非常重要。

通信协议可采用各种流行的协议,也可以自行约定。为了简化代码,自设定如下的通信协议:

1、  上位机 ==> 单片机  
  格式:  起始字  + 单片机地址  +  命令  +  校验
          1byte       1byte        1byte    1byte     =  4 byte
      
  其中:
       起始字,固定为:     $7E
       单片机地址,固定为: $01
       命令,控制单片机的动作:
               = $00     同时灭两个LED
               = $01     亮绿色LED,灭蓝色LED
               = $02     灭绿色LED,亮蓝色LED
               = $03     同时亮两个LED
       校验,为前面3个字节的累加和 

2、  单片机 ==> 上位机   
  格式:  起始字  + 单片机地址  +  命令  +  参数  +  校验
          1byte       1byte        1byte    1byte    1byte    =  5 byte
          
  其中:
       起始字,固定为:     $7E
       单片机地址,固定为: $01
       命令,来自计算机端:
               = $00     同时灭两个LED
               = $01     亮绿色LED,灭蓝色LED
               = $02     灭绿色LED,亮蓝色LED
               = $03     同时亮两个LED
       参数,将当前单片机的控制状态反馈给计算机
               = $00     两个LED都灭
               = $01     绿色LED亮,蓝色LED灭
               = $02     绿色LED灭,蓝色LED亮
               = $03     两个LED都亮
       校验, 为前面4个字节的累加和

//定义用到的常量

猜你喜欢

转载自blog.csdn.net/weixin_43754719/article/details/85060988