📄 dac_drv.lst
字号:
C51 COMPILER V7.50 DAC_DRV 09/20/2005 21:47:38 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE DAC_DRV
OBJECT MODULE PLACED IN dac_drv.obj
COMPILER INVOKED BY: e:\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)
line 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 #ifdef DAC_L3MODE
27 /*F**************************************************************************
28 * NAME: dac_byte_send
29 *----------------------------------------------------------------------------
30 * PARAMS:
31 * b: byte to send
32 * return:
33 *----------------------------------------------------------------------------
34 * PURPOSE:
35 * Serialize a data/cmd/addr byte on DAC_L3DATA & DAC_L3CLOCK pins.
36 *----------------------------------------------------------------------------
37 * NOTE:
38 * This function should only be used by dac_l3mode_send
39 *----------------------------------------------------------------------------
40 * REQUIREMENTS:
41 *****************************************************************************/
42 void dac_byte_send (Byte b)
43 {
44 1 Byte c;
45 1
46 1 for (c=8;c;c--)
47 1 {
48 2 DAC_L3DATA=(b&1); // practically 50% duty cycle
49 2 DAC_L3CLOCK=0;
50 2 b>>=1;
51 2 DAC_L3CLOCK=1; // data bit is sampled here (rising edge)
52 2 }
53 1 }
54
C51 COMPILER V7.50 DAC_DRV 09/20/2005 21:47:38 PAGE 2
55
56 /*F**************************************************************************
57 * NAME: dac_l3mode_send
58 *----------------------------------------------------------------------------
59 * PARAMS:
60 * addr: logical address of the chip (000101xxb for UDA1330)
61 * b: data/cmd byte to send
62 * return:
63 *----------------------------------------------------------------------------
64 * PURPOSE:
65 * Send a L3-mode command to the DAC UDA1330
66 *----------------------------------------------------------------------------
67 * NOTE:
68 * This function improve the song quality (low level, decrease signal/noise).
69 *----------------------------------------------------------------------------
70 * REQUIREMENTS:
71 * Only tested with UDA1330ATS
72 *****************************************************************************/
73 void dac_l3mode_send (Byte addr,Byte b)
74 {
75 1 DAC_TEST=0; // be carefull ! if DAC_TEST is set with DAC_APPSEL not set, I/O of UDA1330 change a lot
76 1 DAC_APPSEL=0; // Turn DAC in L3 mode
77 1 DAC_L3MODE=1;
78 1 DAC_L3CLOCK=1;
79 1 DAC_L3DATA=1; // Normal state, basically, those three pins are already set
80 1 // Begin Addr transfer
81 1 DAC_L3MODE=0;
82 1 dac_byte_send(addr);
83 1 // Begin Data/Cmd transfer
84 1 DAC_L3MODE=1;
85 1 dac_byte_send(b);
86 1 // Ack end of data/cmd transfer
87 1 DAC_L3MODE=0;
88 1 DAC_L3MODE=1;
89 1 }
90
91 /*F**************************************************************************
92 * NAME: dac_set_vol
93 *----------------------------------------------------------------------------
94 * PARAMS:
95 *
96 * return:
97 *----------------------------------------------------------------------------
98 * PURPOSE:
99 * Use the DAC to modify song level.
100 *----------------------------------------------------------------------------
101 * NOTE:
102 * This function must be call each time mp3_volume is changed
103 *----------------------------------------------------------------------------
104 * REQUIREMENTS:
105 *****************************************************************************/
106 void dac_set_vol (Byte volume)
107 {
108 1 if (volume>=32) volume=16; // security !
109 1 if (volume<24)
110 1 {
111 2 MP3VOL = MP3VOR = 15;
112 2 dac_l3mode_send(DAC_L3I_ADDR,64-(volume<<1)-volume+(volume>>2));
113 2 }
114 1 else
115 1 {
116 2 MP3VOL = MP3VOR = 15 + ((volume-23)<<1);
C51 COMPILER V7.50 DAC_DRV 09/20/2005 21:47:38 PAGE 3
117 2 dac_l3mode_send(DAC_L3I_ADDR,0);
118 2 }
119 1 }
120
121 #endif
122
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 + -