那这个串口收发程序应该怎么改,才能把数据包收发完毕呢?
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define SET_LED PORTA&=0XFE //PA0 接黄色发光管
#define CLR_LED PORTA|=0X01
/***************************************************
*名称DelayMs()
*功能 延时1ms 函数
*入口参数ms
*出口参数:无
*****************************************************/
void DelayMs(uint ms)
{
uint i;
for(i=0;i
}
/***************************************************
*名称putc()
*功能 向串口发送数据
*入口参数char c
*出口参数:无
*****************************************************/
void putc(uchar c)
{
while( !(UCSR0A & (1<
}
/***************************************************
*名称getc()
*功能 从串口接收数据
*入口参数:无
*出口参数:UDR
*****************************************************/
uchar getc(void)
{
while( !(UCSR0A & (1<
}
/***************************************************
*名称main()
*功能 串口通信
*入口参数:无
*出口参数:UDR
*****************************************************/
int main(void)
{
//uart 初始化
DDRA=_BV(PA0);
PORTA=_BV(PA0);
UBRR0L=7;//576000 baud 7.3728MHz:50
UCSR0B=_BV(RXEN0)|_BV(TXEN0);//发送或接受允许
while(1)
{
SET_LED;
putc(getc());
CLR_LED;
DelayMs(500);
}
}
另外:想把WSN数据包的结构体加进去,应该怎么处理啊?
struct HEADER
{
unsigned int fc;//帧控制信息,2字节
unsigned char number;//帧序列号,1字节
unsigned int destinationaddr_pan;//目的设备PAN标识符
unsigned int destinationaddr;//目标地址
unsigned int sourceaddr_pan;//源设备PAN标识符
unsigned int sourceaddr;//源设备地址
};
struct PACKET_WSN
{
unsigned long preamble;//前导码序列,4字节
unsigned char sfd;//帧开始分隔符,1字节
unsigned char phr;//帧长度,1字节
struct HEADER header;//MAC子层帧头
char a[6];//帧数据单元
unsigned int fcs;//错误校验修正码,2字节
}packet_wsn;
谢谢各位!