📄 av_n5088.c
字号:
/**************** C语言6个文件,汇编6个文件***********************************/
#pragma debug code nointvector objectextend
#pragma optimize(5)
#pragma optimize(size)
#pragma registerbank(0)
#pragma regparms
#pragma small /*SMALL默认存储类型为DATA(直接寻址)*/
#pragma lc /*列表*/
/*C51编译器控制指令: *************************/
/*DEBUG指令指示编译器将调试信息加入到目标文件中*/
/*OBJECTEXTEND指令使编译器产生的目标文件包含附加的变量类型定义信息*/
/*OPTIMIZE(SIZE)优化重点是放在代码长度上*/
/*SMALL所有函数和过程变量及局部数据段被定义在8051系统内部数据存贮器,默认存贮类型为DATA*/
/*REGISTERBANK指令选择调用时使用的寄存器组,除非使用"USING"标志*/
/* 缺省变量、过程变量位于内部存储器!!!, 但指针要说明指向的存储器属性
如: uchar data *p --- 说明指针p指向内部存储器(data) */
#include <reg52.h> /*包含的头文件*/
#define uchar unsigned char /*缩写定义*/
#define uint unsigned int
#define ulong unsigned long /*SMALL默认存储类型为DATA(直接寻址)*/
/************* 自由参数区 ***************/
uchar bdata par[4]; /*BDATA,可位寻址片内数据存贮区,允许位与字节混合访问20H-2FH*/
/* par[0] -- PAR
par[1] -- PAR+01H
par[2] -- PAR+02H
par[3] -- PAR+03H */
sbit par0_0=par[0]^0;
sbit par0_1=par[0]^1;
sbit par0_2=par[0]^2; /*定义数组的位变量*/
sbit par0_3=par[0]^3;
sbit par0_4=par[0]^4;
sbit par0_5=par[0]^5;
sbit par0_6=par[0]^6;
sbit par0_7=par[0]^7; /*定义数组的位变量*/
sbit par1_0=par[1]^0;
sbit par1_1=par[1]^1;
sbit par1_2=par[1]^2; /*定义数组的位变量*/
sbit par1_3=par[1]^3;
sbit par1_4=par[1]^4;
sbit par1_5=par[1]^5;
sbit par1_6=par[1]^6; /*定义数组的位变量*/
sbit par1_7=par[1]^7;
sbit par2_0=par[2]^0;
sbit par2_1=par[2]^1;
sbit par2_2=par[2]^2; /*定义数组的位变量*/
sbit par2_3=par[2]^3;
sbit par2_4=par[2]^4;
sbit par2_5=par[2]^5;
sbit par2_6=par[2]^6; /*定义数组的位变量*/
sbit par2_7=par[2]^7;
sbit par3_0=par[3]^0;
sbit par3_1=par[3]^1;
sbit par3_2=par[3]^2; /*定义数组的位变量*/
sbit par3_3=par[3]^3;
sbit par3_4=par[3]^4;
sbit par3_5=par[3]^5;
sbit par3_6=par[3]^6;
sbit par3_7=par[3]^7; /*定义数组的位变量*/
/*SBIT定义要求基址对象的存贮类型为"BDATA",或特殊功能寄存器的位*/
/*一般位定义为"BIT",这位也位于20H-2FH中*/
/*============================= 汇编程序定义 ==================================*/
/*====================== 公共变量定义,函数声明 ================================*/
uchar dog_time0; /* time0中断的看门狗计数数 */
uchar dog_main; /* main的看门狗计数数 */
#define DOG_TIME0 50 /* 允许time0的最长的停顿时间, 0.5S */
#define DOG_MAIN 0xff /* 允许main的最长的停顿时间, 0.5S */
extern void reset(void); /*** 机器复位 ***/
bit b_timeu; /* 1=1个时间单位到位, 多任务式 */
uchar timeu; /* 循环方式延时的--时间单位计数 */
void timeu_do(void); /* 延时时间单位-- 计时程序 */
#define DEL_TIMEU 5 /*5 一般时间单位=0.1S, 这个时间要准, 很多延时是用它作基准的!!! */
void pub_delay_do(uint);
/* 共用延时函数, 非多任务的, 参数为需要的延时时间,
(每时间单位=1ms), 即当参数=100时, 延时0.1S */
/****************************** 扩音机个控制量部分 *****************************/
bit b_mute; /* 1=扩音机静音标志 */
bit b_intmute; /* 内部临时静音, 置1=开始临时静音, 时间到恢复, 清0 */
uchar intmute; /* 临时静音的保持时间计时数 */
#define INTMUTE 25 /* 临时静音的保持时间, 200ms */
void start_intmute(void); /* 临时静音启动 */
void intmute_do(void); /* 临时静音延时处理 (多任务) */
uchar sys_cont;
#define SYS_COUNT 3 /*DVD_LD音源输入*/
bit sys_start; /*系统启动标志*/
void sys_start_do(void); /*开机音量从0增加到上次关机前的记忆值*/
void input_control(void); /*音源输入选择*/
uchar input_att; /*********** 音源输入状态模式属性 ***********/
#define INPUT_DVD 0 /*VCD音源输入*/
#define INPUT_VCD 1 /*CD音源输入*/
#define INPUT_TAPE 2 /*AUX音源输入*/
#define INPUT_AUX 3
#define INPUT_AC3 4 /*AC3音源输入*/
uchar ch_att; /*********** 通道模式属性 ***********/
#define C2_CH 0
#define C3_CH 1
#define C5_CH 2
bit b_lound;
void key_lound(void);
uchar display_num; /*频谱显示样式变化*/
void mach_display(void);
void balan_display(void);
void ch_select(void);
/***** 扩音机保护检测及保护处理 ******/
void protect_do(void);
void protect_dis(void);
void turn_off_dis(void);
/************* 各种音量调节值 *****************/
uchar idata input_att_bak;
uchar master_val; /*主音量, 0-80DB*/
uchar cen_val; /*中置音量,-10-+10DB*/
uchar sl_val; /*环绕右音量,-10-+10DB*/
uchar sr_val; /*环绕左音量,-10-+10DB*/
uchar tre_val; /*高音量,0-10DB*/
uchar bass_val; /*低音量,0-10DB*/
uchar balan_val; /*平衡量,0-32格,0=L(-16db),16=L=R(0db),32=R(-16db)*/
uchar tre_val_bak; /*高音量,为恢复DSP之用0-10DB*/
uchar bass_val_bak; /*低音量,为恢复DSP之用0-10DB*/
uchar mecho_val; /*KALA OK混响控制*/
uchar mic1_val;
uchar mic2_val; /*KALA OK音量1*/
uchar mtre_val; /*KALA OK音调*/
uchar mbass_val; /*KALA OK音量1*/
uchar delay_val; /*KALA OK音量1*/
uchar ok_mode; /*kala ok定制*/
void key_ok_mode(void);
uchar dim_num;
bit b_dim_disp;
bit b_close_mach; /*=0为关机,=1为开机*/
void close_mach(void);
/*输入选择控制电平*/
void input_select(bit lr_flag);
extern void send_62421(void);
/* 写M62446
参数1: PAR 高8位数据
参数2: PAR+01H 低8位数据 */
void m62421_do(void);
/* MIC音频的音量、音调数据输出处理(IC: M62421) */
void fresh_mvol(void); /*主音量控制,由主程序调用*/
extern void send_62446(void);
/* 写M62446
写入数据为16位 (高字节 DF DE DD DC DB DA D9 D8, 低字节 D7 D6 D5 D4 D3 D2 D1 D0)
参数1: PAR 写的高8位数据
参数2: PAR+01H 写的低8位数据 */
void audio_m62446_do(void);
/* 音频的音量、音调数据输出处理(IC: M62446) */
void tab_bar_do1(uchar);
/***** 静音62446******/
void mute_enable(void); /*M62446及KALA OK静音控制*/
/**** 声音音量、音调等参数刷新输出处理 *****/
void audio_ref(void);
void m62446_mute(void); /*M62446静音*/
void tre_bass_do(void);
uchar dsp_att; /************ DSP现场音效模式属性 ********************/
#define DSP_NO 0 /* 无 */
#define DSP_LIVE 1 /* ROCK */
#define DSP_CLAS 2 /* LIVE */
#define DSP_HALL 3 /* JAZZ */
#define DSP_POPS 4 /* HALL */
#define DSP_DISCO 5 /* POPS */
#define DSP_MATR 6 /* DISCO */
uchar ton_num;
#define VOL_F 0 /*主音量有效*/
#define TRE_F 1 /*高音有效*/
#define BASS_F 2 /*低音有效*/
#define BAL_F 3 /*平衡有效*/
#define CEN_F 4 /*中置有效*/
#define SL_F 5 /*左环绕有效*/
#define SR_F 6 /*右环绕有效*/
#define MIC1_F 7 /*KALA OK1音量有效*/
#define MIC2_F 8 /*KALA OK2音有效*/
#define MTRE_F 9 /*KALA OK高音有效*/
#define MBASS_F 10 /*KALA OK低音有效*/
#define MECHO_F 11 /*KALA OK混响*/
#define DELAY_F 12 /*KALA OK混响*/
#define DIM_F 13 /*KALA OK低音有效*/
#define VFD_F 14 /*KALA OK混响*/
bit b_bal_vol;
void key_vol_select(void);
void key_mic_select(void);
bit mbass_tre_flg; /*=0 mbass =1 mtre*/
void adj_display(void);
void echo_display(void);
void delay_display(void);
void dsp_tone_do(void);
/*DSP音调处理,M62446音调*/
/******** A/D(16级)转换变量,最小值=0,检测不到时的值=0x10 *********/
/************* 自由参数区 ***************/
uchar ad_in[8]; /*自动音源选择子程序要用到8个单元变量!!!!!!*/
/*l,c,r 左中右频谱*/
/*uchar ad_in_disp[8]; 实时频谱显示ad_in[0]=l,ad_in[1]=r,ad_in[2]=s,ad_in[3]=c */
uchar ad_disp_line[25]; /*频谱顶点保留*/
bit b_auto_disp; /*自动频谱*/
void auto_display(void);
void peng_top(void); /*频谱顶点保留*/
uchar ad_delay; /*延时一下*/
uchar pot_test; /*延时处理,经过多少次主程序(顶点保留时间长度)*/
bit b_test; /*=1自动频谱显示,=0实时采集频谱*/
uchar test; /*每一次改变一路频谱*/
uchar test_c; /*多长时间没有频谱则自动关机*/
bit b_rkey_close; /*=0为按键关机,=1为自动关机*/
void video_compare(void); /*新旧频谱比较*/
/************** 咪侦察处理 ******************/
extern void adpro(void); /*汇编子程序*/
/* A/D 转换子程序, 调用该程序一次, 各通道的转换结果刷新一次 */
/***************************** 第一片VFD(6311) 显示部分 ******************************/
#define DIG13 0xc0 /*OK DIG14 address */
#define DIG12 0xc3 /*OK DIG13 address */
#define DIG11 0xc6 /*OK DIG12 address */
#define DIG10 0xc9 /*OK DIG11 address */
#define DIG9 0xcc /* DIG10 address */
#define DIG8 0xcf /* DIG9 address */
#define DIG7 0xd2 /* DIG8 address */
#define DIG6 0xd5 /* DIG7 address */
#define DIG5 0xd8 /* DIG6 address */
#define DIG4 0xdb /* DIG5 address */
#define DIG3 0xde /* DIG4 address */
#define DIG2 0xe1 /* DIG3 address */
#define DIG1 0xe4 /* DIG2 address */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -