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

📄 mp3.lst

📁 Build ourself a MP3 Player
💻 LST
📖 第 1 页 / 共 5 页
字号:
CCS PCW C Compiler, Version 3.110, 15985

               Filename: c:\documents and settings\ladyada\desktop\mintymp3\mp3.LST

               ROM used: 11004 (67%)
                         Largest free fragment is 5380
               RAM used: 645 (42%) at main() level
                         715 (47%) worst case
               Stack:    10 worst case (9 in main + 1 for interrupts)

*
0000:  GOTO   52BA
*
0008:  NOP   
000A:  NOP   
000C:  NOP   
000E:  NOP   
0010:  NOP   
0012:  NOP   
0014:  NOP   
0016:  NOP   
0018:  MOVWF  05
001A:  MOVFF  FD8,06
001E:  MOVF   FE9,W
0020:  MOVWF  07
0022:  MOVF   FEA,W
0024:  MOVWF  08
0026:  MOVF   FE1,W
0028:  MOVWF  09
002A:  MOVF   FE2,W
002C:  MOVWF  0A
002E:  MOVF   FD9,W
0030:  MOVWF  0B
0032:  MOVF   FDA,W
0034:  MOVWF  0C
0036:  MOVF   FE0,W
0038:  MOVWF  0D
003A:  MOVLB  0
003C:  MOVF   00,W
003E:  MOVWF  0F
0040:  MOVF   01,W
0042:  MOVWF  10
0044:  MOVF   02,W
0046:  MOVWF  11
0048:  MOVF   03,W
004A:  MOVWF  12
004C:  MOVF   04,W
004E:  MOVWF  13
0050:  BTFSS  F9D.1
0052:  GOTO   005C
0056:  BTFSC  F9E.1
0058:  GOTO   17DC
005C:  MOVF   0F,W
005E:  MOVWF  00
0060:  MOVF   10,W
0062:  MOVWF  01
0064:  MOVF   11,W
0066:  MOVWF  02
0068:  MOVF   12,W
006A:  MOVWF  03
006C:  MOVF   13,W
006E:  MOVWF  04
0070:  MOVF   0D,W
0072:  MOVWF  FE0
0074:  BSF    0D.7
0076:  MOVF   07,W
0078:  MOVWF  FE9
007A:  MOVF   08,W
007C:  MOVWF  FEA
007E:  MOVF   09,W
0080:  MOVWF  FE1
0082:  MOVF   0A,W
0084:  MOVWF  FE2
0086:  MOVF   0B,W
0088:  MOVWF  FD9
008A:  MOVF   0C,W
008C:  MOVWF  FDA
008E:  MOVF   05,W
0090:  MOVFF  06,FD8
0094:  RETFIE 0
....................  #include <18F452.h> 
....................  //////// Standard Header file for the PIC18F452 device ////////////////  
.................... #device PIC18F452  
.................... #list  
....................  
....................   
.................... // note that these aren't 'valid' since we use a bootloader  
.................... #fuses   HS, NOPROTECT, NOWDT, PUT, NOBROWNOUT, NOLVP  
....................   
.................... // 20 MHz clock  
.................... #use delay (clock=20000000)  
*
1832:  MOVLW  02
1834:  MOVWF  FEA
1836:  MOVLW  B3
1838:  MOVWF  FE9
183A:  MOVF   FEF,W
183C:  BTFSC  FD8.2
183E:  GOTO   185C
1842:  MOVLW  06
1844:  MOVWF  01
1846:  CLRF   00
1848:  DECFSZ 00,F
184A:  BRA    1848
184C:  DECFSZ 01,F
184E:  BRA    1846
1850:  MOVLW  7B
1852:  MOVWF  00
1854:  DECFSZ 00,F
1856:  BRA    1854
1858:  DECFSZ FEF,F
185A:  BRA    1842
185C:  RETLW  00
....................   
.................... #use rs232 (baud=115200, xmit=PIN_C6, rcv=PIN_C7)  
....................   
.................... long t=0;  
.................... #int_timer2  
.................... void t2() {  
....................    t++;         // increments once a millisecond  
*
17DC:  INCF   15,F
17DE:  BTFSC  FD8.2
17E0:  INCF   16,F
.................... /*   if (t == 1000) {  
....................       t = 0;  
....................       putc('*');  
....................    }  
.................... */  
.................... }  
....................   
.................... //#use i2c(master, sda=PIN_C3, scl=PIN_C2)  
.................... #define SPI_CLK PIN_C0  
.................... #define SPI_SDO PIN_C1  
.................... #define I2C_SCL PIN_C2  
.................... #define I2C_SDA PIN_C3  
.................... #define MP3_DATAREQ PIN_A4  
.................... #define ENABLE_MP3 PIN_C4  
.................... #define MP3_RESET PIN_A0  
....................   
.................... #define BUTTON_VOLUP PIN_B1  
.................... #define BUTTON_VOLDN PIN_B4  
.................... #define BUTTON_1 PIN_B3  
.................... #define BUTTON_2 PIN_B5  
.................... #define BUTTON_3 PIN_B6  
.................... #define BUTTON_4 PIN_B7  
....................   
.................... // Disable automatic TRIS programming for all ports  
.................... #use fast_io(a)  
.................... #use fast_io(b)  
.................... #use fast_io(d)  
.................... #use fast_io(e)  
.................... #use fast_io(c)  
....................   
.................... #define nop #asm nop #endasm  
....................   
.................... #define TRIS_A    	0b001000  	// rst, mp3data, rdy, /we, /oe, /rst  
.................... #define TRIS_B    	0b11111010 	// 5 buttons, nc, button, /ce  
.................... #define TRIS_E		   0b000    	// all out addr pins  
.................... #define TRIS_C_I2CSEND		0b11100000	// 2 buttons (rx/tx), cd1, mp3enable, sda (i2c send), scl, sta_sdi, sta_sclk  
17E2:  BCF    F9E.1
17E4:  GOTO   005C
.................... #define TRIS_C_I2CRECV		0b11110000	// 2 buttons (rx/tx), cd1, mp3enable, sda (i2c recv), scl, sta_sdi, sta_sclk  
....................   
.................... byte sectorbuff[512];  
....................   
.................... #include "mp3.h" 
....................  #define BUTTON_NEXT 2  
.................... #define BUTTON_PREV 3  
.................... #define BUTTON_PAUSE 4  
....................   
.................... #define NEXT_TRACK 2  
.................... #define PREV_TRACK 3  
.................... #define PLAYPAUSE 4  
.................... #define STOP 5  
.................... boolean PAUSED = false;  
....................   
.................... #define EE_LASTVOLUME  2  
....................   
.................... void step() {  
....................    printf("step ");  
....................    getc();  
.................... }  
....................   
....................   
.................... void halt() {  
....................    printf("halting");  
....................    while (1);  
.................... }  
....................   
.................... int fromHex(char hex) {  
....................    if(hex >= '0' && hex <= '9')  
*
32D8:  MOVLB  2
32DA:  MOVF   xA7,W
32DC:  SUBLW  2F
32DE:  BTFSC  FD8.0
32E0:  GOTO   32F8
32E4:  MOVF   xA7,W
32E6:  SUBLW  39
32E8:  BTFSS  FD8.0
32EA:  GOTO   32F8
....................       return(hex - 48); // 0 --> 0  
32EE:  MOVLW  30
32F0:  SUBWF  xA7,W
32F2:  MOVWF  01
32F4:  GOTO   3338
....................    if(hex >= 'a' && hex <= 'f')  
32F8:  MOVF   xA7,W
32FA:  SUBLW  60
32FC:  BTFSC  FD8.0
32FE:  GOTO   3316
3302:  MOVF   xA7,W
3304:  SUBLW  66
3306:  BTFSS  FD8.0
3308:  GOTO   3316
....................       return(hex - 87);  // a --> 10  
330C:  MOVLW  57
330E:  SUBWF  xA7,W
3310:  MOVWF  01
3312:  GOTO   3338
....................    if(hex >= 'A' && hex <= 'F')  
3316:  MOVF   xA7,W
3318:  SUBLW  40
331A:  BTFSC  FD8.0
331C:  GOTO   3334
3320:  MOVF   xA7,W
3322:  SUBLW  46
3324:  BTFSS  FD8.0
3326:  GOTO   3334
....................       return(hex - 55); // A --> 10  
332A:  MOVLW  37
332C:  SUBWF  xA7,W
332E:  MOVWF  01
3330:  GOTO   3338
....................   
....................    // Still here?? Invalid  
....................    return(20);          
3334:  MOVLW  14
3336:  MOVWF  01
3338:  MOVLB  0
333A:  RETLW  00
.................... }  
....................   
....................   
.................... void blink_led(void) {/*  
.................... 	output_high(LED);  
.................... 	delay_ms(100);  
.................... 	output_low(LED);*/  
.................... }  
....................   
.................... byte ScanHex() {  
....................    char c;   
....................    byte hex = 20;  
333C:  MOVLW  14
333E:  MOVLB  2
3340:  MOVWF  xA5
....................    byte ret;  
....................    while (hex == 20) {  
3342:  MOVF   xA5,W
3344:  SUBLW  14
3346:  BTFSS  FD8.2
3348:  GOTO   336A
....................       c = getc();  
334C:  BTFSS  F9E.5
334E:  GOTO   334C
3352:  MOVF   FAE,W
3354:  MOVWF  xA4
....................       hex = fromHex(c);  
3356:  MOVLB  0
3358:  MOVFF  2A4,2A7
335C:  CALL   32D8
3360:  MOVFF  01,2A5
....................    }  
3364:  MOVLB  2
3366:  GOTO   3342
....................    putc(c);  
336A:  MOVF   xA4,W
336C:  BTFSS  F9E.4
336E:  GOTO   336C
3372:  MOVWF  FAD
....................    ret = hex << 4;  
3374:  SWAPF  xA5,W
3376:  MOVWF  xA6
3378:  MOVLW  F0
337A:  ANDWF  xA6,F
....................    hex = 20;  
337C:  MOVLW  14
337E:  MOVWF  xA5
....................    while (hex == 20) {  
3380:  MOVF   xA5,W
3382:  SUBLW  14
3384:  BTFSS  FD8.2
3386:  GOTO   33A8
....................       c = getc();  
338A:  BTFSS  F9E.5
338C:  GOTO   338A
3390:  MOVF   FAE,W
3392:  MOVWF  xA4
....................       hex = fromHex(c);  
3394:  MOVLB  0
3396:  MOVFF  2A4,2A7
339A:  CALL   32D8
339E:  MOVFF  01,2A5
....................    }  
33A2:  MOVLB  2
33A4:  GOTO   3380
....................    putc(c);  
33A8:  MOVF   xA4,W
33AA:  BTFSS  F9E.4
33AC:  GOTO   33AA
33B0:  MOVWF  FAD
....................    ret |= hex;  
33B2:  MOVF   xA5,W
33B4:  IORWF  xA6,F
....................    return ret;  
33B6:  MOVF   xA6,W
33B8:  MOVWF  01
33BA:  MOVLB  0
33BC:  RETLW  00
.................... }  
....................   
.................... int16 Scan16Hex() {  
....................    int16 ret;  
....................   
....................    ret = ScanHex() << 8;  
33BE:  CALL   333C
33C2:  MOVFF  01,2A3
33C6:  MOVLB  2
33C8:  CLRF   xA2
....................    ret |= ScanHex();  
33CA:  MOVLB  0
33CC:  CALL   333C
33D0:  MOVF   01,W
33D2:  MOVLB  2
33D4:  IORWF  xA2,F
....................    return ret;  
33D6:  MOVF   xA2,W
33D8:  MOVWF  01
33DA:  MOVF   xA3,W
33DC:  MOVWF  02
33DE:  MOVLB  0
33E0:  RETLW  00
.................... }  
....................   
.................... int32 Scan32Hex() {  
....................    int32 ret;  
....................   
....................    ret = Scan16Hex() << 16;  
33E2:  CALL   33BE
33E6:  MOVFF  02,2A1
33EA:  MOVFF  01,2A0
33EE:  MOVLB  2
33F0:  CLRF   x9E
33F2:  CLRF   x9F
....................    ret |= Scan16Hex();  
33F4:  MOVLB  0
33F6:  CALL   33BE
33FA:  MOVF   01,W
33FC:  MOVLB  2
33FE:  IORWF  x9E,F
3400:  MOVF   02,W
3402:  IORWF  x9F,F
....................    return ret;  
3404:  MOVLB  0
3406:  MOVFF  29E,00
340A:  MOVFF  29F,01
340E:  MOVFF  2A0,02
3412:  MOVFF  2A1,03
3416:  RETLW  00
.................... }  
....................      
....................      
....................      
....................      
....................  
.................... #include "cf.c" 
....................  #include "cf.h" 
....................  #define CF_A0      PIN_E0  
.................... #define CF_A1      PIN_E1  
.................... #define CF_A2      PIN_E2  
....................   
.................... #define CF_OE      PIN_A1  
.................... #define CF_WE      PIN_A2  
.................... #define CF_READY   PIN_A3  
.................... #define CF_RESET   PIN_A5  
.................... #define CF_CD      PIN_C5  
.................... #define CF_CE	    PIN_B0  
.................... #define TRIS_D_INPUT  0xFF  	// 11111111  
.................... #define TRIS_D_OUTPUT 0x00  	// 00000000  
....................   
.................... #byte CF_DATA	= 0x08  	/* Port D */  
.................... #byte CF_DATA_TRIS = 0x88 	/* Port D TRIS */  
....................   
.................... // wait for the CF RDY line to go high, ie ready for next command  
.................... #define waitforready()  while (!input(CF_READY))  
....................   
.................... #define  REG_DATA		0x00	// ADDRESS OF DATA REGISTER  
.................... #define  REG_ERROR		0x01	// ADDRESS OF ERROR REGISTER  
.................... #define  REG_FEATURES		0x01	// ADDRESS OF FEATURES REGISTER  
.................... #define  REG_SECTORCOUNT	0x02	// ADDRESS OF SECTOR COUNT REGISTER  
.................... #define  REG_SECTORNUM		0x03	// ADDRESS OF SECTOR NUMBER REGISTER  
.................... #define  REG_CYLINDERLOW	0x04	// ADDRESS OF LOW CYLINDER REGISTER  
.................... #define  REG_CYLINDERHIGH	0x05	// ADDRESS OF HIGH CYLINDER REGISTER  

⌨️ 快捷键说明

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