吃饭完了再来写哟!
吃了两碗泡面,和迪哥聊了会,接着干活啊。
我的这个例子其实就是把单片机和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 &