📄 vs1003b.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--debug -c --asm --interleave -ovs1003b.o --depend=vs1003b.d --device=DARMP --apcs=interwork -O3 -IC:\Keil\ARM\INC\Philips --omf_browse=vs1003b.crf VS1003B.c]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
VS1003B_SPI_Low PROC
000000 e59f0478 LDR r0,|L1.1152|
000004 e3a01064 MOV r1,#0x64
000008 e5c0100c STRB r1,[r0,#0xc]
00000c e3a01030 MOV r1,#0x30
000010 e5c01000 STRB r1,[r0,#0]
000014 e12fff1e BX lr
ENDP
VS1003B_SPI_High PROC
000018 e59f0460 LDR r0,|L1.1152|
00001c e3a01006 MOV r1,#6
000020 e5c0100c STRB r1,[r0,#0xc]
000024 e3a01030 MOV r1,#0x30
000028 e5c01000 STRB r1,[r0,#0]
00002c e12fff1e BX lr
ENDP
VS1003B_WriteByte PROC
000030 e59f1448 LDR r1,|L1.1152|
000034 e5c10008 STRB r0,[r1,#8]
|L1.56|
000038 e5d10004 LDRB r0,[r1,#4]
00003c e3100080 TST r0,#0x80
000040 0afffffc BEQ |L1.56|
000044 e5d10008 LDRB r0,[r1,#8]
000048 e12fff1e BX lr
ENDP
VS1003B_ReadByte PROC
00004c e59f042c LDR r0,|L1.1152|
000050 e3a010ff MOV r1,#0xff
000054 e5c01008 STRB r1,[r0,#8]
|L1.88|
000058 e5d01004 LDRB r1,[r0,#4]
00005c e3110080 TST r1,#0x80
000060 0afffffc BEQ |L1.88|
000064 e5d00008 LDRB r0,[r0,#8]
000068 e12fff1e BX lr
ENDP
VS1003B_WriteCMD PROC
;;;122 {
;;;123 VS1003B_XDCS_H();
00006c e59f2410 LDR r2,|L1.1156|
000070 e1a0c000 MOV r12,r0 ;122
000074 e52de004 PUSH {lr} ;122
000078 e5920014 LDR r0,[r2,#0x14]
00007c e1a03001 MOV r3,r1 ;122
000080 e3800401 ORR r0,r0,#0x1000000
000084 e5820014 STR r0,[r2,#0x14]
;;;124 VS1003B_XCS_L();
000088 e592000c LDR r0,[r2,#0xc]
00008c e3800080 ORR r0,r0,#0x80
000090 e582000c STR r0,[r2,#0xc]
;;;125 VS1003B_WriteByte(0x02);
000094 e3a00002 MOV r0,#2
000098 ebfffffe BL VS1003B_WriteByte
;;;126 VS1003B_WriteByte(addr);
00009c e1a0000c MOV r0,r12
0000a0 ebfffffe BL VS1003B_WriteByte
;;;127 VS1003B_WriteByte(dat>>8);
0000a4 e1a00423 LSR r0,r3,#8
0000a8 ebfffffe BL VS1003B_WriteByte
;;;128 VS1003B_WriteByte(dat);
0000ac e20300ff AND r0,r3,#0xff
0000b0 ebfffffe BL VS1003B_WriteByte
;;;129 VS1003B_XCS_H();
0000b4 e5920004 LDR r0,[r2,#4]
0000b8 e3800080 ORR r0,r0,#0x80
0000bc e5820004 STR r0,[r2,#4]
;;;130 }
0000c0 e49de004 POP {lr}
0000c4 e12fff1e BX lr
;;;131
ENDP
VS1003B_ReadCMD PROC
;;;135 unsigned short temp;
;;;136 VS1003B_XDCS_H();
0000c8 e59f23b4 LDR r2,|L1.1156|
0000cc e1a03000 MOV r3,r0
0000d0 e52de004 PUSH {lr}
0000d4 e5920014 LDR r0,[r2,#0x14]
0000d8 e3800401 ORR r0,r0,#0x1000000
0000dc e5820014 STR r0,[r2,#0x14]
;;;137 VS1003B_XCS_L();
0000e0 e592000c LDR r0,[r2,#0xc]
0000e4 e3800080 ORR r0,r0,#0x80
0000e8 e582000c STR r0,[r2,#0xc]
;;;138 VS1003B_WriteByte(0x03);
0000ec e3a00003 MOV r0,#3
0000f0 ebfffffe BL VS1003B_WriteByte
;;;139 VS1003B_WriteByte(addr);
0000f4 e1a00003 MOV r0,r3
0000f8 ebfffffe BL VS1003B_WriteByte
;;;140 temp = VS1003B_ReadByte();
0000fc ebfffffe BL VS1003B_ReadByte
;;;141 temp <<= 8;
000100 e3a01cff MOV r1,#0xff00
000104 e0013400 AND r3,r1,r0,LSL #8
;;;142 temp += VS1003B_ReadByte();
000108 ebfffffe BL VS1003B_ReadByte
;;;143 VS1003B_XCS_H();
00010c e5921004 LDR r1,[r2,#4]
000110 e0800003 ADD r0,r0,r3 ;142
000114 e3c00801 BIC r0,r0,#0x10000 ;142
000118 e3811080 ORR r1,r1,#0x80
00011c e5821004 STR r1,[r2,#4]
;;;144 return temp;
000120 e49de004 POP {lr}
;;;145 }
000124 e12fff1e BX lr
;;;146
ENDP
VS1003B_NeedData PROC
000128 e59f0354 LDR r0,|L1.1156|
00012c e5900010 LDR r0,[r0,#0x10] ;0
000130 e2100402 ANDS r0,r0,#0x2000000 ;0
000134 13a00001 MOVNE r0,#1 ;0
000138 e12fff1e BX lr ;0
ENDP
VS1003B_Fill2048Zero PROC
;;;148 void VS1003B_Fill2048Zero()
;;;149 {
00013c e52de004 PUSH {lr}
;;;150 unsigned char i,j;
;;;151 VS1003B_SPI_High();
000140 ebfffffe BL VS1003B_SPI_High
;;;152 for(i=0;i<64;i++)
000144 e59fc338 LDR r12,|L1.1156|
000148 e3a03000 MOV r3,#0
|L1.332|
;;;153 {
;;;154 VS1003B_XDCS_L();
00014c e59c001c LDR r0,[r12,#0x1c]
000150 e3800401 ORR r0,r0,#0x1000000
000154 e58c001c STR r0,[r12,#0x1c]
|L1.344|
;;;155 while(VS1003B_NeedData()==0);
000158 ebfffffe BL VS1003B_NeedData
00015c e3500000 CMP r0,#0
000160 0afffffc BEQ |L1.344|
;;;156 for(j=0;j<32;j++)
000164 e3a02000 MOV r2,#0
|L1.360|
;;;157 {
;;;158 VS1003B_WriteByte(0x00);
000168 e3a00000 MOV r0,#0
00016c ebfffffe BL VS1003B_WriteByte
000170 e2820001 ADD r0,r2,#1 ;156
000174 e20020ff AND r2,r0,#0xff ;156
000178 e3520020 CMP r2,#0x20 ;156
00017c 3afffff9 BCC |L1.360|
;;;159 }
;;;160 VS1003B_XDCS_H();
000180 e59c0014 LDR r0,[r12,#0x14]
000184 e2831001 ADD r1,r3,#1 ;152
000188 e3800401 ORR r0,r0,#0x1000000
00018c e58c0014 STR r0,[r12,#0x14]
000190 e20130ff AND r3,r1,#0xff ;152
000194 e3530040 CMP r3,#0x40 ;152
000198 3affffeb BCC |L1.332|
;;;161 }
;;;162 }
00019c e49de004 POP {lr}
0001a0 e12fff1e BX lr
;;;163
ENDP
VS1003B_Write32B PROC
;;;165 void VS1003B_Write32B(unsigned char * buf)
;;;166 {
0001a4 e1a03000 MOV r3,r0
;;;167 unsigned char n = 32;
0001a8 e3a02020 MOV r2,#0x20
0001ac e52de004 PUSH {lr} ;166
;;;168 VS1003B_SPI_High();
0001b0 ebfffffe BL VS1003B_SPI_High
;;;169 VS1003B_XDCS_L();
0001b4 e59fc2c8 LDR r12,|L1.1156|
0001b8 e59c001c LDR r0,[r12,#0x1c]
0001bc e3800401 ORR r0,r0,#0x1000000
0001c0 e58c001c STR r0,[r12,#0x1c]
;;;170 while(n--)
0001c4 ea000001 B |L1.464|
|L1.456|
;;;171 {
;;;172 VS1003B_WriteByte(*buf++);
0001c8 e4d30001 LDRB r0,[r3],#1
0001cc ebfffffe BL VS1003B_WriteByte
|L1.464|
0001d0 e1b00002 MOVS r0,r2 ;170
0001d4 e2421001 SUB r1,r2,#1 ;170
0001d8 e20120ff AND r2,r1,#0xff ;170
0001dc 1afffff9 BNE |L1.456|
;;;173 }
;;;174 VS1003B_XDCS_H();
0001e0 e59c0014 LDR r0,[r12,#0x14]
0001e4 e3800401 ORR r0,r0,#0x1000000
0001e8 e58c0014 STR r0,[r12,#0x14]
;;;175 }
0001ec e49de004 POP {lr}
0001f0 e12fff1e BX lr
;;;176
ENDP
VS1003B_SoftReset PROC
0001f4 e92d4010 PUSH {r4,lr} ;0
0001f8 ebfffffe BL VS1003B_SPI_High
0001fc e59f1284 LDR r1,|L1.1160|
000200 e3a00000 MOV r0,#0 ;0
000204 ebfffffe BL VS1003B_WriteCMD
000208 e8bd4010 POP {r4,lr} ;0
00020c e3a00014 MOV r0,#0x14 ;0
000210 eafffffe B soft_delay_ms
ENDP
VS1003B_Init PROC
;;;178 unsigned char VS1003B_Init(void)
;;;179 {
000214 e92d4070 PUSH {r4-r6,lr}
;;;180 unsigned char retry;
;;;181 #if 0
;;;182 AT91PS_SPI pSPI = AT91C_BASE_SPI;
;;;183 AT91PS_PMC pPMC = AT91C_BASE_PMC;
;;;184 #endif
;;;185 PORT_INI(); /* Prot Initialize */
000218 e59f026c LDR r0,|L1.1164|
00021c e5901000 LDR r1,[r0,#0]
000220 e3c11903 BIC r1,r1,#0xc000
000224 e5801000 STR r1,[r0,#0]
000228 e2404901 SUB r4,r0,#0x4000
00022c e5941008 LDR r1,[r4,#8]
000230 e3811080 ORR r1,r1,#0x80
000234 e5841008 STR r1,[r4,#8]
000238 e5941004 LDR r1,[r4,#4]
00023c e3811080 ORR r1,r1,#0x80
000240 e5841004 STR r1,[r4,#4]
000244 e5901014 LDR r1,[r0,#0x14]
000248 e3c11020 BIC r1,r1,#0x20
00024c e5801014 STR r1,[r0,#0x14]
000250 e5941018 LDR r1,[r4,#0x18]
000254 e3811401 ORR r1,r1,#0x1000000
000258 e5841018 STR r1,[r4,#0x18]
00025c e5941014 LDR r1,[r4,#0x14]
000260 e3811401 ORR r1,r1,#0x1000000
000264 e5841014 STR r1,[r4,#0x14]
000268 e5901000 LDR r1,[r0,#0]
00026c e3c110c0 BIC r1,r1,#0xc0
000270 e5801000 STR r1,[r0,#0]
000274 e5941008 LDR r1,[r4,#8]
000278 e3811008 ORR r1,r1,#8
00027c e5841008 STR r1,[r4,#8]
000280 e3a05008 MOV r5,#8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -