📄 m61538.lst
字号:
C51 COMPILER V7.20 M61538 06/30/2005 14:02:58 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE M61538
OBJECT MODULE PLACED IN M61538.OBJ
COMPILER INVOKED BY: C:\Keil51\C51\BIN\c51.exe M61538.C DB OE SMALL ROM(LARGE)
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
28 1 if( ALLCH_Vol == VolumeChannel )
29 1 {
30 2 ALL_Volume = (WORD)((ALL_VolumeChange[FL_Volume]) << 9) + (WORD)((ALL_VolumeChange[FR_Volume]) << 2);
31 2 M61538_Tune_Timing(ALL_Volume);
32 2 ALL_Volume = (WORD)((ALL_VolumeChange[Center_Volume]) << 9) + (WORD)((ALL_VolumeChange[BASS_Volume]) <<
-2) | 0x1;
33 2 M61538_Tune_Timing(ALL_Volume);
34 2 ALL_Volume = (WORD)((ALL_VolumeChange[SL_Volume]) << 9) + (WORD)((ALL_VolumeChange[SR_Volume]) << 2) | 0
-x2;
35 2 M61538_Tune_Timing(ALL_Volume);
36 2 }
37 1 else if(BASSCEN_Vol== VolumeChannel)
38 1 {
39 2 ALL_Volume = (WORD)((ALL_VolumeChange[Center_Volume]) << 9) + (WORD)((ALL_VolumeChange[BASS_Volume]) <<
-2) | 0x1;
40 2 _nop_();
41 2 M61538_Tune_Timing(ALL_Volume);
42 2 }
43 1 else if(FLR_Vol == VolumeChannel)
44 1 {
45 2 ALL_Volume = (WORD)((ALL_VolumeChange[FL_Volume]) << 9) + (WORD)((ALL_VolumeChange[FR_Volume]) << 2);
46 2 M61538_Tune_Timing(ALL_Volume);
47 2 }
48 1 else if(SLR_Vol == VolumeChannel)
49 1 {
50 2 ALL_Volume = (WORD)((ALL_VolumeChange[SL_Volume]) << 9) + (WORD)((ALL_VolumeChange[SR_Volume]) << 2) | 0
-x2;
51 2 M61538_Tune_Timing(ALL_Volume);
C51 COMPILER V7.20 M61538 06/30/2005 14:02:58 PAGE 2
52 2 }
53 1 //发送音量值
54 1
55 1
56 1 }
57 void M61538_Tune_Timing(WORD Volume_Set)
58 {
59 1 BYTE Volume_i;
60 1
61 1 CLEAR_M61538_CLK;
62 1 CLEAR_M61538_DATA;
63 1
64 1 Delay5US();
65 1 for(Volume_i = 0; Volume_i < 16; Volume_i++)
66 1 {
67 2 if(Volume_Set & 0x8000)
68 2 SET_M61538_DATA;
69 2 else
70 2 CLEAR_M61538_DATA;
71 2 Delay5US();
72 2 SET_M61538_CLK;
73 2 Delay5US();
74 2 if( Volume_i < 15)
75 2 CLEAR_M61538_DATA;
76 2 else
77 2 SET_M61538_DATA;
78 2 Delay5US();
79 2 CLEAR_M61538_CLK;
80 2 Delay5US();
81 2 Volume_Set <<= 1;
82 2 }
83 1
84 1
85 1 }
86
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 285 ----
CONSTANT SIZE = 61 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -