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

📄 main.lis

📁 基于ATmega64的MP3程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00C0                   .dbline 85
 00C0           ;   putstring("RUN!");
 00C0 00E0              ldi R16,<L18
 00C2 10E0              ldi R17,>L18
 00C4 B8DF              xcall _putstring
 00C6                   .dbline 86
 00C6           ;   main_init();
 00C6 14D0              xcall _main_init
 00C8                   .dbline 88
 00C8           ; 
 00C8           ;   for(;;)
 00C8           L19:
 00C8                   .dbline 89
 00C8                   .dbline 90
 00C8 0E940000          xcall _SONG_task
 00CC                   .dbline 91
 00CC A895              wdr
 00CE                   .dbline 92
 00CE 0E940000          xcall _KBOD_task
 00D2                   .dbline 93
 00D2 A895              wdr
 00D4                   .dbline 94
 00D4 0E940000          xcall _DISP_task
 00D8                   .dbline 95
 00D8 A895              wdr
 00DA                   .dbline 96
 00DA                   .dbline 88
 00DA                   .dbline 88
 00DA F6CF              xjmp L19
 00DC           X2:
 00DC                   .dbline -2
 00DC           L17:
 00DC                   .dbline 0 ; func end
 00DC 0895              ret
 00DE                   .dbend
 00DE                   .dbfunc e uart_init _uart_init fV
                        .even
 00DE           _uart_init::
 00DE                   .dbline -1
 00DE                   .dbline 102
 00DE           ;   {
 00DE           ;    SONG_task();
 00DE           ;    _WDR();
 00DE           ;    KBOD_task();
 00DE           ;    _WDR();
 00DE           ;    DISP_task();
 00DE           ;    _WDR();
 00DE           ;    }
 00DE           ; }
 00DE           ; 
 00DE           ; 
 00DE           ; //=======================================================================
 00DE           ; void uart_init(void)           //用232串口发数据到PC,收集数据
 00DE           ;   {
 00DE                   .dbline 103
 00DE           ;     UCSRB=(1<<RXEN)|(1<<TXEN);//允许发送和接收
 00DE 88E1              ldi R24,24
 00E0 8AB9              out 0xa,R24
 00E2                   .dbline 104
 00E2           ;     UBRRH=1;
 00E2 81E0              ldi R24,1
 00E4 80BD              out 0x20,R24
 00E6                   .dbline 105
 00E6           ;       UBRRL=0X9E;
 00E6 8EE9              ldi R24,158
 00E8 89B9              out 0x9,R24
 00EA                   .dbline 106
 00EA           ;     UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位
 00EA 86E8              ldi R24,134
 00EC 80BD              out 0x20,R24
 00EE                   .dbline -2
 00EE           L23:
 00EE                   .dbline 0 ; func end
 00EE 0895              ret
 00F0                   .dbend
 00F0                   .dbfunc e main_init _main_init fV
                        .even
 00F0           _main_init::
 00F0 2597              sbiw R28,5
 00F2                   .dbline -1
 00F2                   .dbline 112
 00F2           ;   }
 00F2           ; 
 00F2           ; 
 00F2           ; //=======================================================================
 00F2           ; void main_init(void)
 00F2           ; {
 00F2                   .dbline 113
 00F2           ;  I2C_Ini();
 00F2 0E940000          xcall _I2C_Ini
 00F6                   .dbline 114
 00F6           ;  STA013_Ini(); 
 00F6 0E940000          xcall _STA013_Ini
 00FA                   .dbline 115
 00FA           ;  buffer[0]=SDInit();    //里面有SPI的使能初始化,要放在LCD初始化的前面
 00FA 0E940000          xcall _SDInit
 00FE 00934000          sts _buffer,R16
 0102                   .dbline 116
 0102           ;  LCD_init();          //初始化LCD模块
 0102 0E940000          xcall _LCD_init
 0106                   .dbline 120
 0106           ;                       //显示LOGO
 0106           ;  
 0106           ;  
 0106           ;  if(buffer[0])
 0106 20904000          lds R2,_buffer
 010A 2220              tst R2
 010C 81F0              breq L25
 010E                   .dbline 121
 010E           ;    {
 010E                   .dbline 122
 010E           ;     LCD_write_String(0,1,12,"SD INIT ERR!",0);
 010E 2224              clr R2
 0110 2C82              std y+4,R2
 0112 80E0              ldi R24,<L27
 0114 90E0              ldi R25,>L27
 0116 9B83              std y+3,R25
 0118 8A83              std y+2,R24
 011A 8CE0              ldi R24,12
 011C 8883              std y+0,R24
 011E 21E0              ldi R18,1
 0120 0027              clr R16
 0122 0E940000          xcall _LCD_write_String
 0126                   .dbline 123
 0126           ;       putstring("SD INIT ERR!");
 0126 00E0              ldi R16,<L27
 0128 10E0              ldi R17,>L27
 012A 85DF              xcall _putstring
 012C           L28:
 012C                   .dbline 124
 012C           L29:
 012C                   .dbline 124
 012C           ;     while(1);
 012C FFCF              xjmp L28
 012E           X3:
 012E                   .dbline 125
 012E           ;    } 
 012E           L25:
 012E                   .dbline 126
 012E           ;  LCD_write_String(0,1,11,"SD INIT OK!",0);
 012E 2224              clr R2
 0130 2C82              std y+4,R2
 0132 80E0              ldi R24,<L31
 0134 90E0              ldi R25,>L31
 0136 9B83              std y+3,R25
 0138 8A83              std y+2,R24
 013A 8BE0              ldi R24,11
 013C 8883              std y+0,R24
 013E 21E0              ldi R18,1
 0140 0027              clr R16
 0142 0E940000          xcall _LCD_write_String
 0146                   .dbline 127
 0146           ;  putstring("SD INIT OK!"); 
 0146 00E0              ldi R16,<L31
 0148 10E0              ldi R17,>L31
 014A 75DF              xcall _putstring
 014C                   .dbline 129
 014C           ;  
 014C           ;  sta_Init();
 014C 0E940000          xcall _sta_Init
 0150                   .dbline 130
 0150           ;  LCD_write_String(0,2,10,"STA013 OK!",0);
 0150 2224              clr R2
 0152 2C82              std y+4,R2
 0154 80E0              ldi R24,<L32
 0156 90E0              ldi R25,>L32
 0158 9B83              std y+3,R25
 015A 8A83              std y+2,R24
 015C 8AE0              ldi R24,10
 015E 8883              std y+0,R24
 0160 22E0              ldi R18,2
 0162 0027              clr R16
 0164 0E940000          xcall _LCD_write_String
 0168                   .dbline 131
 0168           ;  putstring("STA013 OK!");
 0168 00E0              ldi R16,<L32
 016A 10E0              ldi R17,>L32
 016C 64DF              xcall _putstring
 016E                   .dbline 133
 016E           ;  
 016E           ;  if(FATinit())
 016E 0E940000          xcall _FATinit
 0172 0023              tst R16
 0174 81F0              breq L33
 0176                   .dbline 134
 0176           ;    {
 0176                   .dbline 135
 0176           ;     LCD_write_String(0,3,13,"FAT INIT ERR!",0);
 0176 2224              clr R2
 0178 2C82              std y+4,R2
 017A 80E0              ldi R24,<L35
 017C 90E0              ldi R25,>L35
 017E 9B83              std y+3,R25
 0180 8A83              std y+2,R24
 0182 8DE0              ldi R24,13
 0184 8883              std y+0,R24
 0186 23E0              ldi R18,3
 0188 0027              clr R16
 018A 0E940000          xcall _LCD_write_String
 018E                   .dbline 136
 018E           ;       putstring("FAT INIT ERR!");
 018E 00E0              ldi R16,<L35
 0190 10E0              ldi R17,>L35
 0192 51DF              xcall _putstring
 0194           L36:
 0194                   .dbline 137
 0194           L37:
 0194                   .dbline 137
 0194           ;     while(1);
 0194 FFCF              xjmp L36
 0196           X4:
 0196                   .dbline 138
 0196           ;    }
 0196           L33:
 0196                   .dbline 139
 0196           ;  LCD_write_String(0,3,12,"FAT INIT OK!",0);
 0196 2224              clr R2
 0198 2C82              std y+4,R2
 019A 80E0              ldi R24,<L39
 019C 90E0              ldi R25,>L39
 019E 9B83              std y+3,R25
 01A0 8A83              std y+2,R24
 01A2 8CE0              ldi R24,12
 01A4 8883              std y+0,R24
 01A6 23E0              ldi R18,3
 01A8 0027              clr R16
 01AA 0E940000          xcall _LCD_write_String
 01AE                   .dbline 140
 01AE           ;  putstring("FAT INIT OK!");
 01AE 00E0              ldi R16,<L39
 01B0 10E0              ldi R17,>L39
 01B2 41DF              xcall _putstring
 01B4                   .dbline 142
 01B4           ;  
 01B4           ;  Mp3_number_Counter();
 01B4 0E940000          xcall _Mp3_number_Counter
 01B8                   .dbline 144
 01B8           ; 
 01B8           ;  if(MP3_all_number==0)
 01B8 20904202          lds R2,_MP3_all_number
 01BC 2220              tst R2
 01BE 81F4              brne L40
 01C0                   .dbline 145
 01C0           ;     {
 01C0                   .dbline 146
 01C0           ;        LCD_write_String(0,4,13,"HAVE NOT MP3!",0);     //启动3310显示没有MP3文件
 01C0 2224              clr R2
 01C2 2C82              std y+4,R2
 01C4 80E0              ldi R24,<L42
 01C6 90E0              ldi R25,>L42
 01C8 9B83              std y+3,R25
 01CA 8A83              std y+2,R24
 01CC 8DE0              ldi R24,13
 01CE 8883              std y+0,R24
 01D0 24E0              ldi R18,4
 01D2 0027              clr R16
 01D4 0E940000          xcall _LCD_write_String
 01D8                   .dbline 147
 01D8           ;        putstring("HAVE NOT MP3!");
 01D8 00E0              ldi R16,<L42
 01DA 10E0              ldi R17,>L42
 01DC 2CDF              xcall _putstring
 01DE           L43:
 01DE                   .dbline 148
 01DE           L44:
 01DE                   .dbline 148
 01DE           ;        while(1);
 01DE FFCF              xjmp L43
 01E0           X5:
 01E0                   .dbline 149
 01E0           ;       }
 01E0           L40:
 01E0                   .dbline 151
 01E0           ;  
 01E0           ;  Delay_ms(500);
 01E0 04EF              ldi R16,500
 01E2 11E0              ldi R17,1
 01E4 17DF              xcall _Delay_ms
 01E6                   .dbline 152
 01E6           ;  LCD_clear();          
 01E6 0E940000          xcall _LCD_clear
 01EA                   .dbline 154
 01EA           ;                     
 01EA           ;  LCD_set_XY(0,2);
 01EA 22E0              ldi R18,2
 01EC 0027              clr R16
 01EE 0E940000          xcall _LCD_set_XY
 01F2                   .dbline 155
 01F2           ;  LCD_write_byte(0xFF,1);
 01F2 21E0              ldi R18,1
 01F4 0FEF              ldi R16,255
 01F6 0E940000          xcall _LCD_write_byte
 01FA                   .dbline 156
 01FA           ;  LCD_write_byte(0x01,1);
 01FA 21E0              ldi R18,1
 01FC 01E0              ldi R16,1
 01FE 0E940000          xcall _LCD_write_byte
 0202                   .dbline 158
 0202           ;  
 0202           ;  LCD_set_XY(82,2);

⌨️ 快捷键说明

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