📄 m61538.lst
字号:
C51 COMPILER V7.20 M61538 07/16/2005 13:42:41 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE M61538
OBJECT MODULE PLACED IN ..\output\M61538.obj
COMPILER INVOKED BY: C:\Keil51\C51\BIN\C51.EXE ..\source\Audio\M61538.C BROWSE DEBUG OBJECTEXTEND CODE PRINT(..\output\M
-61538.lst) OBJECT(..\output\M61538.obj)
line level source
1 #include "reg52.h"
2 #include "intrins.h"
3 #include "..\..\inc\globedef.h"
4 #include "..\..\inc\M61538.h"
5 #include "..\..\inc\delay.h"
6
7 /*========================================================================
8 音量转换函数,将音量的0~60等级转换成具体写入到M61538的音量
9 在前0~12之间一档增加4个DB, 后面一个档增加一个DB
10 ========================================================================*/
11 code BYTE ALL_VolumeChange[] =
12 {
13 96,
14 95, 91, 87, 83, 79, 75, 71, 67, 63, 59,
15 55, 51, 47, 46, 45, 44, 43, 42, 41, 40,
16 39, 38, 37, 36, 35, 34, 33, 32, 31, 30,
17 29, 28, 27, 26, 25, 24, 23, 22, 21, 20,
18 19, 18, 17, 16, 15, 14, 13, 12, 11, 10,
19 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
20 };
21 /*========================================================================
22 音量调节函数,调整由M61538控制的6个通道的整体音量
23 ========================================================================*/
24 void Volume_Tune(BYTE VolumeChannel)
25 {
26 1 WORD ALL_Volume;
27 1 BYTE VOL_TEMPH;
28 1 BYTE VOL_TEMPL;
29 1 if( ALLCH_Vol == VolumeChannel )
30 1 {
31 2 VOL_TEMPH = VOLUME_CHANNEL[FrontL_VOLUME];
32 2 VOL_TEMPL = VOLUME_CHANNEL[FrontR_VOLUME];
33 2 ALL_Volume = (WORD)((ALL_VolumeChange[VOL_TEMPH]) << 9) + (WORD)((ALL_VolumeChange[VOL_TEMPL]) << 2);
34 2 M61538_Tune_Timing(ALL_Volume);
35 2
36 2 VOL_TEMPH = VOLUME_CHANNEL[CENTER_VOLUME];
37 2 VOL_TEMPL = VOLUME_CHANNEL[SUBWOOFER_VOLUME];
38 2 ALL_Volume = (WORD)((ALL_VolumeChange[VOL_TEMPH]) << 9) + (WORD)((ALL_VolumeChange[VOL_TEMPL]) << 2) | 0
-x1;
39 2 M61538_Tune_Timing(ALL_Volume);
40 2
41 2 VOL_TEMPH = VOLUME_CHANNEL[SURROUNDL_VOLUME];
42 2 VOL_TEMPL = VOLUME_CHANNEL[SURROUNDR_VOLUME];
43 2 ALL_Volume = (WORD)((ALL_VolumeChange[VOL_TEMPH]) << 9) + (WORD)((ALL_VolumeChange[VOL_TEMPL]) << 2) | 0
-x2;
44 2 M61538_Tune_Timing(ALL_Volume);
45 2 }
46 1 else if(BASSCEN_Vol== VolumeChannel)
47 1 {
48 2 VOL_TEMPH = VOLUME_CHANNEL[CENTER_VOLUME];
49 2 VOL_TEMPL = VOLUME_CHANNEL[SUBWOOFER_VOLUME];
50 2 ALL_Volume = (WORD)((ALL_VolumeChange[VOL_TEMPH]) << 9) + (WORD)((ALL_VolumeChange[VOL_TEMPL]) << 2) | 0
-x1;
51 2 M61538_Tune_Timing(ALL_Volume);
C51 COMPILER V7.20 M61538 07/16/2005 13:42:41 PAGE 2
52 2 }
53 1 else if(FLR_Vol == VolumeChannel)
54 1 {
55 2 VOL_TEMPH = VOLUME_CHANNEL[FrontL_VOLUME];
56 2 VOL_TEMPL = VOLUME_CHANNEL[FrontR_VOLUME];
57 2 ALL_Volume = (WORD)((ALL_VolumeChange[VOL_TEMPH]) << 9) + (WORD)((ALL_VolumeChange[VOL_TEMPL]) << 2);
58 2 M61538_Tune_Timing(ALL_Volume);
59 2 }
60 1 else if(SLR_Vol == VolumeChannel)
61 1 {
62 2 VOL_TEMPH = VOLUME_CHANNEL[SURROUNDL_VOLUME];
63 2 VOL_TEMPL = VOLUME_CHANNEL[SURROUNDR_VOLUME];
64 2 ALL_Volume = (WORD)((ALL_VolumeChange[VOL_TEMPH]) << 9) + (WORD)((ALL_VolumeChange[VOL_TEMPL]) << 2) | 0
-x2;
65 2 M61538_Tune_Timing(ALL_Volume);
66 2 }
67 1 //发送音量值
68 1
69 1
70 1 }
71 void M61538_Tune_Timing(WORD Volume_Set)
72 {
73 1 BYTE Volume_i;
74 1
75 1 CLEAR_M61538_CLK;
76 1 CLEAR_M61538_DATA;
77 1
78 1 Delay5US();
79 1 for(Volume_i = 0; Volume_i < 16; Volume_i++)
80 1 {
81 2 if(Volume_Set & 0x8000)
82 2 SET_M61538_DATA;
83 2 else
84 2 CLEAR_M61538_DATA;
85 2 Delay5US();
86 2 SET_M61538_CLK;
87 2 Delay5US();
88 2 if( Volume_i < 15)
89 2 CLEAR_M61538_DATA;
90 2 else
91 2 SET_M61538_DATA;
92 2 Delay5US();
93 2 CLEAR_M61538_CLK;
94 2 Delay5US();
95 2 Volume_Set <<= 1;
96 2 }
97 1
98 1
99 1 }
100
C51 COMPILER V7.20 M61538 07/16/2005 13:42:41 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _Volume_Tune (BEGIN)
; SOURCE LINE # 24
0000 8F00 R MOV VolumeChannel,R7
; SOURCE LINE # 25
; SOURCE LINE # 29
0002 E500 R MOV A,VolumeChannel
0004 7058 JNZ ?C0001
; SOURCE LINE # 30
; SOURCE LINE # 31
0006 850000 R MOV VOL_TEMPH,VOLUME_CHANNEL+01H
; SOURCE LINE # 32
0009 850000 R MOV VOL_TEMPL,VOLUME_CHANNEL+02H
; SOURCE LINE # 33
000C E500 R MOV A,VOL_TEMPL
000E 900000 R MOV DPTR,#ALL_VolumeChange
0011 93 MOVC A,@A+DPTR
0012 75F004 MOV B,#04H
0015 A4 MUL AB
0016 AEF0 MOV R6,B
0018 FD MOV R5,A
0019 AC06 MOV R4,AR6
001B E500 R MOV A,VOL_TEMPH
001D 93 MOVC A,@A+DPTR
001E 25E0 ADD A,ACC
0020 FE MOV R6,A
0021 E4 CLR A
0022 2D ADD A,R5
0023 F500 R MOV ALL_Volume+01H,A
0025 EE MOV A,R6
0026 3C ADDC A,R4
0027 F500 R MOV ALL_Volume,A
; SOURCE LINE # 34
0029 AF00 R MOV R7,ALL_Volume+01H
002B FE MOV R6,A
002C 120000 R LCALL _M61538_Tune_Timing
; SOURCE LINE # 36
002F 850000 R MOV VOL_TEMPH,VOLUME_CHANNEL+04H
; SOURCE LINE # 37
0032 850000 R MOV VOL_TEMPL,VOLUME_CHANNEL+03H
; SOURCE LINE # 38
0035 E500 R MOV A,VOL_TEMPL
0037 900000 R MOV DPTR,#ALL_VolumeChange
003A 93 MOVC A,@A+DPTR
003B 75F004 MOV B,#04H
003E A4 MUL AB
003F AEF0 MOV R6,B
0041 FD MOV R5,A
0042 AC06 MOV R4,AR6
0044 E500 R MOV A,VOL_TEMPH
0046 93 MOVC A,@A+DPTR
0047 25E0 ADD A,ACC
0049 FE MOV R6,A
004A E4 CLR A
004B 2D ADD A,R5
004C FF MOV R7,A
004D EE MOV A,R6
004E 3C ADDC A,R4
004F F500 R MOV ALL_Volume,A
0051 EF MOV A,R7
C51 COMPILER V7.20 M61538 07/16/2005 13:42:41 PAGE 4
0052 4401 ORL A,#01H
0054 F500 R MOV ALL_Volume+01H,A
; SOURCE LINE # 39
0056 FF MOV R7,A
0057 AE00 R MOV R6,ALL_Volume
0059 120000 R LCALL _M61538_Tune_Timing
; SOURCE LINE # 41
; SOURCE LINE # 42
; SOURCE LINE # 43
; SOURCE LINE # 44
; SOURCE LINE # 45
005C 8061 SJMP ?C0017
005E ?C0001:
; SOURCE LINE # 46
005E E500 R MOV A,VolumeChannel
0060 6402 XRL A,#02H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -