单片机的通讯

本文档详细介绍了单片机的通信协议,包括通讯ID、引导码和结束码的定义,以及发送和接收数据的流程。同时,展示了数据加密方法和发送、接收中断处理函数的实现,用于确保数据的正确传输。
摘要由CSDN通过智能技术生成

//头文件部分-------------------------------------------

#ifndef _COMMU_H_
#define _COMMU_H_

#define  COMMUID  0xa1  //通讯id

#define COMMU_LEADER_TIME        40    //引导码时长
#define COMMU_LONG_TIME            6
#define COMMU_SHORT_TIME        2
#define COMMU_END_TIME            40    //结束码时长

#define COMMU_CHECK_LEADER_TIME        20  //检测引导码时长 范围介于COMMU_LONG_TIME 与 COMMU_LEADER_TIME之间
#define COMMU_CHECK_END_TIME        20    //检测结束码时长 范围介于COMMU_LONG_TIME 与 COMMU_END_TIME之间

#define io_tx                 PA1
#define SENDDATALENGTH         8
extern volatile unsigned char  xdata    SendData[SENDDATALENGTH];

#define io_rx                PA0
#define RECDATALENGTH          6
extern volatile unsigned char xdata    RecData[RECDATALENGTH];
extern volatile unsigned char xdata RecDataBuf[RECDATALENGTH];


extern volatile flag        _SendRecFlag;
#define    SendRecFlag              _SendRecFlag.allbits
#define    bitRecOk            _SendRecFlag._bit.b0 
#define bitSendOk            _SendRecFlag._bit.b1 //
#define    bitCommuOk            _SendRecFlag._bit.b2


extern const unsigned char code TAB_ENCRYPT_CODE[];
    
void recdata_f(void);
void senddata_f(void);
uchar Byte_Change(uchar BYTE);

    
#endif    

//C文件----------------------------------------------------------------------------

#include ".\CTK_Library\Config.h"
#if (UART0_EN == 0)

//接收相关
volatile uchar xdata RecData[RECDATALENGTH];//未校验数据
volatile uchar xdata RecDataBuf[RECDATALENGTH];//接收buff

//发送相关
volatile uchar xdata SendData[SENDDATALENGTH];

volatile flag    _SendRecFlag;

const uchar code TAB_ENCRYPT_CODE[] = {  //加密
    0x04,
    0x07,
    0x0F,
    0x05,
    0x00,
    0x03,
    0x0A,
    0x01,
    0x09,
    0x08,
    0x06,
    0x0D,
    0x0E,
    0x0B,
    0x0C,
    0x02,
};

/******************************

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值