📄 dac_drv.lst
字号:
C51 COMPILER V7.02a DAC_DRV 09/13/2007 11:53:02 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE DAC_DRV
OBJECT MODULE PLACED IN dac_drv.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lib_refd\dac\dac_drv.c OPTIMIZE(7,SPEED) BROWSE INCDIR(.\modules\system;.\;
-.\;.\lib_refd) DEFINE(KEIL) DEBUG OBJECTEXTEND PRINT(.\dac_drv.lst) OBJECT(dac_drv.obj)
stmt level source
1 /*C**************************************************************************
2 * NAME: dac_drv.c
3 *----------------------------------------------------------------------------
4 * Copyright (c) 2003 Atmel.
5 *----------------------------------------------------------------------------
6 * RELEASE: snd1c-refd-nf-4_0_3
7 * REVISION: 1.5
8 *----------------------------------------------------------------------------
9 * PURPOSE:
10 * This file contains routines to address UDA1330ATS in L3 mode
11 *
12 *****************************************************************************/
13
14 /*_____ I N C L U D E S ____________________________________________________*/
15
16 #include "config.h" /* lib configuration header */
17 #include "board.h" /* board definition */
18 #include "dac_drv.h" /* dac driver definition */
19
20 /*_____ M A C R O S ________________________________________________________*/
21
22
23 /*_____ D E F I N I T I O N ________________________________________________*/
24
25 /*_____ D E C L A R A T I O N ______________________________________________*/
26
27 extern unsigned char left_voi,right_voi;
28 #ifdef DAC_L3MODE
29 /*F**************************************************************************
30 * NAME: dac_byte_send
31 *----------------------------------------------------------------------------
32 * PARAMS:
33 * b: byte to send
34 * return:
35 *----------------------------------------------------------------------------
36 * PURPOSE:
37 * Serialize a data/cmd/addr byte on DAC_L3DATA & DAC_L3CLOCK pins.
38 *----------------------------------------------------------------------------
39 * NOTE:
40 * This function should only be used by dac_l3mode_send
41 *----------------------------------------------------------------------------
42 * REQUIREMENTS:
43 *****************************************************************************/
44 void dac_byte_send (Byte b)
45 {
46 1 Byte c;
47 1
48 1 for (c=8;c;c--)
49 1 {
50 2 DAC_L3DATA=(b&1); // practically 50% duty cycle
51 2 DAC_L3CLOCK=0;
52 2 b>>=1;
53 2 DAC_L3CLOCK=1; // data bit is sampled here (rising edge)
54 2 }
C51 COMPILER V7.02a DAC_DRV 09/13/2007 11:53:02 PAGE 2
55 1 }
56
57
58 /*F**************************************************************************
59 * NAME: dac_l3mode_send
60 *----------------------------------------------------------------------------
61 * PARAMS:
62 * addr: logical address of the chip (000101xxb for UDA1330)
63 * b: data/cmd byte to send
64 * return:
65 *----------------------------------------------------------------------------
66 * PURPOSE:
67 * Send a L3-mode command to the DAC UDA1330
68 *----------------------------------------------------------------------------
69 * NOTE:
70 * This function improve the song quality (low level, decrease signal/noise).
71 *----------------------------------------------------------------------------
72 * REQUIREMENTS:
73 * Only tested with UDA1330ATS
74 *****************************************************************************/
75 void dac_l3mode_send (Byte addr,Byte b)
76 {
77 1 DAC_TEST=0; // be carefull ! if DAC_TEST is set with DAC_APPSEL not set, I/O of UDA1330 change a lot
78 1 DAC_APPSEL=0; // Turn DAC in L3 mode
79 1 DAC_L3MODE=1;
80 1 DAC_L3CLOCK=1;
81 1 DAC_L3DATA=1; // Normal state, basically, those three pins are already set
82 1 // Begin Addr transfer
83 1 DAC_L3MODE=0;
84 1 dac_byte_send(addr);
85 1 // Begin Data/Cmd transfer
86 1 DAC_L3MODE=1;
87 1 dac_byte_send(b);
88 1 // Ack end of data/cmd transfer
89 1 DAC_L3MODE=0;
90 1 DAC_L3MODE=1;
91 1 }
92
93 /*F**************************************************************************
94 * NAME: dac_set_vol
95 *----------------------------------------------------------------------------
96 * PARAMS:
97 *
98 * return:
99 *----------------------------------------------------------------------------
100 * PURPOSE:
101 * Use the DAC to modify song level.
102 *----------------------------------------------------------------------------
103 * NOTE:
104 * This function must be call each time mp3_volume is changed
105 *----------------------------------------------------------------------------
106 * REQUIREMENTS:
107 *****************************************************************************/
108 void dac_set_vol (Byte volume)
109 {
110 1 if (volume>=32) volume=16; // security !
111 1 if (volume<24)
112 1 {
113 2 MP3VOL = left_voi ;
114 2 MP3VOR = right_voi;
115 2 dac_l3mode_send(DAC_L3I_ADDR,64-(volume<<1)-volume+(volume>>2));
116 2 }
C51 COMPILER V7.02a DAC_DRV 09/13/2007 11:53:02 PAGE 3
117 1 else
118 1 {
119 2 MP3VOL = MP3VOR = 15 + ((volume-23)<<1);
120 2 dac_l3mode_send(DAC_L3I_ADDR,0);
121 2 }
122 1 }
123
124 #endif
125
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 108 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -