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

📄 main.lis

📁 基于ATmega64的MP3程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .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 D:\TDDownload\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 D:\TDDownload\MP3BOA~1.8\main.c
 0002                   .dbsym e set_volume _set_volume c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\TDDownload\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 35
 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 <stdio.h> 
 0000           ; #include "main.h"
 0000           ; 
 0000           ; /*
 0000           ; void USART_TXD(uint8 data) //发送采用查询方式 
 0000           ; { 
 0000           ;         while( !(UCSRA & BIT(UDRE)) ); 
 0000           ;         UDR=data; 
 0000           ;         while( !(UCSRA & BIT(TXC )) ); 
 0000           ;         UCSRA|=BIT(TXC); 
 0000           ; } 
 0000           ; */
 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 36
 0002 A895              wdr
 0004           L3:
 0004                   .dbline 35
 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 40
 001A           ;        _WDR();
 001A           ;       
 001A           ;       }
 001A           ; void Delay_ms(uint16 time) 
 001A           ;       {while (time--)
 001A 03C0              xjmp L7
 001C           L6:
 001C                   .dbline 41
 001C 00EB              ldi R16,1200
 001E 14E0              ldi R17,4
 0020 EFDF              xcall _Delay_us
 0022           L7:
 0022                   .dbline 40
 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 45
 003C           ;        Delay_us(1200);
 003C           ;       }
 003C           ; 
 003C           ; void putstring(uint8 *string) 
 003C           ; {
 003C 06C0              xjmp L11
 003E           L10:
 003E                   .dbline 47
 003E                   .dbline 48
 003E FA01              movw R30,R20
 0040 0081              ldd R16,z+0
 0042 0E940000          xcall _putchar
 0046                   .dbline 49
 0046 4F5F              subi R20,255  ; offset = 1
 0048 5F4F              sbci R21,255
 004A                   .dbline 50
 004A           L11:
 004A                   .dbline 46
 004A           ;        while(*string)
 004A FA01              movw R30,R20
 004C 2080              ldd R2,z+0
 004E 2220              tst R2
 0050 B1F7              brne L10
 0052                   .dbline -2
 0052           L9:
 0052 0E940000          xcall pop_gset1
 0056                   .dbline 0 ; func end
 0056 0895              ret
 0058                   .dbsym r string 20 pc
 0058                   .dbend
 0058                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0058           _timer1_init::
 0058                   .dbline -1
 0058                   .dbline 54
 0058           ;          {
 0058           ;           putchar(*string);
 0058           ;               string++;
 0058           ;          }
 0058           ; }
 0058           ; //***************************************************************
 0058           ; void timer1_init(void)
 0058           ; {//timer1 INIT 0.1S
 0058                   .dbline 55
 0058           ;  TCCR1B=0X0D;
 0058 8DE0              ldi R24,13
 005A 8EBD              out 0x2e,R24
 005C                   .dbline 56
 005C           ;  TCNT0=0X00;
 005C 2224              clr R2
 005E 22BE              out 0x32,R2
 0060                   .dbline 57
 0060           ;  OCR1AH=0X02;         //定时0.1s
 0060 82E0              ldi R24,2
 0062 8BBD              out 0x2b,R24
 0064                   .dbline 58
 0064           ;  OCR1AL=0X00;
 0064 2ABC              out 0x2a,R2
 0066                   .dbline 59
 0066           ;  TIMSK|=0X10;
 0066 89B7              in R24,0x39
 0068 8061              ori R24,16
 006A 89BF              out 0x39,R24
 006C                   .dbline -2
 006C           L13:
 006C                   .dbline 0 ; func end
 006C 0895              ret
 006E                   .dbend
 006E                   .dbfunc e ASCII _ASCII fV
 006E           ;              n -> R22
 006E           ;              b -> R20,R21
                        .even
 006E           _ASCII::
 006E 0E940000          xcall push_gset2
 0072 622F              mov R22,R18
 0074 A801              movw R20,R16
 0076                   .dbline -1
 0076                   .dbline 63
 0076           ; }
 0076           ; //=======================================================================
 0076           ; void ASCII(uint8 *b,uint8 n)
 0076           ; {*b=n/10+48;
 0076                   .dbline 63
 0076 1AE0              ldi R17,10
 0078 062F              mov R16,R22
 007A 0E940000          xcall div8u
 007E 802F              mov R24,R16
 0080 805D              subi R24,208    ; addi 48
 0082 FA01              movw R30,R20
 0084 8083              std z+0,R24
 0086                   .dbline 64
 0086           ;  *(b+1)=n%10+48;
 0086 1AE0              ldi R17,10
 0088 062F              mov R16,R22
 008A 0E940000          xcall mod8u
 008E 802F              mov R24,R16
 0090 805D              subi R24,208    ; addi 48
 0092 FA01              movw R30,R20
 0094 8183              std z+1,R24
 0096                   .dbline -2
 0096           L14:
 0096 0E940000          xcall pop_gset2
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbsym r n 22 c
 009C                   .dbsym r b 20 pc
 009C                   .dbend
                        .area vector(rom, abs)
                        .org 76
 004C 0C944E00          jmp _timer0comp
                        .area text(rom, con, rel)
 009C                   .dbfile D:\TDDownload\MP3BOA~1.8\main.c
 009C                   .dbfunc e timer0comp _timer0comp fV
                        .even
 009C           _timer0comp::
 009C 0E940000          xcall push_lset
 00A0                   .dbline -1
 00A0                   .dbline 70
 00A0           ; }
 00A0           ; 
 00A0           ; //=======================================================================
 00A0           ; #pragma interrupt_handler timer0comp:20
 00A0           ; void timer0comp (void)
 00A0           ; { 
 00A0                   .dbline 71
 00A0           ;  read_keyboard();
 00A0 0E940000          xcall _read_keyboard
 00A4                   .dbline -2
 00A4           L15:
 00A4 0E940000          xcall pop_lset
 00A8                   .dbline 0 ; func end
 00A8 1895              reti
 00AA                   .dbend
                        .area vector(rom, abs)
                        .org 24
 0018 0C945500          jmp _timer1compA
                        .area text(rom, con, rel)
 00AA                   .dbfile D:\TDDownload\MP3BOA~1.8\main.c
 00AA                   .dbfunc e timer1compA _timer1compA fV
                        .even
 00AA           _timer1compA::
 00AA 8A93              st -y,R24
 00AC 8FB7              in R24,0x3f
 00AE 8A93              st -y,R24
 00B0                   .dbline -1
 00B0                   .dbline 76
 00B0           ; }
 00B0           ; 
 00B0           ; #pragma interrupt_handler timer1compA:7
 00B0           ; void timer1compA (void)
 00B0           ; {
 00B0                   .dbline 77
 00B0           ;  timer1_over=1;
 00B0 81E0              ldi R24,1
 00B2 80934302          sts _timer1_over,R24
 00B6                   .dbline -2
 00B6           L16:
 00B6 8991              ld R24,y+
 00B8 8FBF              out 0x3f,R24
 00BA 8991              ld R24,y+
 00BC                   .dbline 0 ; func end
 00BC 1895              reti
 00BE                   .dbend
 00BE                   .dbfunc e main _main fV
                        .even
 00BE           _main::
 00BE                   .dbline -1
 00BE                   .dbline 82
 00BE           ; }
 00BE           ; 
 00BE           ; //=======================================================================
 00BE           ; void main(void)
 00BE           ; { 
 00BE                   .dbline 84
 00BE           ;   //WDTCR|=(1<<WDP0)|(1<<WDP1)|(1<<WDP2)|(1<<WDE);
 00BE           ;   uart_init();
 00BE 0FD0              xcall _uart_init

⌨️ 快捷键说明

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