📄 control.c
字号:
/********DSP时的音调处理 *************************/
void dsp_tone_do(void)
{
uchar z;
if (dsp_att!=DSP_NO) /*不在DSP下则返回*/
{ /* DSP模式的音调处理 */
z=dsp_att-1; /*数组从0开始,DSP从1开始*/
tre_val=tab_dsp[z][0]; /* tre DSP模式下TONE表位值 */
bass_val=tab_dsp[z][1]; /* bass DSP模式下TONE表位值 */
}
}
void tre_bass_do(void)
{
uchar z;
uchar w;
/******** 音调处理 *************************/
if (b_lound)
{ /* 等响时 */
if (master_val<35)
{
z=bass_val+4; /* bass 格数 */
w=tre_val+4; /* tre 格数 */
}
else if (master_val<43)
{
z=bass_val+3; /* bass 格数 */
w=tre_val+3; /* tre 格数 */
}
else if (master_val<51)
{
z=bass_val+2; /* bass 格数 */
w=tre_val+2; /* tre 格数 */
}
else if (master_val<59)
{
z=bass_val+1; /* bass 格数 */
w=tre_val+1; /* tre 格数 */
}
else
{
z=bass_val; /* bass 格数 */
w=tre_val; /* tre 格数 */
}
if (z>10) z=10; /* bass 最大为10格 */
if (w>10) w=10; /* tre 最大为10格 */
}
else
{ /* 没有等响时 */
z=bass_val; /* bass 格数 */
w=tre_val; /* tre 格数 */
}
par[0]=tab_tone[z]; /* bass TONE表位值 */
par[1]=tab_tone[w]; /* tre TONE表位值 */
if(delay_val==0)
{
par1_7=1;
par1_6=1;
}
else if(delay_val==1)
{
par1_7=0;
par1_6=1;
}
else if(delay_val==2)
{
par1_7=1;
par1_6=0;
}
else if(delay_val==3)
{
par1_7=0;
par1_6=0;
}
if(input_att==INPUT_AC3) par1_4=1; /* out 1 */
else par1_4=0;
/******** 音调处理 *************************/
par0_7=0; par0_6=0; par0_5=0; /*控制高低音*/
send_62446();
}
/*** 把MIC音量db数合成M62421音量格式 ##### ***/
void m62421_chval(void)
{ /* 参数: par[0] db数(MIC1 or MIC2)
返回: par[0] 高位数据
par[1] 低位数据 */
par[2]=par[0];
par[0]=0;
par[1]=0;
if (par2_0) par1_7=1;
if (par2_1) par0_0=1;
if (par2_2) par1_2=1;
if (par2_3) par1_3=1;
if (par2_4) par1_4=1;
if (par2_5) par1_5=1;
if (par2_6) par1_6=1;
}
/***** MIC音频的音量、音调数据输出处理(IC: M62421) ******/
void m62421_do(void)
{
uchar x;
uchar y;
/***** 音量处理 *******/
par[0]=mic_echo_tab[mic2_val]; /*MIC2 db数 */
m62421_chval(); /* 格式数据 */
par1_0=1;
par1_1=1;
par0_4=1; /*cs接高电平*/
send_62421();
par[0]=mic_echo_tab[mic1_val]; /*MIC2 db数 */
m62421_chval(); /* 格式数据 */
par1_0=0;
par1_1=1;
par0_4=1; /*cs接高电平*/
send_62421();
/***** 音调处理 *****/
x=tab_mic_tone[mbass_val]; /* bass TONE表位值 */
y=tab_mic_tone[mtre_val]; /* tre TONE表位值 */
x=x<<4;
par[1]=(y & 0x0f) | x;
par[0]=0x07;
par0_4=1; /*cs接高电平*/
send_62421();
}
/*输入选择控制电平*/
void input_select(bit lr_flag)
{
uchar i;
start_intmute(); /* 临时静音启动 */
b_mute=0; /*取消静音标志*/
screen_num=0;
peng_flg=0;
test_c=0;
if(lr_flag)
{
if(input_att<4) input_att++; /*改变当前输入选择*/
else input_att=0;
}
else
{
if(input_att>0) input_att--; /*改变当前输入选择*/
else input_att=4;
}
input_control();
kdel=KTIME4;
}
/*====================== 各内部控制处理程序文件 ========================*/
void input_control(void) /*音源输入选择*/
{
start_intmute(); /* 临时静音启动 */
tre_bass_do();
if((input_att==INPUT_AUX)||(input_att==INPUT_AC3))
{
bc_inputa=1;
bc_inputb=1;
}
else if(input_att==INPUT_TAPE)
{
bc_inputa=0;
bc_inputb=0;
}
else if(input_att==INPUT_VCD)
{
bc_inputa=1;
bc_inputb=0;
}
else if(input_att==INPUT_DVD)
{
bc_inputa=0;
bc_inputb=1;
}
mach_display();
par[0]=&input_att;
write_abyte(); /*记忆*/
if((input_att==INPUT_AC3)&&(dsp_att!=DSP_NO))
{
tre_bass_restore(); /*恢复进入DSP原先的高低音*/
}
}
/***=========================== 扩音机保护 ===================================***/
/***** 扩音机保护检测及保护处理 ******/
void protect_do(void)
{
uchar i;
uint x;
if (bc_jin==0) /* 0=过载 */
{
peng_flg=0;
bc_jin=1; /* 预置检测口高电平 */
bc_jout=1; /* 继电器控制脚, 1=断开 */
for (i=2; i!=0; i--)
{
china_disp();
}
bc_jout=0; /* 继电器控制脚, 0=合上 */
pub_delay_do(500); /* 停留时间0.3S */
x=0xffff; /* 检测停留时间, 2S */
while (x!=0)
{
if (bc_jin==0) /* 再检测一次 */
{
bc_jout=1; /* 继电器控制脚, 1=断开!!! */
while(1) /* 循环走屏"TURN OFF" ****************/
{
string_scr_step=55;
china_scroll();
}
}
dog_main=DOG_MAIN; /* 恢复main看门狗计数数 */
x--;
}
}
}
/**************做出厂设置*******************************/
void setmach(void)
{ /***** 做出厂设置 *****/
input_att=INPUT_VCD;
par[0]=&input_att; /* 储存 */
write_abyte(); /*音源选择DVD_LD为输入*/
ch_att=C2_CH;
par[0]=&ch_att; /* 储存 */
write_abyte(); /*2声道*/
tre_val=5;
par[0]=&tre_val; /*高音为0DB*/
write_abyte();
bass_val=5;
par[0]=&bass_val; /*低音为0DB*/
write_abyte();
tre_val_bak=5;
par[0]=&tre_val_bak; /*高音为0DB*/
write_abyte();
bass_val_bak=5;
par[0]=&bass_val_bak; /*低音为0DB*/
write_abyte();
dsp_att=DSP_NO;
par[0]=&dsp_att; /*低音为0DB*/
write_abyte();
mtre_val=4;
par[0]=&mtre_val; /*低音为0DB*/
write_abyte();
mbass_val=4;
par[0]=&mbass_val; /*低音为0DB*/
write_abyte();
mecho_val=14;
par[0]=&mecho_val; /*低音为0DB*/
write_abyte();
mic1_val=14;
mic2_val=14;
par[0]=&mic1_val; /*KALA OK高音*/
write_abyte();
par[0]=&mic2_val; /*KALA OK高音*/
write_abyte();
delay_val=1;
par[0]=&delay_val; /*KALA OK高音*/
write_abyte();
}
/***========================== 检查修正设置 =====================================***/
/*-------------------------------------------------*/
void setup_use(void) /*** 开机的用户状态初始化 ***/
{
par[0]=&input_att; /*输入音源存储地址INPUT_ATT_D*/
read_abyte();
if (par[0]>4) input_att=INPUT_VCD; /* 出错,用出厂默认值 */
else input_att=par[0]; /* 音源输入状态模式属性 */
/************* 各种音量调节值 *****************/
par[0]=&tre_val;
read_abyte();
if (par[0]>10) tre_val=5; /* 出错,用出厂默认值 */
else tre_val=par[0]; /* 读出高音 */
par[0]=&bass_val;
read_abyte();
if (par[0]>10) bass_val=5; /* 出错,用出厂默认值 */
else bass_val=par[0]; /*读出低音 */
/************* 各种音量调节值 *****************/
par[0]=&tre_val_bak;
read_abyte();
if (par[0]>10) tre_val_bak=5; /* 出错,用出厂默认值 */
else tre_val_bak=par[0]; /* 读出高音 */
par[0]=&bass_val_bak;
read_abyte();
if (par[0]>10) bass_val_bak=5; /* 出错,用出厂默认值 */
else bass_val_bak=par[0]; /*读出低音 */
par[0]=&dsp_att;
read_abyte();
if (par[0]>8) dsp_att=DSP_NO; /* 出错,用出厂默认值 */
else dsp_att=par[0]; /*读出DSP */
par[0]=&ch_att;
read_abyte();
if (par[0]>2) ch_att=C2_CH; /*只用一位为标志位*/
else ch_att=par[0]; /*读出5声道或2声道标志位 */
par[0]=&mtre_val;
read_abyte();
if (par[0]>8) mtre_val=4; /*只用一位为标志位*/
else mtre_val=par[0]; /*读出5声道或2声道标志位 */
par[0]=&mbass_val;
read_abyte();
if (par[0]>8) mbass_val=4; /*只用一位为标志位*/
else mbass_val=par[0]; /*读出5声道或2声道标志位 */
par[0]=&mecho_val;
read_abyte();
if (par[0]>20) mecho_val=14; /*只用一位为标志位*/
else mecho_val=par[0]; /*读出5声道或2声道标志位 */
par[0]=&mic1_val;
read_abyte();
if (par[0]>20) mic1_val=14; /*只用一位为标志位*/
else mic1_val=par[0]; /*读出5声道或2声道标志位 */
par[0]=&mic2_val;
read_abyte();
if (par[0]>20) mic2_val=14; /*只用一位为标志位*/
else mic2_val=par[0]; /*读出5声道或2声道标志位 */
par[0]=&delay_val;
read_abyte();
if (par[0]>3) delay_val=1; /*只用一位为标志位*/
else delay_val=par[0]; /*读出5声道或2声道标志位 */
}
void save_program(void)
{
if(string_num==10)
{
par[0]=&bass_val; /*主音量低音*/
write_abyte();
}
else if(string_num==11)
{
par[0]=&tre_val; /*主音量高音*/
write_abyte();
}
else if(string_num==18)
{
par[0]=&mecho_val; /*KALA OK混响*/
write_abyte();
}
else if(string_num==9)
{
par[0]=&mtre_val; /*KALA OK高音*/
write_abyte();
}
else if(string_num==17)
{
par[0]=&mbass_val; /*KALA OK低音*/
write_abyte();
}
else if(string_num==65)
{
par[0]=&delay_val; /*KALA OK低音*/
write_abyte();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -