📄 voice_drv.lst
字号:
147 1 for (i = 8; i != 0; i--)
148 1 {
149 2 AUDDAT = (char)gl_buffer[gl_pointer++] / (char)voc_volume;
150 2 }
151 1 Aud_voice_play(); /* start sample request */
152 1 }
153
154
155 /*F**************************************************************************
156 * NAME: voc_play_stop
157 *----------------------------------------------------------------------------
158 * PARAMS:
159 *
160 * return:
161 *----------------------------------------------------------------------------
162 * PURPOSE:
163 * Stop voice playing
164 *----------------------------------------------------------------------------
165 * EXAMPLE:
166 *----------------------------------------------------------------------------
167 * NOTE:
168 *----------------------------------------------------------------------------
169 * REQUIREMENTS:
170 *****************************************************************************/
171 void voc_play_stop (void)
172 {
173 1 Dac_mute(); /* silence */
174 1 aud_stop(); /* disable audio */
175 1 Pll_stop(); /* disable pll */
176 1 }
177
178
C51 COMPILER V6.20c VOICE_DRV 07/10/2002 15:17:38 PAGE 4
179 /*F**************************************************************************
180 * NAME: voc_inc_volume
181 *----------------------------------------------------------------------------
182 * PARAMS:
183 *
184 * return:
185 *----------------------------------------------------------------------------
186 * PURPOSE:
187 * Increment playing volume
188 *----------------------------------------------------------------------------
189 * EXAMPLE:
190 *----------------------------------------------------------------------------
191 * NOTE:
192 *----------------------------------------------------------------------------
193 * REQUIREMENTS:
194 *****************************************************************************/
195 void voc_inc_volume (void)
196 {
197 1 if (voc_volume != VOC_VOLUME_MAX)
198 1 {
199 2 voc_volume--;
200 2 }
201 1 }
202
203
204 /*F**************************************************************************
205 * NAME: voc_dec_volume
206 *----------------------------------------------------------------------------
207 * PARAMS:
208 *
209 * return:
210 *----------------------------------------------------------------------------
211 * PURPOSE:
212 * Decrement playing volume
213 *----------------------------------------------------------------------------
214 * EXAMPLE:
215 *----------------------------------------------------------------------------
216 * NOTE:
217 *----------------------------------------------------------------------------
218 * REQUIREMENTS:
219 *****************************************************************************/
220 void voc_dec_volume (void)
221 {
222 1 if (voc_volume != VOC_VOLUME_MIN)
223 1 {
224 2 voc_volume++;
225 2 }
226 1 }
227
228
229 /*F**************************************************************************
230 * NAME: voc_rec_int
231 *----------------------------------------------------------------------------
232 * PARAMS:
233 *
234 * return:
235 *----------------------------------------------------------------------------
236 * PURPOSE:
237 * Timer 1 interrupt function
238 *----------------------------------------------------------------------------
239 * EXAMPLE:
240 *----------------------------------------------------------------------------
C51 COMPILER V6.20c VOICE_DRV 07/10/2002 15:17:38 PAGE 5
241 * NOTE:
242 * IRQ_T1 defined in extsnd1.h
243 * gl_pointer is modulo 256
244 *----------------------------------------------------------------------------
245 * REQUIREMENTS:
246 *****************************************************************************/
247 Interrupt (voc_rec_int(void), IRQ_T1)
248 {
249 1 gl_buffer[gl_pointer++] = (Adc_get_data_h()); /* write data in buffer */
250 1 Adc_ack_conversion();
251 1 Adc_start_idle(VOICE_CHANNEL); /* launch new conversion */
252 1 }
253
254
255 /*F**************************************************************************
256 * NAME: voc_play_int
257 *----------------------------------------------------------------------------
258 * PARAMS:
259 *
260 * return:
261 *----------------------------------------------------------------------------
262 * PURPOSE:
263 * Audio interrupt function
264 *----------------------------------------------------------------------------
265 * EXAMPLE:
266 *----------------------------------------------------------------------------
267 * NOTE:
268 * IRQ_AUD defined in extsnd1.h
269 * The underrun condition is not tested as it must not appear
270 * 0x80 offset is added for unsigned to signed samples conversion
271 *----------------------------------------------------------------------------
272 * REQUIREMENTS:
273 *****************************************************************************/
274 Interrupt (voc_play_int (void), IRQ_AUD)
275 {
276 1 ACC= AUDSTA; /* dummy read to clear flags */
277 1 AUDDAT = (char)(gl_buffer[gl_pointer++] + 0x80)/(char)voc_volume;
278 1 AUDDAT = (char)(gl_buffer[gl_pointer++] + 0x80)/(char)voc_volume;
279 1 AUDDAT = (char)(gl_buffer[gl_pointer++] + 0x80)/(char)voc_volume;
280 1 AUDDAT = (char)(gl_buffer[gl_pointer++] + 0x80)/(char)voc_volume;
281 1 }
282
283
284
285
286
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 289 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 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 + -