串口通信之简单协议-----结构体的发送

吃饭完了再来写哟!

吃了两碗泡面,和迪哥聊了会,接着干活啊。

 

我的这个例子其实就是把单片机和PC机之间要传送的内容打包成一个结构体,结构体的各个成员分别充当不同的角色(指令号,指令参数)

所以关键在于结构体的打包和解包,其实很简单,就用到了一个强制类型转换。

 

单片机机部分:

 

#include <reg52.h>

 

typedef unsigned char uint8;

typedef unsigned int  uint16;

 

sbit s1 = P2^0;    //选通数码管1

sbit en = P2^5;    //573锁存使能位

sbit be = P2^4;     //蜂鸣器选通位

 

uint8 i=0;

uint8 recv_txt[2];   //用来接收数据的缓冲区

 

init_serial()   //初始化串口

{

TMOD = 0x20;   //设置定时器1工作方式1;

TH1  = 0xFD;   //波特率发生器,产生9600的波特率

TL1  = 0xFD;

PCON = 0x00;

SCON = 0x50;   //选择串口工作方式1,允许接收

EA = 1;   //开中断

ES = 1;

TR1 = 1;   //启动定时器

 

}

 

 

 

void delay(void)//10ms

 

{

 

       unsigned char i,j,k;

 

        for(i=5;i>0;i--)

 

        for(j=4;j>0;j--)

 

        for(k=248;k>0;k--);

 

}

 

 

led_control(uint8 i)   //led控制模块

{

      if(i == 0)  //流水灯

     {

          int k,j;

          for(j=0;j<100;j++)

          {

                 P1 = 0xFF;

                 for(k=0;k<8;k++)

                 {

                      P1 = P1 << 1;//左移运算符

                      delay();

                       delay();

                       delay();

                       delay();

                       delay();

                 }

           }

     }

     else if(i &

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值