📄 halvol.lst
字号:
C51 COMPILER V8.01 HALVOL 04/17/2008 09:46:20 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE HALVOL
OBJECT MODULE PLACED IN .\Debug\halvol.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mp3ctrl\halvol.c LARGE OPTIMIZE(9,SIZE) NOINTPROMOTE INCDIR(.\common;.\e2pr
-om;.\file;.\fmtx;.\ir;.\keyboard;.\lcm;.\led;.\main;.\matrixkey;.\mp3ctrl;.\sd;.\usbhost;.\include;.\lib) DEBUG OBJECTEX
-TEND PRINT(.\Debug\halvol.lst) OBJECT(.\Debug\halvol.obj)
line level source
1 /****************************************************************
2 * Viaon Technology (Suzhou) Co.,Ltd
3 *
4 * Copyright 2007, Viaon Technology (Suzhou) Co.,Ltd,Suzhou,China
5 * All rights reserved.
6 *
7 *
8 * Filename: halvol.c
9 *
10 * Programmer: Greg
11 *
12 * Created: 1/2/2008
13 *
14 * Description: public functions
15 *
16 *
17 * Change History (most recent first): 2008.1.2
18 ****************************************************************/
19 #include "utiltypedef.h"
20 #include "va4010reg.h"
21 #include "va4010regsdk.h"
22 #include "common.h"
23 #include "timer.h"
24 #include "4010ui.h"
25 #include "halmp3dec.h"
26 #include "halir.h"
27 #include "halvol.h"
28
29 //This is the virtual volume level which has nothing to do with the Volume register.
30 static BYTE data s_VolLevel;
31 //This variable will be used during volume smooth. (s_VolLevel --> 0 --> s_VolLevel)
32 static BYTE data s_VolSmth;
33 //This variable is the status of volume smooth FSM.
34 static BYTE data s_VolSmthSta;
35
36 //Volume map: volume level --> the value for volume register.
37 #if 0
static BYTE VolMap[VOLLEVEL_MAX + 1]={
0x12,//mute
0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,//down
//0x11, 0x12, //up
};
#endif
46
47 ////////////////////////////
48 //This functin just set the volume register according the input parameter.
49 static void _halVolRegSet(BYTE bVol)
50 {
51 1 #if 0
//Here set the Volume register
if(bVol == 0){
C51 COMPILER V8.01 HALVOL 04/17/2008 09:46:20 PAGE 2
MP3_MUTE_ENABLE();
}else{
MP3_MUTE_DISABLE();
Volume = VolMap[bVol];
}
#else
60 1 if(bVol == 0){
61 2 UartOutText("----MUTE_HW----\r\n");
62 2 MP3_MUTE_ENABLE();
63 2 MUTE_HW();
64 2 DelayMs(200);
65 2 DelayMs(200);
66 2 //DelayMs(200);
67 2 //DelayMs(200);
68 2 //DelayMs(200);
69 2 }else if(bVol > 2){
70 2 UartOutText("----MP3_MUTE_DISABLE()----\r\n");
71 2 MP3_MUTE_DISABLE();
72 2 Volume = 0x10 - bVol;
73 2 }
74 1
75 1 #endif
76 1
77 1 UartOutText("-I-: Volume Level 0x");UartOutValue(bVol, 2);
78 1 // UartOutText("-I-: s_VolLevel 0x");UartOutValue(s_VolLevel, 2);
79 1 // UartOutText("-I-: s_VolSmth 0x");UartOutValue(s_VolSmth, 2);
80 1
81 1 return;
82 1 }
83
84
85 /////////////API////////
86 //This function will init the volume control module.
87 // 1. Init variables of volume control module.
88 // 2. Set volume register with default volume level
89 void halVolInit(void)
90 {
91 1 //s_VolLevel = VOLLEVEL_DEFAULT;
92 1 //s_VolSmth = 0;
93 1 s_VolSmthSta = SMOOTH_CAUSE_IDLE;
94 1
95 1 //_halVolRegSet(s_VolLevel);
96 1 halVolSet(VOLLEVEL_DEFAULT);
97 1
98 1 return;
99 1 }
100
101 BYTE halVolGet(void)
102 {
103 1 return s_VolLevel;
104 1 }
105
106 void halVolSet(BYTE bVol)
107 {
108 1 s_VolLevel = bVol;
109 1
110 1 //Here set the Volume register
111 1 _halVolRegSet(bVol);
112 1
113 1 return;
114 1 }
115
C51 COMPILER V8.01 HALVOL 04/17/2008 09:46:20 PAGE 3
116 //This function will increament the volume level according s_VolLevel/s_VolSmth.
117 // 1. In SMOOTH_CAUSE_VOLUP status, accroding to the s_VolSmth.
118 // 2. Otherwise according the s_VolLevel
119 BYTE halVolUp(void)
120 {
121 1 BYTE *bpVol = &s_VolLevel; //Current volume level
122 1
123 1 if(s_VolSmthSta == SMOOTH_CAUSE_VOLUP) //Volume up
124 1 {
125 2 bpVol = &s_VolSmth;
126 2 if(*bpVol > 3)
127 2 {
128 3 UartOutText("----DISMUTE_HW----\r\n");
129 3 DISMUTE_HW();
130 3 }
131 2 }
132 1 if(*bpVol < VOLLEVEL_MAX){
133 2 *bpVol = *bpVol + 1;
134 2 }
135 1
136 1 _halVolRegSet(*bpVol);
137 1
138 1 return *bpVol;
139 1 }
140
141 //This function will decrease the volume level according s_VolLevel/s_VolSmth.
142 // 1. In SMOOTH_CAUSE_VOLDOWN status, accroding to the s_VolSmth.
143 // 2. Otherwise according the s_VolLevel
144 BYTE halVolDown(void)
145 {
146 1 BYTE data bStep = VOL_DOWN_STEP;
147 1 BYTE *bpVol = &s_VolLevel; //Current volume level
148 1
149 1 if(s_VolSmthSta == SMOOTH_CAUSE_VOLDOWN){ //Volume Down
150 2 bpVol = &s_VolSmth;
151 2 bStep = VOL_SMTHDOWN_STEP; // In SMOOTH_CAUSE_VOLDOWN status, a big step will be used to volume decreas
-e quickly.
152 2 }
153 1
154 1 //if(*bpVol > VOLLEVEL_MIN){
155 1 if(*bpVol > bStep){
156 2 *bpVol = *bpVol - bStep;
157 2 }else{
158 2 *bpVol = 0;
159 2 }
160 1
161 1 _halVolRegSet(*bpVol);
162 1
163 1 return *bpVol;
164 1 }
165
166 //Set the volume smooth start level or end level, speed, FSM Status
167 void halVolSmthSet(BYTE bVol, BYTE bSta, BYTE bBeg)
168 {
169 1 VolTicks = bBeg;
170 1
171 1 s_VolSmth = bVol;
172 1 s_VolSmthSta = bSta;
173 1
174 1 return;
175 1 }
176
C51 COMPILER V8.01 HALVOL 04/17/2008 09:46:20 PAGE 4
177 //The FSM for volume smooth.
178 void halVolSmthFSM(void)
179 {
180 1 if(VolTicks > VOL_SMTH_BEGIN){
181 2 switch (s_VolSmthSta){
182 3 case SMOOTH_CAUSE_VOLUP: //Volume smooth up
183 3 if(halVolUp() >= s_VolLevel){
184 4 s_VolSmthSta = SMOOTH_CAUSE_IDLE;
185 4 //MP3_MUTE_DISABLE(); //modify by Ivor yan
186 4 //DelayMs(10);
187 4
188 4
189 4 }
190 3 break;
191 3
192 3 case SMOOTH_CAUSE_VOLDOWN: //Volume smooth down
193 3 if(halVolDown() <= VOLLEVEL_MIN)
194 3 {
195 4 //halVolSet(0);
196 4 s_VolSmthSta = SMOOTH_CAUSE_IDLE;
197 4 keystatus = KEY_STATUS_PLAYPAUSE;
198 4 mp3status = MP3STATUS_IDLE;
199 4 //MP3_MUTE_DISABLE(); //modify by Ivor yan
200 4 //DelayMs(10);
201 4 }
202 3 break;
203 3
204 3 default:
205 3 break;
206 3 }
207 2
208 2 // DISABLE_INTERRUPTS;
209 2 VolTicks = (VOL_SMTH_BEGIN - 1);
210 2 // ENABLE_INTERRUPTS;
211 2 }
212 1
213 1 return;
214 1 }
215
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 270 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 7
PDATA SIZE = ---- ----
DATA SIZE = 3 1
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 + -