📄 main.c
字号:
/*================================= 主函数及公共程序部分 =================================*/
/*===================================== 主函数 =======================================*/
main()
{
uchar i;
bit b_flg;
bit b_cool; /*在冷启动时,ET1=0 */
b_cool=ET1; /* !!!冷启动检测位 */
pub_delay_do(50); /* 延时0.1S时间, 按键去抖 */
b_close_mach=1;
test_c=0;
/*********************** CPU 硬件初始化 *******************************/
PSW=0x00;
TMOD=0x11; /* #00010001B, T1=mode1 T0=mode1 */
TCON=0x00;
TL1=0x25; /* TIME1=500/sec */
TH1=0xfa;
IP=0x08; /* #00001000B, time1 为最高优先级 */
IE=0x88; /* #10001000B, 打开 time1 中断 */
TR1=1; /* open time1 */
/***********************************************************************/
if (b_cool==0) /*软件看门狗溢出标志字节b_cool=0*/
{
/* 冷启动的处理 */
setup_6311(); /* 初始荧光屏 */
tsetup_6311(); /* 初始荧光屏 */
mute_enable(); /***** 静音62446******/
}
rkey_speed=0; /* 遥控连发灵敏度计数 */
rkey_keep=0; /*遥控按键连发保持时间*/
timeu=DEL_TIMEU; /* 重置, 系统时间单位计数数 */
b_timeu=0;
old_key=0; /* 旧键值寄存 */
b_mute=0; /* 1=扩音机静音 */
/****************************************/
setup_6311(); /* 初始荧光屏 */
tsetup_6311(); /* 初始荧光屏 */
mic1_val=1;
mic2_val=1;
mtre_val=4;
mbass_val=4;
m62421_do();
pub_delay_do(60); /* 延时0.1S时间, 按键去抖 */
/******** 检测24c01, 是否新机, 是->做出厂默认设置 *********/
dog_time0=DOG_TIME0; /* 恢复time0看门狗计数数 */
dog_main=DOG_MAIN; /* 恢复main看门狗计数数 */
par[0]=&a24_start;
read_abyte(); /* 从地址par[0], 读出一数据par[0] */
if (par[0]!=0xae) /*AEH为24C01第一次运行标志*/
{
par[0]=&a24_start; /*第一次运行标志存储地址*/
a24_start=0xae;
write_abyte(); /* 写一数据(20ms),par[0]=地址, PAR[1]=写入数 */
setmach(); /***** 做出厂设置 *****/
}
else
{
setup_use(); /*** 开机的用户状态初始化 ***/
}
restore(); /*恢复原先的数据*/
if (b_cool==0) /*软件看门狗溢出标志字节b_cool=0*/
{
/* 冷启动的处理 */
start_dis(); /*冷启动, 开机走屏显示 */
}
/*如果为上电复位则把b_cool设置为AAH*/
if (b_cool==0) /*软件看门狗溢出标志字节w_d=aah*/
{
/* 冷启动的处理 */
master_val=0;
sr_val=0;
sl_val=0;
cen_val=0;
sys_cont=20;
sys_start=1;
get_peng_flg=0;
auto_select_flg=1;
input_att_bak=input_att;
auto_cout=AUTO_COUNT1;
}
else start_intmute(); /* 临时静音启动 */
/***** 设置音源开关 *****/
b_rkey=0;
mach_display();
bc_4051a=1; /*+2.7db*/
bc_4051b=0;
bc_4051c=1;
adpro_num=5;
b_auto_disp=0; /*自动频谱*/
singal_time=0; /*2002-07-31 01:11PM*/
ton_num = 0;
lrk_del = 0;
/**************************** 主循环 **********************************/
while(1)
{
dog_main=DOG_MAIN; /* 恢复main看门狗计数数 */
dog_time0--; /* 监控time0 */
if (dog_time0==0) reset(); /*主程序看门狗复位 机器复位 */
bc_mic=1;
if((sys_start==0)&&(auto_select_flg==0)) mic_det();
bc_okmute=b_mic;
/***** 防止误认其它的遥控连发信号 *****/
if (b_timeu) /* 用时间单位计时 */
{
if (rkey_keep!=0) rkey_keep--; /* 是否到时? */
else rkey_num=0xae; /* (无键标识) */
}
setup_6311(); /* 初始荧光屏 !!!!! */
dim_vfd(); /* 打开荧光显示 */
tsetup_6311(); /* 初始荧光屏 */
tdim_vfd(); /*清除11格,17段数据显示(清荧光屏) */
auto_source_select(); /*自动音源选择*/
protect_do();
//tmp if((b_close_mach)&&(auto_select_flg==0)) input_det();
if((b_close_mach)&&(auto_select_flg==0)) read_lr_key();
if(adpro_delay<50) adpro_delay++; /*多长时间没有频谱,则显示音源输入*/
else adpro_delay=0;
/*****************************/
if(add_delay!=0) add_delay--;
if(add_delay==0)
{
if(auto_select_flg==0)
{
adpro_add_display();
}
}
/*****************************/
timeu_do(); /* 延时时间单位-- 计时程序 */
sys_start_do();
//tmp if((b_close_mach)&&(auto_select_flg==0)) input_det();
if(b_mute==0) string_refdo(); /*机器静音状态下不刷新 各种字符串显示方式的执行 */
/*有一通道旧值与新值相等时,再进行频谱检测*/
if((b_mute==0)&&(sys_start==0)&&(string_att==STRING_MACH)&&(auto_select_flg==0))
{
adpro();
b_flg=0;
for(i=0;i<8;i++)
{
if(ad_in[i]!=0) /*测到有频谱,b_flg=1*/
{
b_flg=1;
test_c=0; /*2002-07-31 11:36AM !!!*/
break;
}
} /*代替以下语句可节省11字节*/
if(b_flg)
{
if(b_close_mach==0)
{
if(b_rkey_close) /*=0为按键关机,=1为自动关机*/
{
if(singal_time<6) singal_time++;
else
{
singal_time=0; /*2002-07-31 01:11PM*/
close_mach();
}
}
}
peng_flg=1;
adpro_screen_delay=0;
adpro_delay=2;
}
else
{
singal_time=0; /*2002-07-31 01:11PM*/
if(adpro_delay==1)
{
adpro_screen_delay++; /*没有音源输入,显示音源输入次数大于3则走屏显示*/
if(adpro_screen_delay<10) //3
{
mach_display();
}
else
{
screen_num=0;
string_scr_step=125;
if(b_close_mach) input_data_scroll();
adpro_screen_delay=0;
if(b_mic==0) /*在插咪状态下不关机*/
{
if(b_close_mach)
{
if(test_c<13) test_c++; /*test_c<13 多长时间没有频谱则自动关机*/
else
{
test_c=0;
close_mach();
b_rkey_close=1; /*=0为按键关机,=1为自动关机*/
}
}
}
}
peng_flg=0;
}
}
}
else peng_flg=0;
/*A/D 转换子程序, 各通道的转换结果刷新,在静音或临时静音状态下不进行频谱采样*/
if(auto_select_flg==0) remote_do(); /* 遥控键主调用程序 */
if(auto_select_flg==0) key_do(); /* 主按键调用程序 */
setup_6311(); /* 初始荧光屏 !!!!! */
dim_vfd(); /* 打开荧光显示 */
tsetup_6311(); /* 初始荧光屏 */
tdim_vfd(); /*清除11格,17段数据显示(清荧光屏) */
intmute_do(); /***** 临时静音延时处理 *******/
dog_time0=DOG_TIME0; /*2002-08-05 11:15AM 恢复time0看门狗计数数 */
dog_main=DOG_MAIN; /*2002-08-05 11:15AM 恢复main看门狗计数数 */
//tmp if((b_close_mach)&&(auto_select_flg==0)) input_det();
if((b_close_mach)&&(auto_select_flg==0)) fresh_mvol(); /*主音量控制,由主程序调用*/
if((peng_flg)&&(b_mute==0)&&(sys_start==0)&&(auto_select_flg==0)) video_compare(); /*频谱比较*/
if((peng_flg)&&(display_num==5)||(display_num==6)||(display_num==7)) peng_top();
if(peng_flg) auto_display();
display_do(); /* VFD的总显示函数 */
//temp if((b_close_mach)&&(auto_select_flg==0)) input_select(); /*输入选择控制电平*/
led_control();
fresh_input(); /*不停地刷新输入选择!!2002-08-05 11:14AM*/
}
}
/*************************************/
void adpro_add_display(void) /*频谱增益自动调节0,7*/
{
uchar i;
bit b_da_7=1,b_xi_4=1,b_de_0=1;
for(i=0;i<8;i++)
{
if(ad_in[i]<8) /*ad_in[i]中只要有一个小于8则B_DA_7=0*/
{
b_da_7=0;
break;
}
}
add_delay=0x15;
if(b_da_7)
{
if(adpro_num!=0) adpro_num--;
add_delay=0x15;
}
for(i=0;i<8;i++)
{
if(ad_in[i]>3) /*ad_in[i]中只要有一个小于8则b_xi_4=0*/
{
b_xi_4=0;
break;
}
}
if(b_xi_4)
{
if(adpro_num<7) adpro_num++;
add_delay=0x15;
}
par[0]=adpro_num;
bc_4051b=par0_1;
bc_4051a=par0_0;
bc_4051c=par0_2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -