⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 av_n5088.c

📁 完整功放的控制程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/**************** 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 + -