c语言写uart协议实时读写,串口Xmodem协议的发送数据 程序

该博客详细介绍了如何用C语言编写UART串口协议,并实现了Xmodem协议的数据发送过程。通过定义Xmodem协议的相关字符,设置数据包结构,初始化时钟、端口和串口,然后在接收中断函数中处理数据发送和确认命令,确保数据的正确传输。
摘要由CSDN通过智能技术生成

#include

#define uchar unsigned char

#define NAK 0x15                //Xmodem协议中的术语

#define ACK 0x06

#define CAN 0x18

#define EOT 0x04

#define SOH 0x01

//要发送的数据,即430从此数组中取数据构成数据包,共22字节,分5次发送,最后一次补3个0x1A

uchar FileSend[22] = {0xAA,0xA9,0xA8,0xA7,0xA6,0xA5,0xA4,0xA3,0xA2,0xA1,0xA0,0x9F,0x9E,0x9D,0x9C,0x9B,0x9A,0x99,0x98,0x97,0x96,0x95};

//数据包,长9字节,分别为SOH、包序号、序号补码、5字节数据、校验码

uchar DataSend[9];

uchar Seq = 0x01;                //数据包序号,初值为1

uchar cmpl;                          //数据包序号的补码

uchar csum;                         //垂直累加和校验码,初值为0

uchar rec_PC;                    //收到的PC的确认命令

uchar k = 0;                        //指向FileSend的标号,从中取数据时使用,初值为0

uchar j = 0;                         //指向DataSend的标号,发送数据时使用,初值为0

uchar fin_flag = 0;              //数据取完的标志,为1时表示FileSend中的数据已经取完

uchar eot_flag = 0;             //发送完成的标志,为1时表示430已经发送过了EOT标志

void Init_CLK();                 //函数声明

void Init_Port();

void Init_UART0();

void main(void)

{

WDTCTL = WDTPW + WDTHOLD;     //关闭看门狗

_DINT();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值