📄 main.c
字号:
case SEND_KEY: // 处理发送按键
Rf_Send_Buf[0] = RF_DOWN_CMD;
Rf_Send_Buf[1] = 0x08;
for(i=2; i<RF_DATA_PACKET_SIZE-1; i++)
{
Rf_Send_Buf[i] = rand();
}
Rf_Send_Buf[i] = 0xaa;
send_data_by_RF(RF_DATA_PACKET_SIZE); // 发送测试数据
lcd_printf_string("Wait Ack", ROW(0x00)|LEN(0x08)|COL(0x00));
lcd_printf_string(" ", ROW(0x01)|LEN(0x08)|COL(0x00));
TF0 = 0;
TH0 = 0x94;
TL0 = 0x00; // (65536 - 37888(0x9400))*12/33.177 = 10ms
Timer0_Cnt = 20; // 定时200ms
TR0 = 1; // enable timer0
Wait_Ack = 1; // 设置等待应答标志
break;
default:
break;
}
}
}
/**********************************************************
name: dispose_rf_data
input: none
output: none
describe: 处理接收到的RF数据
notice:
creat date: 2008-7-24
creator: dengyihong
**********************************************************/
void dispose_rf_data(void)
{
bit return_ack = 1;
U8 i = 0;
if(Rf_Rec_Buf[0] == RF_DOWN_CMD) // 是否为主机发送的数据
{
lcd_printf_string("Send Ack", ROW(0x00)|LEN(0x08)|COL(0x00));
lcd_printf_string(" ", ROW(0x01)|LEN(0x08)|COL(0x00));
Rf_Send_Buf[0] = RF_UP_CMD;
Rf_Send_Buf[1] = 0x08;
for(i=0; i<RF_DATA_PACKET_SIZE-3; i++)
{
Rf_Send_Buf[i+2] = Rf_Rec_Buf[i+2]; // 将接收到的数据返回作为应答
}
Rf_Send_Buf[i+2] = 0xaa; // 最后一个为无效数据
send_data_by_RF(RF_DATA_PACKET_SIZE); // 发送应答
Clr_Screen = 1; // 设置更新屏幕标志位
TF0 = 0;
TH0 = 0x94;
TL0 = 0x00; // (65536 - 37888(0x9400))*12/33.177 = 10ms
Timer0_Cnt = 20; // 准备延时200ms后返回到主屏显示
TR0 = 1; // enable timer0
}
else if(Rf_Rec_Buf[0] == RF_UP_CMD) // 是否为子机返回的数据
{
if(Wait_Ack) // 是否在等待应答状态
{
for(i=2; i<RF_DATA_PACKET_SIZE-1; i++)
{
if(Rf_Rec_Buf[i] != Rf_Send_Buf[i]) // 判断接收到的应答是否有错
{
return_ack = 0;
break;
}
}
if(return_ack) // 应答正确
{
lcd_printf_string("Succeed ", ROW(0x00)|LEN(0x08)|COL(0x00)); // 显示通信成功
lcd_printf_string(" ", ROW(0x01)|LEN(0x08)|COL(0x00));
Wait_Ack = 0;
Clr_Screen = 1; // 设置更新屏幕标志位
TF0 = 0;
TH0 = 0x94;
TL0 = 0x00; // (65536 - 37888(0x9400))*12/33.177 = 10ms
Timer0_Cnt = 20; // 准备延时200ms后返回到主屏显示
TR0 = 1; // enable timer0
}
}
}
}
/**********************************************************
name: display_rf_channel
input: none
output: none
describe: 显示RF当前的channel
notice:
creat date: 2008-8-7
creator: dengyihong
**********************************************************/
void display_rf_channel(void)
{
switch(Rf_Channel_Cnt)
{
case 0:
lcd_printf_string(" 2.400G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 1:
lcd_printf_string(" 2.404G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 2:
lcd_printf_string(" 2.408G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 3:
lcd_printf_string(" 2.412G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 4:
lcd_printf_string(" 2.416G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 5:
lcd_printf_string(" 2.420G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 6:
lcd_printf_string(" 2.424G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 7:
lcd_printf_string(" 2.428G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 8:
lcd_printf_string(" 2.432G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 9:
lcd_printf_string(" 2.436G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 10:
lcd_printf_string(" 2.440G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 11:
lcd_printf_string(" 2.444G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 12:
lcd_printf_string(" 2.448G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 13:
lcd_printf_string(" 2.452G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 14:
lcd_printf_string(" 2.456G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 15:
lcd_printf_string(" 2.460G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 16:
lcd_printf_string(" 2.464G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 17:
lcd_printf_string(" 2.468G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 18:
lcd_printf_string(" 2.472G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 19:
lcd_printf_string(" 2.476G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 20:
lcd_printf_string(" 2.480G ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
default:
break;
}
}
/**********************************************************
name: display_rf_rate
input: none
output: none
describe: 显示RF当前的rate
notice:
creat date: 2008-8-7
creator: dengyihong
**********************************************************/
void display_rf_rate(void)
{
switch(Rf_Rate_Cnt)
{
case 0:
lcd_printf_string(" 25K ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 1:
lcd_printf_string(" 50K ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 2:
lcd_printf_string(" 62.5K ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 3:
lcd_printf_string(" 100K ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 4:
lcd_printf_string(" 125K ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 5:
lcd_printf_string(" 250K ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
case 6:
lcd_printf_string(" 500K ", ROW(0x01)|LEN(0x08)|COL(0x00));
break;
default:
break;
}
}
/**********************************************************
name: dispose_timer0
input: none
output: none
describe: 处理定时器0
notice:
creat date: 2008-7-24
creator: dengyihong
**********************************************************/
void dispose_timer0(void)
{
if(TF0)
{
TF0 = 0;
TH0 = 0x94;
TL0 = 0x00; // 定时10ms
if(Wait_Ack) // 是否在等待应答
{
Timer0_Cnt--;
if(Timer0_Cnt)
{
}
else // 在设置的时间内如果没有收到应答就显示错误
{
Wait_Ack = 0;
lcd_printf_string("Failure ", ROW(0x00)|LEN(0x08)|COL(0x00));
lcd_printf_string(" ", ROW(0x01)|LEN(0x08)|COL(0x00));
Clr_Screen = 1; // 设置更新屏幕标志位
TF0 = 0;
TH0 = 0x94;
TL0 = 0x00; // (65536 - 37888(0x9400))*12/33.177 = 10ms
Timer0_Cnt = 20; // 延时200ms后返回到主屏显示
TR0 = 1; // enable timer0
}
}
else if(Clr_Screen)
{
Timer0_Cnt--;
if(Timer0_Cnt)
{
}
else // 延时时间到,返回到主屏显示
{
TR0 = 0; // disable timer0
Clr_Screen = 0;
lcd_printf_string("COOLWAVE", ROW(0x00)|LEN(0x08)|COL(0x00));
lcd_printf_string(" A7105 ", ROW(0x01)|LEN(0x08)|COL(0x00));
}
}
}
}
/**********************************************************
name: delay_2us
input: delay_cnt
output: none
describe: delay x*2us
notice:
creat date: 2008-7-24
creator: dengyihong
**********************************************************/
void delay_2us(U16 delay_cnt)
{
while(delay_cnt--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -