📄 main.lis
字号:
.module main.c
.area data(ram, con, rel)
0000 _MP3_current_number::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\MYWORK~1\开发设计\AVR-MP3\mp3开发板光盘\驱动程序\MP3BOA~1.8\main.c
0001 .dbsym e MP3_current_number _MP3_current_number c
0001 _set_volume::
0001 .blkb 1
.area idata
0001 04 .byte 4
.area data(ram, con, rel)
0002 .dbfile E:\MYWORK~1\开发设计\AVR-MP3\mp3开发板光盘\驱动程序\MP3BOA~1.8\main.c
0002 .dbsym e set_volume _set_volume c
.area text(rom, con, rel)
0000 .dbfile E:\MYWORK~1\开发设计\AVR-MP3\mp3开发板光盘\驱动程序\MP3BOA~1.8\main.c
0000 .dbfunc e Delay_us _Delay_us fV
0000 ; time -> R16,R17
.even
0000 _Delay_us::
0000 .dbline -1
0000 .dbline 24
0000 ; //ICC-AVR application builder : 2005-11-12 17:11:59
0000 ; // Target : M16
0000 ; // Crystal: 8.0000Mhz
0000 ; // copyright:鲁军波(endylu)
0000 ; // www.shop34612283.taobao.com
0000 ; // www.adembed.com
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include "main.h"
0000 ;
0000 ; uint8 timer1_over;
0000 ; uint8 MP3_all_number,MP3_current_number=0;
0000 ; uint8 play_state;
0000 ; uint8 key_value;
0000 ; uint8 set_volume=4; //用的8级音量(64.69...99)
0000 ; uint8 buffer[512]; //缓存扇区的512个字节
0000 ;
0000 ; FAT_INFO fat_info; //FAT的关键数据
0000 ; MP3_INFO mp3_info; //文件的关键数据
0000 ;
0000 ;
0000 ; //=======================================================================
0000 ; void Delay_us(uint16 time) //set time 120 to 100us,set 1 to 3.5us;
0000 ; {while (time--)
0000 01C0 xjmp L3
0002 L2:
0002 .dbline 25
0002 A895 wdr
0004 L3:
0004 .dbline 24
0004 1801 movw R2,R16
0006 0150 subi R16,1
0008 1040 sbci R17,0
000A 2220 tst R2
000C D1F7 brne L2
000E 3320 tst R3
0010 C1F7 brne L2
0012 X0:
0012 .dbline -2
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbsym r time 16 i
0014 .dbend
0014 .dbfunc e Delay_ms _Delay_ms fV
0014 ; time -> R20,R21
.even
0014 _Delay_ms::
0014 0E940000 xcall push_gset1
0018 A801 movw R20,R16
001A .dbline -1
001A .dbline 29
001A ; _WDR();
001A ;
001A ; }
001A ; void Delay_ms(uint16 time)
001A ; {while (time--)
001A 03C0 xjmp L7
001C L6:
001C .dbline 30
001C 00EB ldi R16,1200
001E 14E0 ldi R17,4
0020 EFDF xcall _Delay_us
0022 L7:
0022 .dbline 29
0022 1A01 movw R2,R20
0024 4150 subi R20,1
0026 5040 sbci R21,0
0028 2220 tst R2
002A C1F7 brne L6
002C 3320 tst R3
002E B1F7 brne L6
0030 X1:
0030 .dbline -2
0030 L5:
0030 0E940000 xcall pop_gset1
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r time 20 i
0036 .dbend
0036 .dbfunc e putstring _putstring fV
0036 ; string -> R20,R21
.even
0036 _putstring::
0036 0E940000 xcall push_gset1
003A A801 movw R20,R16
003C .dbline -1
003C .dbline 34
003C ; Delay_us(1200);
003C ; }
003C ;
003C ; void putstring(uint8 *string)
003C ; {
003C 07C0 xjmp L11
003E L10:
003E .dbline 36
003E .dbline 37
003E FA01 movw R30,R20
0040 0081 ldd R16,z+0
0042 1127 clr R17
0044 0E940000 xcall _putchar
0048 .dbline 38
0048 4F5F subi R20,255 ; offset = 1
004A 5F4F sbci R21,255
004C .dbline 39
004C L11:
004C .dbline 35
004C ; while(*string)
004C FA01 movw R30,R20
004E 2080 ldd R2,z+0
0050 2220 tst R2
0052 A9F7 brne L10
0054 .dbline -2
0054 L9:
0054 0E940000 xcall pop_gset1
0058 .dbline 0 ; func end
0058 0895 ret
005A .dbsym r string 20 pc
005A .dbend
005A .dbfunc e timer1_init _timer1_init fV
.even
005A _timer1_init::
005A .dbline -1
005A .dbline 43
005A ; {
005A ; putchar(*string);
005A ; string++;
005A ; }
005A ; }
005A ; //***************************************************************
005A ; void timer1_init(void)
005A ; {//timer1 INIT 0.1S
005A .dbline 44
005A ; TCCR1B=0X0D;
005A 8DE0 ldi R24,13
005C 8EBD out 0x2e,R24
005E .dbline 45
005E ; TCNT0=0X00;
005E 2224 clr R2
0060 22BE out 0x32,R2
0062 .dbline 46
0062 ; OCR1AH=0X02; //定时0.1s
0062 82E0 ldi R24,2
0064 8BBD out 0x2b,R24
0066 .dbline 47
0066 ; OCR1AL=0X00;
0066 2ABC out 0x2a,R2
0068 .dbline 48
0068 ; TIMSK|=0X10;
0068 89B7 in R24,0x39
006A 8061 ori R24,16
006C 89BF out 0x39,R24
006E .dbline -2
006E L13:
006E .dbline 0 ; func end
006E 0895 ret
0070 .dbend
0070 .dbfunc e ASCII _ASCII fV
0070 ; n -> R22
0070 ; b -> R20,R21
.even
0070 _ASCII::
0070 0E940000 xcall push_gset2
0074 622F mov R22,R18
0076 A801 movw R20,R16
0078 .dbline -1
0078 .dbline 52
0078 ; }
0078 ; //=======================================================================
0078 ; void ASCII(uint8 *b,uint8 n)
0078 ; {*b=n/10+48;
0078 .dbline 52
0078 1AE0 ldi R17,10
007A 062F mov R16,R22
007C 0E940000 xcall div8u
0080 802F mov R24,R16
0082 805D subi R24,208 ; addi 48
0084 FA01 movw R30,R20
0086 8083 std z+0,R24
0088 .dbline 53
0088 ; *(b+1)=n%10+48;
0088 1AE0 ldi R17,10
008A 062F mov R16,R22
008C 0E940000 xcall mod8u
0090 802F mov R24,R16
0092 805D subi R24,208 ; addi 48
0094 FA01 movw R30,R20
0096 8183 std z+1,R24
0098 .dbline -2
0098 L14:
0098 0E940000 xcall pop_gset2
009C .dbline 0 ; func end
009C 0895 ret
009E .dbsym r n 22 c
009E .dbsym r b 20 pc
009E .dbend
.area vector(rom, abs)
.org 76
004C 0C944F00 jmp _timer0comp
.area text(rom, con, rel)
009E .dbfile E:\MYWORK~1\开发设计\AVR-MP3\mp3开发板光盘\驱动程序\MP3BOA~1.8\main.c
009E .dbfunc e timer0comp _timer0comp fV
.even
009E _timer0comp::
009E 0E940000 xcall push_lset
00A2 .dbline -1
00A2 .dbline 59
00A2 ; }
00A2 ;
00A2 ; //=======================================================================
00A2 ; #pragma interrupt_handler timer0comp:20
00A2 ; void timer0comp (void)
00A2 ; {
00A2 .dbline 60
00A2 ; read_keyboard();
00A2 0E940000 xcall _read_keyboard
00A6 .dbline -2
00A6 L15:
00A6 0E940000 xcall pop_lset
00AA .dbline 0 ; func end
00AA 1895 reti
00AC .dbend
.area vector(rom, abs)
.org 24
0018 0C945600 jmp _timer1compA
.area text(rom, con, rel)
00AC .dbfile E:\MYWORK~1\开发设计\AVR-MP3\mp3开发板光盘\驱动程序\MP3BOA~1.8\main.c
00AC .dbfunc e timer1compA _timer1compA fV
.even
00AC _timer1compA::
00AC 8A93 st -y,R24
00AE 8FB7 in R24,0x3f
00B0 8A93 st -y,R24
00B2 .dbline -1
00B2 .dbline 65
00B2 ; }
00B2 ;
00B2 ; #pragma interrupt_handler timer1compA:7
00B2 ; void timer1compA (void)
00B2 ; {
00B2 .dbline 66
00B2 ; timer1_over=1;
00B2 81E0 ldi R24,1
00B4 80934302 sts _timer1_over,R24
00B8 .dbline -2
00B8 L16:
00B8 8991 ld R24,y+
00BA 8FBF out 0x3f,R24
00BC 8991 ld R24,y+
00BE .dbline 0 ; func end
00BE 1895 reti
00C0 .dbend
00C0 .dbfunc e main _main fV
.even
00C0 _main::
00C0 .dbline -1
00C0 .dbline 71
00C0 ; }
00C0 ;
00C0 ; //=======================================================================
00C0 ; void main(void)
00C0 ; {
00C0 .dbline 73
00C0 ; //WDTCR|=(1<<WDP0)|(1<<WDP1)|(1<<WDP2)|(1<<WDE);
00C0 ; uart_init();
00C0 0FD0 xcall _uart_init
00C2 .dbline 74
00C2 ; putstring("RUN!");
00C2 00E0 ldi R16,<L18
00C4 10E0 ldi R17,>L18
00C6 B7DF xcall _putstring
00C8 .dbline 75
00C8 ; main_init();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -