📄 main.s
字号:
.module main.c
.area vector(rom, abs)
.org 56
jmp _AD_handler
.org 36
jmp _TC0_handler
.area data(ram, con, rel)
_AVR_bmp::
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 128,224
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 252,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 127,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 254,252
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 240,193
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 15,127
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 254,240
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 192,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 192,248
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 254,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,63
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 7,193
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 240,254
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,31
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 7,143
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 207,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 254,252
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,128
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 240,252
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,127
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 127,'x
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 'x,'y
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 127,127
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 252,240
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 193,7
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 31,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,254
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 252,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 31,7
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 193,240
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 254,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,63
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 15,15
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 127,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,255
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 255,231
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 7,3
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 1,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 2,3
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,3
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 3,31
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 63,31
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 7,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,2
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 1,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,3
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 3,0
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile C:\AVR\M\1/bmp_pixel.h
.dbsym e AVR_bmp _AVR_bmp A[144:144]c
.area text(rom, con, rel)
.dbfile C:\AVR\M\1/bmp_pixel.h
.dbfile C:\AVR\M\1\main.c
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 23
; #include "SPI.h"
; #include "Usart.h"
; #include "fat.h"
; #include "vs1003.h"
; #include "AD_key.h"
; #include "3310LCD_function.h"
; #include "bmp_pixel.h"
; extern struct DISK_FAT_INFO DiskFATInfo;
; extern struct MUSIC_INFO MusicInfoList[3];
;
; //-------------- 音乐播放程序 -------------------//
;
; void VS1003_Play(void);
;
;
;
; //----------------- ------------------------------
; //
; // 主函数
; //
; //------------------------------------------------
; void main()
; {
.dbline 27
;
; // Usart_Init(9600); // 串口初始化9600bps
;
; SPI_Init(); // SPI初始化,默认速度400Hz
xcall _SPI_Init
.dbline 30
;
;
; LCD_init();
xcall _LCD_init
.dbline 31
; VS1003_Init(); // VS1003芯片初始化
xcall _VS1003_Init
L2:
.dbline 33
L3:
.dbline 33
;
; while(SD_Init()); // SD卡循环初始化
xcall _SD_Init
tst R16
brne L2
.dbline 35
;
; Fat_Init(); // 文件系统初始化
xcall _Fat_Init
.dbline 36
; AD_Init(); // AD初始化
xcall _AD_Init
.dbline 37
; TC0_Init(); // T/C0初始化
xcall _TC0_Init
.dbline 38
; VS1003_Play(); // 音乐播放
xcall _VS1003_Play
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e VS1003_Play _VS1003_Play fV
; j -> y+18
; num -> y+14
; music_num -> y+25
; music_last -> R12
; music_next -> R14
; play_flag -> y+24
; i -> y+10
; size_buf -> y+6
; vol_flag -> R10
; n -> y+2
; data_pointer -> y+22
.even
_VS1003_Play::
xcall push_gset5
sbiw R28,26
.dbline -1
.dbline 49
; }
;
;
;
; //----------------- ------------------------------
; //
; // 音乐播放函数
; //
; //------------------------------------------------
; void VS1003_Play(void)
; {
.dbline 51
; uint32 n;
; uint32 i,j=46;
ldi R20,46
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+18,R20
std z+19,R21
std z+20,R22
std z+21,R23
.dbline 52
; uint32 size_buf=0; // 已播放的文件大小
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+6,R20
std z+7,R21
std z+8,R22
std z+9,R23
.dbline 54
; uint32 num; // 音乐文件所在的簇
; uint8 music_num=0; // 正在播放文件的号码
clr R0
std y+25,R0
.dbline 55
; uint8 play_flag=1; // 播放标志
clr R0
inc R0
std y+24,R0
.dbline 56
; uint16 data_pointer=0;
clr R0
clr R1
std y+23,R1
std y+22,R0
.dbline 57
; uint8 music_next=0,music_last=0; // 音乐换曲标志
clr R14
.dbline 57
clr R12
.dbline 58
; uint8 vol_flag=0; // 音量调节标志
clr R10
.dbline 60
;
; AD_Flag=0; // AD键盘标志
clr R2
sts _AD_Flag,R2
.dbline 61
; AD_time=0; // AD键盘采样次数
sts _AD_time,R2
.dbline 62
; key_num=0; // 按键号
sts _key_num,R2
.dbline 64
;
; GetMusicFile(); // 获取音乐文件
xcall _GetMusicFile
.dbline 66
;
; num = MusicInfoList[0].FileStartClustor; // 调用音乐文件
lds R4,_MusicInfoList+33+2
lds R5,_MusicInfoList+33+2+1
lds R2,_MusicInfoList+33
lds R3,_MusicInfoList+33+1
movw R30,R28
std z+14,R2
std z+15,R3
std z+16,R4
std z+17,R5
xjmp L8
L7:
.dbline 69
;
; while(1)
; {
.dbline 70
; LCD_clear();
xcall _LCD_clear
.dbline 71
; LCD_write_english_string(j,3,MusicInfoList[music_num].FileName);
ldi R24,41
ldd R0,y+25
mul R24,R0
movw R2,R0
ldi R24,<_MusicInfoList
ldi R25,>_MusicInfoList
add R2,R24
adc R3,R25
std y+1,R3
std y+0,R2
ldi R18,3
movw R30,R28
ldd R16,z+18
xcall _LCD_write_english_string
.dbline 72
; for(i=0;i<DiskFATInfo.SectorsPerClustor;i++)
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+10,R20
std z+11,R21
std z+12,R22
std z+13,R23
xjmp L13
L10:
.dbline 73
; {
.dbline 74
; SD_ReadBlock(DiskFATInfo.FDT_LBA+(num-DiskFATInfo.FDT_StartClustor)*DiskFATInfo.SectorsPerClustor+i,Fat_Buffer); // 获取音乐文件的数据
ldi R24,<_Fat_Buffer
ldi R25,>_Fat_Buffer
std y+1,R25
std y+0,R24
lds R2,_DiskFATInfo+12
lds R3,_DiskFATInfo+12+1
clr R4
clr R5
movw R30,R28
ldd R6,z+14
ldd R7,z+15
ldd R8,z+16
ldd R9,z+17
sub R6,R2
sbc R7,R3
sbc R8,R4
sbc R9,R5
lds R2,_DiskFATInfo+17
clr R3
clr R4
clr R5
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R6
movw R18,R8
xcall empy32u
lds R4,_DiskFATInfo+4+2
lds R5,_DiskFATInfo+4+2+1
lds R2,_DiskFATInfo+4
lds R3,_DiskFATInfo+4+1
add R2,R16
adc R3,R17
adc R4,R18
adc R5,R19
movw R30,R28
ldd R6,z+10
ldd R7,z+11
ldd R8,z+12
ldd R9,z+13
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
movw R16,R2
movw R18,R4
xcall _SD_ReadBlock
L18:
.dbline 76
; do
; {
.dbline 79
; //--------------------------- AD按键检测 ---------------------------//
;
; if(key_num==6&&AD_time==0)play_flag=1; // Key6按下,播放
lds R24,_key_num
cpi R24,6
brne L21
lds R2,_AD_time
tst R2
brne L21
.dbline 79
clr R0
inc R0
std y+24,R0
xjmp L22
L21:
.dbline 80
; else if(key_num==5&&AD_time==0)play_flag=0; // Key5按下,停止
lds R24,_key_num
cpi R24,5
brne L23
lds R2,_AD_time
tst R2
brne L23
.dbline 80
clr R0
std y+24,R0
xjmp L24
L23:
.dbline 81
; else if(key_num==1&&AD_time==0)music_next=1; // Key1按下,下一首
lds R24,_key_num
cpi R24,1
brne L25
lds R2,_AD_time
tst R2
brne L25
.dbline 81
clr R14
inc R14
xjmp L26
L25:
.dbline 82
; else if(key_num==4&&AD_time==0)music_last=1; // Key4按下,上一首
lds R24,_key_num
cpi R24,4
brne L27
lds R2,_AD_time
tst R2
brne L27
.dbline 82
clr R12
inc R12
xjmp L28
L27:
.dbline 83
; else if(key_num==3&&AD_time==0)vol_flag=1; // Key3按下,音量+
lds R24,_key_num
cpi R24,3
brne L29
lds R2,_AD_time
tst R2
brne L29
.dbline 83
clr R10
inc R10
xjmp L30
L29:
.dbline 84
; else if(key_num==2&&AD_time==0)vol_flag=2; // Key2按下,音量-
lds R24,_key_num
cpi R24,2
brne L31
lds R2,_AD_time
tst R2
brne L31
.dbline 84
ldi R24,2
mov R10,R24
L31:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -