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

📄 vs1003.lis

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module vs1003.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\software\MP3程序\Vs1003\vs1003.c
 0000                   .dbfunc e DelayIni _DelayIni fV
                        .even
 0000           _DelayIni::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; #include <iom64v.h>
 0000           ; #include <macros.h>
 0000           ; #define uchar unsigned char
 0000           ; #define uint unsigned int
 0000           ; #include "vs1003.h"
 0000           ; void vs1003_infor(void);
 0000           ; 
 0000           ; void DelayIni(void)
 0000           ; {
 0000                   .dbline 10
 0000           ;       TCCR0 = 0x00; //stop
 0000 2224              clr R2
 0002 23BE              out 0x33,R2
 0004                   .dbline 11
 0004           ;       TCNT0 = 0x83; //set count
 0004 83E8              ldi R24,131
 0006 82BF              out 0x32,R24
 0008                   .dbline -2
 0008           L1:
 0008                   .dbline 0 ; func end
 0008 0895              ret
 000A                   .dbend
 000A                   .dbfunc e delay_ms _delay_ms fV
 000A           ;             ms -> R16
                        .even
 000A           _delay_ms::
 000A                   .dbline -1
 000A                   .dbline 15
 000A           ; }
 000A           ; 
 000A           ; void delay_ms(unsigned char ms)
 000A           ; {
 000A                   .dbline 16
 000A           ;       TCCR0 = 0x04; //start timer
 000A 84E0              ldi R24,4
 000C 83BF              out 0x33,R24
 000E 09C0              xjmp L4
 0010           X0:
 0010                   .dbline 18
 0010           ;       while(ms--)
 0010           ;       {
 0010           L6:
 0010                   .dbline 19
 0010           L7:
 0010                   .dbline 19
 0010 86B7              in R24,0x36
 0012 8170              andi R24,1
 0014 8130              cpi R24,1
 0016 E1F7              brne L6
 0018                   .dbline 20
 0018 86B7              in R24,0x36
 001A 8160              ori R24,1
 001C 86BF              out 0x36,R24
 001E                   .dbline 21
 001E 83E8              ldi R24,131
 0020 82BF              out 0x32,R24
 0022                   .dbline 22
 0022           L4:
 0022                   .dbline 17
 0022 202E              mov R2,R16
 0024 3324              clr R3
 0026 0150              subi R16,1
 0028 2220              tst R2
 002A 91F7              brne L7
 002C                   .dbline 23
 002C           ;               while((TIFR & (1<<TOV0)) != (1<<TOV0));
 002C           ;               TIFR |= (1<<TOV0);
 002C           ;               TCNT0 = 0x83; //set count
 002C           ;       }
 002C           ;       TCCR0 = 0x00; //stop
 002C 2224              clr R2
 002E 23BE              out 0x33,R2
 0030                   .dbline -2
 0030           L2:
 0030                   .dbline 0 ; func end
 0030 0895              ret
 0032                   .dbsym r ms 16 c
 0032                   .dbend
 0032                   .dbfunc e mp3portIni _mp3portIni fV
                        .even
 0032           _mp3portIni::
 0032                   .dbline -1
 0032                   .dbline 27
 0032           ; }
 0032           ; 
 0032           ; void mp3portIni(void)
 0032           ; {
 0032                   .dbline 28
 0032           ;     DDRD |= nDCS;                                                                     //      使能芯片片选输出
 0032 8A9A              sbi 0x11,2
 0034                   .dbline 29
 0034           ;       DDRD |= nCS;                                                                    //      使能数据接口片选输出
 0034 8B9A              sbi 0x11,3
 0036                   .dbline 30
 0036           ;       DDRD &= ~DREQ;
 0036 8898              cbi 0x11,0
 0038                   .dbline 32
 0038           ;       
 0038           ;       PORTD |= nDCS;
 0038 929A              sbi 0x12,2
 003A                   .dbline 33
 003A           ;       PORTD |= nCS;
 003A 939A              sbi 0x12,3
 003C                   .dbline 34
 003C           ;       PORTD |= DREQ;
 003C 909A              sbi 0x12,0
 003E                   .dbline 36
 003E           ;       
 003E           ;       DDRB  = 0xff;                                                                   //      使能硬件复位输出
 003E 8FEF              ldi R24,255
 0040 87BB              out 0x17,R24
 0042                   .dbline 37
 0042           ;       DDRB  &= ~(1<<3);
 0042 BB98              cbi 0x17,3
 0044                   .dbline 38
 0044           ;       PORTB = 0xff;
 0044 88BB              out 0x18,R24
 0046                   .dbline 40
 0046           ;       
 0046           ;       SPCR = (1 << SPE) | (1 << MSTR) | (0 << SPR1) | (0 << SPR0);
 0046 80E5              ldi R24,80
 0048 8DB9              out 0xd,R24
 004A                   .dbline 41
 004A           ;       SPSR |= 1<<SPI2X;       
 004A 709A              sbi 0xe,0
 004C                   .dbline -2
 004C           L9:
 004C                   .dbline 0 ; func end
 004C 0895              ret
 004E                   .dbend
 004E                   .dbfunc e spiByte _spiByte fc
 004E           ;            tmp -> R20
 004E           ;           data -> R16
                        .even
 004E           _spiByte::
 004E 0E940000          xcall push_gset1
 0052                   .dbline -1
 0052                   .dbline 45
 0052           ; }
 0052           ; 
 0052           ; unsigned char spiByte(unsigned char data)
 0052           ; {
 0052                   .dbline 47
 0052           ;       unsigned char tmp;
 0052           ;       SPDR = data;
 0052 0FB9              out 0xf,R16
 0054           L11:
 0054                   .dbline 48
 0054           L12:
 0054                   .dbline 48
 0054           ;       while( !(SPSR & (1 << SPIF)) ); 
 0054 779B              sbis 0xe,7
 0056 FECF              rjmp L11
 0058                   .dbline 49
 0058           ;       tmp = SPDR;
 0058 4FB1              in R20,0xf
 005A                   .dbline 50
 005A           ;       return tmp;
 005A 042F              mov R16,R20
 005C                   .dbline -2
 005C           L10:
 005C 0E940000          xcall pop_gset1
 0060                   .dbline 0 ; func end
 0060 0895              ret
 0062                   .dbsym r tmp 20 c
 0062                   .dbsym r data 16 c
 0062                   .dbend
 0062                   .dbfunc e spiSend _spiSend fV
 0062           ;           data -> R16
                        .even
 0062           _spiSend::
 0062                   .dbline -1
 0062                   .dbline 54
 0062           ; }
 0062           ; 
 0062           ; void spiSend(unsigned char data)
 0062           ; {
 0062                   .dbline 55
 0062           ;       SPDR = data;
 0062 0FB9              out 0xf,R16
 0064           L15:
 0064                   .dbline 56
 0064           L16:
 0064                   .dbline 56
 0064           ;       while( !(SPSR & (1 << SPIF)) ); 
 0064 779B              sbis 0xe,7
 0066 FECF              rjmp L15
 0068                   .dbline -2
 0068           L14:
 0068                   .dbline 0 ; func end
 0068 0895              ret
 006A                   .dbsym r data 16 c
 006A                   .dbend
 006A                   .dbfunc e mp3WriteReg _mp3WriteReg fV
 006A           ;          lByte -> R20
 006A           ;          hByte -> R22
 006A           ;            add -> R10
                        .even
 006A           _mp3WriteReg::
 006A 0E940000          xcall push_gset3
 006E 622F              mov R22,R18
 0070 A02E              mov R10,R16
 0072 4E81              ldd R20,y+6
 0074                   .dbline -1
 0074                   .dbline 61
 0074           ;       
 0074           ; }
 0074           ; 
 0074           ; void mp3WriteReg(unsigned char add,unsigned char hByte,unsigned char lByte)
 0074           ; {
 0074           L19:
 0074                   .dbline 62
 0074           L20:
 0074                   .dbline 62
 0074           ;       while((PIND & DREQ) == 0);              
 0074 809B              sbis 0x10,0
 0076 FECF              rjmp L19
 0078                   .dbline 63
 0078           ;       mp3OutData();
 0078                   .dbline 63
 0078 929A              sbi 0x12,2
 007A                   .dbline 63
 007A                   .dbline 63
 007A                   .dbline 64
 007A           ;       mp3InCmd();
 007A                   .dbline 64
 007A 9398              cbi 0x12,3
 007C                   .dbline 64
 007C                   .dbline 64
 007C                   .dbline 65
 007C           ;       spiByte(VS_WRITE_COMMAND);
 007C 02E0              ldi R16,2
 007E E7DF              xcall _spiByte
 0080                   .dbline 66
 0080           ;       spiByte(add);
 0080 0A2D              mov R16,R10
 0082 E5DF              xcall _spiByte
 0084                   .dbline 67
 0084           ;       spiByte(hByte);
 0084 062F              mov R16,R22
 0086 E3DF              xcall _spiByte
 0088                   .dbline 68
 0088           ;       spiByte(lByte);
 0088 042F              mov R16,R20
 008A E1DF              xcall _spiByte
 008C                   .dbline 69
 008C           ;       mp3OutCmd();
 008C                   .dbline 69
 008C 939A              sbi 0x12,3
 008E                   .dbline 69
 008E                   .dbline 69
 008E                   .dbline -2
 008E           L18:
 008E 0E940000          xcall pop_gset3
 0092                   .dbline 0 ; func end
 0092 0895              ret
 0094                   .dbsym r lByte 20 c
 0094                   .dbsym r hByte 22 c
 0094                   .dbsym r add 10 c
 0094                   .dbend
 0094                   .dbfunc e mp3ReadReg _mp3ReadReg fi
 0094           ;          hByte -> R20
 0094           ;          lByte -> R22
 0094           ;            add -> R10
                        .even
 0094           _mp3ReadReg::
 0094 0E940000          xcall push_gset3
 0098 A02E              mov R10,R16
 009A                   .dbline -1
 009A                   .dbline 73
 009A           ; }
 009A           ; 
 009A           ; unsigned int mp3ReadReg(unsigned char add)
 009A           ; {
 009A           L23:
 009A                   .dbline 75
 009A           L24:
 009A                   .dbline 75
 009A           ;       unsigned char lByte,hByte;
 009A           ;       while((PIND & DREQ) == 0);              
 009A 809B              sbis 0x10,0
 009C FECF              rjmp L23
 009E                   .dbline 76
 009E           ;       mp3OutData();
 009E                   .dbline 76
 009E 929A              sbi 0x12,2
 00A0                   .dbline 76
 00A0                   .dbline 76
 00A0                   .dbline 77
 00A0           ;       mp3InCmd();
 00A0                   .dbline 77
 00A0 9398              cbi 0x12,3
 00A2                   .dbline 77
 00A2                   .dbline 77
 00A2                   .dbline 78
 00A2           ;       spiByte(VS_READ_COMMAND);
 00A2 03E0              ldi R16,3
 00A4 D4DF              xcall _spiByte
 00A6                   .dbline 79
 00A6           ;       spiByte(add);
 00A6 0A2D              mov R16,R10
 00A8 D2DF              xcall _spiByte
 00AA                   .dbline 80
 00AA           ;       hByte = spiByte(0xFF);
 00AA 0FEF              ldi R16,255
 00AC D0DF              xcall _spiByte
 00AE 402F              mov R20,R16
 00B0                   .dbline 81
 00B0           ;       lByte = spiByte(0xFF);
 00B0 0FEF              ldi R16,255
 00B2 CDDF              xcall _spiByte
 00B4 602F              mov R22,R16
 00B6                   .dbline 82
 00B6           ;       mp3OutCmd();
 00B6                   .dbline 82
 00B6 939A              sbi 0x12,3
 00B8                   .dbline 82
 00B8                   .dbline 82
 00B8                   .dbline 83
 00B8           ;       return((unsigned int)(hByte << 8) | lByte);
 00B8 262E              mov R2,R22
 00BA 3324              clr R3
 00BC 042F              mov R16,R20
 00BE 1127              clr R17
 00C0 102F              mov R17,R16
 00C2 0027              clr R16
 00C4 0229              or R16,R2
 00C6 1329              or R17,R3
 00C8                   .dbline -2
 00C8           L22:
 00C8 0E940000          xcall pop_gset3
 00CC                   .dbline 0 ; func end
 00CC 0895              ret
 00CE                   .dbsym r hByte 20 c
 00CE                   .dbsym r lByte 22 c
 00CE                   .dbsym r add 10 c
 00CE                   .dbend
 00CE                   .dbfunc e SoftReset _SoftReset fV
                        .even
 00CE           _SoftReset::
 00CE 2197              sbiw R28,1
 00D0                   .dbline -1
 00D0                   .dbline 86
 00D0           ; }
 00D0           ; void SoftReset(void)
 00D0           ; {
 00D0                   .dbline 87
 00D0           ;       SPSR &= ~(1<<SPI2X);
 00D0 7098              cbi 0xe,0
 00D2                   .dbline 88
 00D2           ;       mp3WriteReg(SPI_MODE,0x08,0x04);                //软件复位 
 00D2 84E0              ldi R24,4
 00D4 8883              std y+0,R24
 00D6 28E0              ldi R18,8
 00D8 0027              clr R16
 00DA C7DF              xcall _mp3WriteReg
 00DC                   .dbline 89

⌨️ 快捷键说明

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