⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vs1003b.lst

📁 VS1003b音频芯片
💻 LST
📖 第 1 页 / 共 4 页
字号:
 301               		rjmp .L38
 303               	.LM41:
 304               		in r24,47-0x20
 305               	.LBE41:
 306 006c 779B      	.LBE40:
 307 006e 00C0      	.LBB42:
 308               	.LBB43:
 310 0070 8FB1      	.LM42:
 311               		ldi r24,lo8(-1)
 312               		out 47-0x20,r24
 313               	.L40:
 315               	.LM43:
 316               		sbis 46-0x20,7
 317 0072 8FEF      		rjmp .L40
 319               	.LM44:
 320               		in r25,47-0x20
 321               	.LBE43:
 322 0076 779B      	.LBE42:
 323 0078 00C0      	.LBB44:
 324               	.LBB45:
 326 007a 9FB1      	.LM45:
 327               		ldi r24,lo8(-1)
 328               		out 47-0x20,r24
 329               	.L42:
 331               	.LM46:
 332               		sbis 46-0x20,7
 333 007c 8FEF      		rjmp .L42
 335               	.LM47:
 336               		in r18,47-0x20
 337               	.LBE45:
 338 0080 779B      	.LBE44:
 340               	.LM48:
 341               		mov r24,r25
 342 0084 2FB1      		ldi r25,lo8(0)
 344               	.LM49:
  81:VS1003B\VS1003B.c **** 	VS1003B_WriteByte(0x03);
  82:VS1003B\VS1003B.c **** 	VS1003B_WriteByte(addr);
  83:VS1003B\VS1003B.c **** 	temp = VS1003B_ReadByte();
 345               	0x20,4
 347 0086 892F      	.LM51:
 348 0088 90E0      		add r24,r18
  84:VS1003B\VS1003B.c **** 	temp <<= 8;
 349               	 r25,__zero_reg__
 350               	/* epilogue: frame size=0 */
 351 008a 982F      		ret
 352 008c 8827      	/* epilogue end (size=1) */
  85:VS1003B\VS1003B.c **** 	temp += VS1003B_ReadByte();
  86:VS1003B\VS1003B.c **** 	VS1003B_XCS_H();
 353               	unction VS1003B_ReadCMD size 30 (29) */
  87:VS1003B\VS1003B.c **** 	return temp;
  88:VS1003B\VS1003B.c **** }
 356               	tabn	192,0,0,.LFBB6-.LFBB6
 358 0090 820F      	.Lscope6:
 360               	.global	VS1003B_SoftReset
 362               	VS1003B_SoftReset:
 364               	.LM52:
 365               	.LFBB7:
 366               	/* prologue: frame size=0 */
 367               	/* prologue end (size=0) */
 368               	.LBB46:
 369               	.LBB47:
 371               	.LM53:
 372               		ldi r24,lo8(80)
  89:VS1003B\VS1003B.c **** 
  90:VS1003B\VS1003B.c **** /* fill 2048 zero */
  91:VS1003B\VS1003B.c **** void VS1003B_Fill2048Zero()
  92:VS1003B\VS1003B.c **** {
  93:VS1003B\VS1003B.c **** 	unsigned char i,j;
  94:VS1003B\VS1003B.c **** 	for(i=0;i<64;i++)
  95:VS1003B\VS1003B.c **** 	{
  96:VS1003B\VS1003B.c **** 		VS1003B_XDCS_L();
  97:VS1003B\VS1003B.c **** 		while(VS1003B_NeedData()==0);
  98:VS1003B\VS1003B.c **** 		for(j=0;j<32;j++)
  99:VS1003B\VS1003B.c **** 		{
 100:VS1003B\VS1003B.c **** 			VS1003B_WriteByte(0x00);
 101:VS1003B\VS1003B.c **** 		}
 102:VS1003B\VS1003B.c **** 		VS1003B_XDCS_H();
 103:VS1003B\VS1003B.c **** 	}
 104:VS1003B\VS1003B.c **** }
 105:VS1003B\VS1003B.c **** 
 106:VS1003B\VS1003B.c **** /* Write 32bytes data */
 107:VS1003B\VS1003B.c **** void VS1003B_Write32B(unsigned char * buf)
 108:VS1003B\VS1003B.c **** {
 109:VS1003B\VS1003B.c **** 	unsigned char n = 32;
 110:VS1003B\VS1003B.c **** 	VS1003B_XDCS_L();
 111:VS1003B\VS1003B.c **** 	while(n--)
 112:VS1003B\VS1003B.c **** 	{
 113:VS1003B\VS1003B.c **** 		VS1003B_WriteByte(*buf++);
 114:VS1003B\VS1003B.c **** 	}
 115:VS1003B\VS1003B.c **** 	VS1003B_XDCS_H();
 116:VS1003B\VS1003B.c **** }
 117:VS1003B\VS1003B.c **** 
 118:VS1003B\VS1003B.c **** /**********  Initialization, 1 means fail, 0 OK ***************/
 119:VS1003B\VS1003B.c **** unsigned char VS1003B_Init()
 120:VS1003B\VS1003B.c **** {
 121:VS1003B\VS1003B.c **** 	unsigned char retry;
 122:VS1003B\VS1003B.c **** 	PORT_INI();			/* Prot Initialize */
 123:VS1003B\VS1003B.c **** 
 124:VS1003B\VS1003B.c **** 	VS1003B_XRESET_L();	/* A hardware reset */
 125:VS1003B\VS1003B.c **** 	_delay_ms(20);
 126:VS1003B\VS1003B.c **** 	VS1003B_XRESET_H();
 127:VS1003B\VS1003B.c **** 
 128:VS1003B\VS1003B.c **** 	VS1003B_SPI_Low();	/* Low initialize spi clock */
 129:VS1003B\VS1003B.c **** 	_delay_ms(20);
 130:VS1003B\VS1003B.c **** 
 131:VS1003B\VS1003B.c **** 	retry=0;
 132:VS1003B\VS1003B.c **** 
 133:VS1003B\VS1003B.c **** 	while(VS1003B_ReadCMD(0x03) != CLOCK_REG)	/* set PLL register */
 134:VS1003B\VS1003B.c **** 	{
 135:VS1003B\VS1003B.c **** 		VS1003B_WriteCMD(0x03,CLOCK_REG);
 136:VS1003B\VS1003B.c **** 		if(retry++ >10 )return 1;
 137:VS1003B\VS1003B.c **** 	}
 138:VS1003B\VS1003B.c **** 
 139:VS1003B\VS1003B.c **** 	_delay_ms(20);
 140:VS1003B\VS1003B.c **** 	
 141:VS1003B\VS1003B.c **** 	VS1003B_WriteCMD(0x05,0x000a);
 142:VS1003B\VS1003B.c **** 	
 143:VS1003B\VS1003B.c **** 	retry=0;
 144:VS1003B\VS1003B.c **** 	while(VS1003B_ReadCMD(0x0b) != 0xfefe)	/* set Volume to minimum */
 145:VS1003B\VS1003B.c **** 	{
 146:VS1003B\VS1003B.c **** 		VS1003B_WriteCMD(0x0b,0xfefe);
 147:VS1003B\VS1003B.c **** 		if(retry++ >10 )return 1;
 148:VS1003B\VS1003B.c **** 	}
 149:VS1003B\VS1003B.c **** 
 150:VS1003B\VS1003B.c **** 	VS1003B_WriteCMD(0x05,0xac45);			/* Soft start */
 151:VS1003B\VS1003B.c **** 
 152:VS1003B\VS1003B.c **** 	retry=0;
 153:VS1003B\VS1003B.c **** 	while(VS1003B_ReadCMD(0x0b) != DEFAULT_VOLUME)	/* Set volume to default value */
 154:VS1003B\VS1003B.c **** 	{
 155:VS1003B\VS1003B.c **** 		VS1003B_WriteCMD(0x0b,DEFAULT_VOLUME);
 156:VS1003B\VS1003B.c **** 		if(retry++ >10 )return 1;
 157:VS1003B\VS1003B.c **** 	}
 158:VS1003B\VS1003B.c **** 
 159:VS1003B\VS1003B.c **** 	retry=0;
 160:VS1003B\VS1003B.c **** 	while(VS1003B_ReadCMD(0x00) != 0x0800)	/* set mode register */
 161:VS1003B\VS1003B.c **** 	{
 162:VS1003B\VS1003B.c **** 		VS1003B_WriteCMD(0x00,0x0800);
 163:VS1003B\VS1003B.c **** 		if(retry++ >10 )return 1;
 164:VS1003B\VS1003B.c **** 	}
 165:VS1003B\VS1003B.c **** 
 166:VS1003B\VS1003B.c **** 	_delay_ms(1);
 167:VS1003B\VS1003B.c **** 
 168:VS1003B\VS1003B.c **** 	retry=0;
 169:VS1003B\VS1003B.c **** 	while(VS1003B_ReadCMD(0x02) != DEFAULT_BASS_TREMBLE)	/* set bass/tremble register */
 170:VS1003B\VS1003B.c **** 	{
 171:VS1003B\VS1003B.c **** 		VS1003B_WriteCMD(0x02,DEFAULT_BASS_TREMBLE);
 172:VS1003B\VS1003B.c **** 		if(retry++ >10 )return 1;
 173:VS1003B\VS1003B.c **** 	}
 174:VS1003B\VS1003B.c **** 	_delay_ms(20);
 175:VS1003B\VS1003B.c **** 
 176:VS1003B\VS1003B.c **** 	VS1003B_SoftReset();	/* A soft reset */
 177:VS1003B\VS1003B.c **** 
 178:VS1003B\VS1003B.c **** 	_delay_ms(20);
 179:VS1003B\VS1003B.c **** 
 180:VS1003B\VS1003B.c **** 	VS1003B_SPI_High();		/* High SPI clock, for internal pll has been works now */
 181:VS1003B\VS1003B.c **** 	return 0;
 182:VS1003B\VS1003B.c **** }
 183:VS1003B\VS1003B.c **** 
 184:VS1003B\VS1003B.c **** /* VS1003B soft reset */
 185:VS1003B\VS1003B.c **** void VS1003B_SoftReset()
 186:VS1003B\VS1003B.c **** {
 374               	.LM54:
 375               		sbi 46-0x20,0
 376               	.LBE47:
 377               	.LBE46:
 379               	.LM55:
 380               		ldi r22,lo8(2052)
 381               		ldi r23,hi8(2052)
 382 0096 80E5      		ldi r24,lo8(0)
 383 0098 8DB9      		call VS1003B_WriteCMD
 384               	.LBB48:
 385               	.LBB49:
 386 009a 709A      	.LBB50:
 387               	.LBB51:
 187:VS1003B\VS1003B.c **** 	VS1003B_SPI_High();
 188:VS1003B\VS1003B.c **** 	VS1003B_WriteCMD(0x00,0x0804);	/* reset */
 389               		68,0,105,.LM56-.LFBB7
 390               	.LM56:
 391 009c 64E0      		ldi r24,lo8(-25536)
 392 009e 78E0      		ldi r25,hi8(-25536)
 393 00a0 80E0      	/* #APP */
 394 00a2 0E94 0000 		1: sbiw r24,1
 395               		brne 1b
 396               	/* #NOAPP */
 397               	.LBE51:
 398               	.LBE50:
 399               	.LBE49:
 400               	.LBE48:
   1:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** /* Copyright (c) 2002, Marek Michalkiewicz
   2:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****    Copyright (c) 2007 Joerg Wunsch
   3:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****    All rights reserved.
   4:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
   5:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****    Redistribution and use in source and binary forms, with or without
   6:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****    modification, are permitted provided that the following conditions are met:
   7:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
   8:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****    * Redistributions of source code must retain the above copyright
   9:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****      notice, this list of conditions and the following disclaimer.
  10:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  11:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****    * Redistributions in binary form must reproduce the above copyright
  12:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****      notice, this list of conditions and the following disclaimer in
  13:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****      the documentation and/or other materials provided with the
  14:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****      distribution.
  15:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  16:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****    * Neither the name of the copyright holders nor the names of
  17:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****      contributors may be used to endorse or promote products derived
  18:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****      from this software without specific prior written permission.
  19:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  20:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  21:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  24:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  25:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  26:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  27:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  28:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  29:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  30:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****   POSSIBILITY OF SUCH DAMAGE. */
  31:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  32:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** /* $Id: delay_basic.h,v 1.1 2007/05/13 21:23:20 joerg_wunsch Exp $ */
  33:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  34:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** #ifndef _UTIL_DELAY_BASIC_H_
  35:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** #define _UTIL_DELAY_BASIC_H_ 1
  36:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  37:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** #include <inttypes.h>
  38:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  39:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** /** \file */
  40:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** /** \defgroup util_delay_basic <util/delay_basic.h>: Basic busy-wait delay loops
  41:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     \code
  42:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     #include <util/delay_basic.h>
  43:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     \endcode
  44:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  45:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     The functions in this header file implement simple delay loops
  46:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     that perform a busy-waiting.  They are typically used to
  47:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     facilitate short delays in the program execution.  They are
  48:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     implemented as count-down loops with a well-known CPU cycle
  49:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     count per loop iteration.  As such, no other processing can
  50:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     occur simultaneously.  It should be kept in mind that the
  51:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     functions described here do not disable interrupts.
  52:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  53:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     In general, for long delays, the use of hardware timers is
  54:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     much preferrable, as they free the CPU, and allow for
  55:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     concurrent processing of other events while the timer is
  56:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     running.  However, in particular for very short delays, the
  57:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     overhead of setting up a hardware timer is too much compared
  58:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     to the overall delay time.
  59:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  60:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     Two inline functions are provided for the actual delay algorithms.
  61:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  62:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** */
  63:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  64:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** #if !defined(__DOXYGEN__)
  65:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
  66:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
  67:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** #endif
  68:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  69:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
  70:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  71:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     Delay loop using an 8-bit counter \c __count, so up to 256
  72:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     iterations are possible.  (The value 256 would have to be passed
  73:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     as 0.)  The loop executes three CPU cycles per iteration, not
  74:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     including the overhead the compiler needs to setup the counter
  75:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     register.
  76:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** 
  77:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
  78:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****     can be achieved.
  79:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** */
  80:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** void

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -