📄 newlcdtest_1127.c
字号:
freq_clk=buf[3];
if(en_power==2)LEDSTATE=LEDSTATE&0xdf;
else LEDSTATE=LEDSTATE|0x20;
sent(EN_RF,0x00,0x00,en_power|freq_clk);
str_right();
}
else //数据非法
{ SBUF0=ERR_DATA;
while(!TI0);
TI0=0;
}
}
else //读取工作状态
{
SBUF0=(en_power|freq_clk);
while(!TI0);
TI0=0;
str_right();
}
break;
case 0x06: //载波频率,FREQ
if((buf[1]&0x80)==0)//设置工作参数
{
unite(buf[3],buf[4]);
if((ml_data<=2100)&&(ml_data>=0))
{
freq_carry=ml_data;
freq_div(freq_carry);
dispart(freq_msb);
sent(FREQ_M,0x00,msb,lsb);
dispart(freq_lsb);
sent(FREQ_L,0x00,msb,lsb);
str_right();
}
else //数据非法
{ SBUF0=ERR_DATA;
while(!TI0);
TI0=0;
}
}
else //读取工作状态
{
dispart(freq_carry);
SBUF0=msb;
while(!TI0);
TI0=0;
SBUF0=lsb;
while(!TI0);
TI0=0;
str_right();
}
break;
case 0x07: //音频输入,TUNNEL
if((buf[1]&0x80)==0)//设置工作参数
{
if((buf[4]>=0)&&(buf[4]<=2))
{
tunnel_choice=buf[4];
sent(TUNNEL,0x00,0x00,tunnel_choice);
str_right();
}
else //数据非法
{ SBUF0=ERR_DATA;
while(!TI0);
TI0=0;
}
}
else //读取工作状态
{
SBUF0=tunnel_choice;
while(!TI0);
TI0=0;
str_right();
}
break;
case 0x08: //工作模式,MODE
if((buf[1]&0x80)==0)//设置工作参数
{
if((buf[4]==0)||(buf[4]==1))
{
mode_operate=buf[4];
sent(MODE,0x00,0x00,mode_operate);
str_right();
}
else //数据非法
{ SBUF0=ERR_DATA;
while(!TI0);
TI0=0;
}
}
else //读取工作状态
{
SBUF0=mode_operate;
while(!TI0);
TI0=0;
str_right();
}
break;
case 0x09: //预加重时间,TIME
if((buf[1]&0x80)==0)//设置工作参数
{
if((buf[4]<=3)&&(buf[4]>=0))
{
time_choice=buf[4];
sent(TIME,0x00,0x00,time_choice);
str_right();
}
else //数据非法
{ SBUF0=ERR_DATA;
while(!TI0);
TI0=0;
}
}
else //读取工作状态
{
SBUF0=time_choice;
while(!TI0);
TI0=0;
str_right();
}
break;
case 0x0A: //音频延时,DELAY
if((buf[1]&0x80)==0)//设置工作参数
{
unite24(buf[2],buf[3],buf[4]);
if((mil_data<=500000)&&(mil_data>=0))
{
delay_audio=mil_data;
delay_div(delay_audio);
dispart(delay_quo);
sent(DELAY,0x00,msb,lsb);
dispart(delay_res);
sent(DELAY1,0x00,msb,lsb);
str_right();
}
else//数据非法
{ SBUF0=ERR_DATA;
while(!TI0);
TI0=0;
}
}
else //读取工作状态
{
dispart24(delay_audio);
SBUF0=msb;
while(!TI0);
TI0=0;
SBUF0=isb;
while(!TI0);
TI0=0;
SBUF0=lsb;
while(!TI0);
TI0=0;
str_right();
}
break;
case 0x0B: //导频,DELAY_19K
if((buf[1]&0x80)==0)//设置工作参数
{
unite(buf[3],buf[4]);
if((ml_data<=360)&&(ml_data>=0))
{
delay_pilot=ml_data;
delay19k_div(delay_pilot);
dispart(delay_19k);
sent(DELAY_19K,0x00,msb,lsb);
str_right();
}
else //数据非法
{ SBUF0=ERR_DATA;
while(!TI0);
TI0=0;
}
}
else //读取工作状态
{
dispart(delay_pilot);
SBUF0=msb;
while(!TI0);
TI0=0;
SBUF0=lsb;
while(!TI0);
TI0=0;
str_right();
}
break;
case 0x0C: //静音设置
if((buf[1]&0x80)==0)//设置工作参数
{
if((buf[4]==0)||(buf[4]==1))
{
if((en_audio==0)&&(buf[4]==1))//非静音变静音
{
laudio_signal_1=laudio_signal;
raudio_signal_1=raudio_signal;
sent(LAUDIO,0x00,0x00,0x00);
sent(RAUDIO,0x00,0x00,0x00);
}
if((en_audio==1)&&(buf[4]==0))//静音变非静音
{
laudio_signal=laudio_signal_1;
raudio_signal=raudio_signal_1;
if(flag_symbol&0x01) //左声道为正
{
if((laudio_signal%10)==0)lweight=lsignal[10-laudio_signal/10];
else
{
k=(lsignal[9-laudio_signal/10]-lsignal[10-laudio_signal/10])/10;
lweight=lsignal[10-laudio_signal/10]+k*(laudio_signal%10);
}
}
else //左声道为负
{
if((laudio_signal%10)==0)lweight=lsignal[10+laudio_signal/10];
else
{
k=(lsignal[10+laudio_signal/10]-lsignal[11+laudio_signal/10])/10;
lweight=lsignal[10+laudio_signal/10]-k*(laudio_signal%10);
}
}
dispart24(lweight);
sent(LAUDIO,msb,isb,lsb);
if(flag_symbol&0x02) //右声道为正
{
if((raudio_signal%10)==0)rweight=rsignal[10-raudio_signal/10];
else
{
k=(rsignal[9-raudio_signal/10]-rsignal[10-raudio_signal/10])/10;
rweight=rsignal[10-raudio_signal/10]+k*(raudio_signal%10);
}
}
else //右声道为负
{
if((raudio_signal%10)==0)rweight=rsignal[10+raudio_signal/10];
else
{
k=(rsignal[10+raudio_signal/10]-rsignal[11+raudio_signal/10])/10;
rweight=rsignal[10+raudio_signal/10]-k*(raudio_signal%10);
}
}
dispart24(rweight);
sent(RAUDIO,msb,isb,lsb);
}
en_audio=buf[4];
str_right();
}
else //数据非法
{ SBUF0=ERR_DATA;
while(!TI0);
TI0=0;
}
}
else //读取工作状态
{
SBUF0=en_audio;
while(!TI0);
TI0=0;
str_right();
}
break;
case 0x0D: //日期:buf[2]为年,buf[3]高四位为星期,低四位为月,buf[4]为日
if((buf[1]&0x80)==0)//设置工作参数
{
if((buf[2]<=99)&&(buf[2]>=0)&&((buf[3]&0xf0)<=7)&&((buf[3]&0xf0)>=1)&&
((buf[3]&0x0f)>=1)&&((buf[3]&0x0f)<=12)&&(buf[4]<=31)&&(buf[4]>=1))
{
year=buf[2];
week=(buf[3]&0xf0)>>4;
month=buf[3]&0x0f;
day=buf[4];
year=((year/10)<<4)|(year%10);
month=((month/10)<<4)|(month%10);
day=((day/10)<<4)|(day%10);
hour=((hour/10)<<4)|(hour%10);
minute=((minute/10)<<4)|(minute%10);
second=((second/10)<<4)|(second%10);
initial_DS1302(year,month,day,week,hour,minute,second);
en_ds=1;
str_right();
}
else//数据非法
{ SBUF0=ERR_DATA;
while(!TI0);
TI0=0;
}
}
else //读取工作状态
{
disp_clk_regs();
SBUF0=year;
while(!TI0);
TI0=0;
SBUF0=(week<<4)||month;
while(!TI0);
TI0=0;
SBUF0=day;
while(!TI0);
TI0=0;
str_right();
}
break;
case 0x0E: //时间:buf[2]为小时,buf[3]为分钟,buf[4]为秒
if((buf[1]&0x80)==0)//设置工作参数
{
if((buf[2]<=23)&&(buf[2]>=0)&&(buf[3]<=59)&&(buf[3]>=0)&&(buf[4]<=59)&&(buf[4]>=0))
{
hour=buf[2];
minute=buf[3];
second=buf[4];
year=((year/10)<<4)|(year%10);
month=((month/10)<<4)|(month%10);
day=((day/10)<<4)|(day%10);
hour=((hour/10)<<4)|(hour%10);
minute=((minute/10)<<4)|(minute%10);
second=((second/10)<<4)|(second%10);
initial_DS1302(year,month,day,week,hour,minute,second);
en_ds=1;
str_right();
}
else//数据非法
{ SBUF0=ERR_DATA;
while(!TI0);
TI0=0;
}
}
else //读取工作状态
{
disp_clk_regs();
SBUF0=hour;
while(!TI0);
TI0=0;
SBUF0=minute;
while(!TI0);
TI0=0;
SBUF0=second;
while(!TI0);
TI0=0;
str_right();
}
break;
case 0x0F: //功放控制设置:控制电压,输出功率
if(flag_rf==2)
{
if((buf[1]&0x80)==0) //设置工作参数
{
unite(buf[3],buf[4]);
if((ml_data<=819)&&(ml_data>=0))
{
if((ml_data-ctr_vol)<=100)
{
if(power_out>=3000) //ERR_POW:功率不能再增加
{
SBUF0=ERR_POW;
while(!TI0);
TI0=0;
}
else
{
ctr_vol=ml_data;
voltemp=ctr_vol*5;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -