📄 main.lis
字号:
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 + -