📄 main.lis
字号:
.module Main.C
.area text(rom, con, rel)
0000 .dbfile D:\学习\AVRpro\Mega16程序\TestLCD\Main.C
.area lit(rom, con, rel)
0000 _ScreenStr12::
0000 534443617264204572726F7221202020 .byte 'S,'D,'C,'a,'r,'d,32,'E,'r,'r,'o,'r,33,32,32,32
0010 52656164696E67205344436172642020 .byte 'R,'e,'a,'d,'i,'n,'g,32,'S,'D,'C,'a,'r,'d,32,32
0020 464154204552524F5221202020202020 .byte 'F,'A,'T,32,'E,'R,'R,'O,'R,33,32,32,32,32,32,32
0030 4E6F20464F4E542046696C6521202020 .byte 'N,'o,32,'F,'O,'N,'T,32,'F,'i,'l,'e,33,32,32,32
0040 202020464154204552524F5221202020 .byte 32,32,32,'F,'A,'T,32,'E,'R,'R,'O,'R,33,32,32,32
0050 5344436172642072656164206F766572 .byte 'S,'D,'C,'a,'r,'d,32,'r,'e,'a,'d,32,'o,'v,'e,'r
0060 4F70656E204D50332046696C653A2020 .byte 'O,'p,'e,'n,32,'M,'P,51,32,'F,'i,'l,'e,58,32,32
0070 506C6179696E67204D703346696C653A .byte 'P,'l,'a,'y,'i,'n,'g,32,'M,'p,51,'F,'i,'l,'e,58
0080 56533130313120496E692D4661696C21 .byte 'V,'S,49,48,49,49,32,'I,'n,'i,45,'F,'a,'i,'l,33
0090 4D61696E554920446973706C61792120 .byte 'M,'a,'i,'n,'U,'I,32,'D,'i,'s,'p,'l,'a,'y,33,32
00A0 BBB6D3ADCAB9D3C3A3CDA3D0A3B3A3A1 .byte 187,182,211,173,202,185,211,195,163,205,163,208,163,179,163,161
00B0 20566F6C756D6520436F6E74726F6C20 .byte 32,'V,'o,'l,'u,'m,'e,32,'C,'o,'n,'t,'r,'o,'l,32
00C0 4D61783A3235353C3D3D3E4D696E3A30 .byte 'M,'a,'x,58,50,53,53,60,61,61,62,'M,'i,'n,58,48
00D0 4B6579323A2D3C3D3D3E4B6579333A2B .byte 'K,'e,'y,50,58,45,60,61,61,62,'K,'e,'y,51,58,43
00E0 566F6C756D653A202020202020202020 .byte 'V,'o,'l,'u,'m,'e,58,32,32,32,32,32,32,32,32,32
00F0 566F6C756D6520536574204572726F72 .byte 'V,'o,'l,'u,'m,'e,32,'S,'e,'t,32,'E,'r,'r,'o,'r
0100 20312E4241535320566F6C756D652020 .byte 32,49,46,'B,'A,'S,'S,32,'V,'o,'l,'u,'m,'e,32,32
0110 20322E4C6F7720506173732046726571 .byte 32,50,46,'L,'o,'w,32,'P,'a,'s,'s,32,'F,'r,'e,'q
0120 4B6579323A2D3C3D3D3E4B6579333A2B .byte 'K,'e,'y,50,58,45,60,61,61,62,'K,'e,'y,51,58,43
0130 204241535320536574204572726F7220 .byte 32,'B,'A,'S,'S,32,'S,'e,'t,32,'E,'r,'r,'o,'r,32
0140 313A2020202020202020202020202020 .byte 49,58,32,32,32,32,32,32,32,32,32,32,32,32,32,32
0150 323A2020202020202020202020202020 .byte 50,58,32,32,32,32,32,32,32,32,32,32,32,32,32,32
0160 204261636B204C69676874204F6E2E20 .byte 32,'B,'a,'c,'k,32,'L,'i,'g,'h,'t,32,'O,'n,46,32
0170 204261636B204C69676874204F66662E .byte 32,'B,'a,'c,'k,32,'L,'i,'g,'h,'t,32,'O,'f,'f,46
0180 2053686F772054696D65204F6E2E2020 .byte 32,'S,'h,'o,'w,32,'T,'i,'m,'e,32,'O,'n,46,32,32
0190 2053686F772054696D65204F66662E20 .byte 32,'S,'h,'o,'w,32,'T,'i,'m,'e,32,'O,'f,'f,46,32
01A0 20537065616B6572204F6E2E20202020 .byte 32,'S,'p,'e,'a,'k,'e,'r,32,'O,'n,46,32,32,32,32
01B0 20537065616B6572204F66662E202020 .byte 32,'S,'p,'e,'a,'k,'e,'r,32,'O,'f,'f,46,32,32,32
01C0 53657420506C6179506F736974696F6E .byte 'S,'e,'t,32,'P,'l,'a,'y,'P,'o,'s,'i,'t,'i,'o,'n
01D0 .dbfile D:\学习\AVRpro\Mega16程序\TestLCD\ProString.h
01D0 .dbsym e ScreenStr12 _ScreenStr12 A[464:29:16]kc
01D0 _Menustr6::
01D0 312E4261636B204C6967687420 .byte 49,46,'B,'a,'c,'k,32,'L,'i,'g,'h,'t,32
01DD 322E54696D652053686F772020 .byte 50,46,'T,'i,'m,'e,32,'S,'h,'o,'w,32,32
01EA 332E566F6C756D652053657420 .byte 51,46,'V,'o,'l,'u,'m,'e,32,'S,'e,'t,32
01F7 342E4261737320536574202020 .byte 52,46,'B,'a,'s,'s,32,'S,'e,'t,32,32,32
0204 352E537065616B657220536574 .byte 53,46,'S,'p,'e,'a,'k,'e,'r,32,'S,'e,'t
0211 362E676F746F20782066696C65 .byte 54,46,'g,'o,'t,'o,32,'x,32,'f,'i,'l,'e
021E 72656368617267652042617421 .byte 'r,'e,'c,'h,'a,'r,'g,'e,32,'B,'a,'t,33
022B .dbsym e Menustr6 _Menustr6 A[91:7:13]kc
.area data(ram, con, rel)
0000 .dbfile D:\学习\AVRpro\Mega16程序\TestLCD\ProString.h
0000 _Lcdak::
0000 .blkb 1
.area idata
0000 01 .byte 1
.area data(ram, con, rel)
0001 .dbfile D:\学习\AVRpro\Mega16程序\TestLCD\ProString.h
0001 .dbfile D:\学习\AVRpro\Mega16程序\TestLCD\Main.C
0001 .dbsym e Lcdak _Lcdak c
0001 _UsrSel::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile D:\学习\AVRpro\Mega16程序\TestLCD\Main.C
0002 .dbsym e UsrSel _UsrSel c
0002 _SWPlayTime::
0002 .blkb 1
.area idata
0002 01 .byte 1
.area data(ram, con, rel)
0003 .dbfile D:\学习\AVRpro\Mega16程序\TestLCD\Main.C
0003 .dbsym e SWPlayTime _SWPlayTime c
0003 _SWSpeaker::
0003 .blkb 1
.area idata
0003 01 .byte 1
.area data(ram, con, rel)
0004 .dbfile D:\学习\AVRpro\Mega16程序\TestLCD\Main.C
0004 .dbsym e SWSpeaker _SWSpeaker c
0004 _SWIRRemoteMode::
0004 .blkb 1
.area idata
0004 01 .byte 1
.area data(ram, con, rel)
0005 .dbfile D:\学习\AVRpro\Mega16程序\TestLCD\Main.C
0005 .dbsym e SWIRRemoteMode _SWIRRemoteMode c
0005 _CurStatus::
0005 .blkb 1
.area idata
0005 00 .byte 0
.area data(ram, con, rel)
0006 .dbfile D:\学习\AVRpro\Mega16程序\TestLCD\Main.C
0006 .dbsym e CurStatus _CurStatus c
0006 _DEF_MAX_SONGS::
0006 .blkb 2
.area idata
0006 0000 .word 0
.area data(ram, con, rel)
0008 .dbfile D:\学习\AVRpro\Mega16程序\TestLCD\Main.C
0008 .dbsym e DEF_MAX_SONGS _DEF_MAX_SONGS i
.area text(rom, con, rel)
0000 .dbfile D:\学习\AVRpro\Mega16程序\TestLCD\Main.C
0000 .dbfunc e IniData_From_EEPROM _IniData_From_EEPROM fV
0000 ; k -> <dead>
0000 ; j -> <dead>
0000 ; i -> <dead>
.even
0000 _IniData_From_EEPROM::
0000 .dbline -1
0000 .dbline 65
0000 ; //*********************************************
0000 ; //主程序Main.C
0000 ; //MCU:AVR_MEGA16L ,晶振频率:8.0 MHz
0000 ; //制作人:平顶山工学院计算机系,郭猛
0000 ; //**********************************************
0000 ; # include "stdlib.h"
0000 ; # include "iom16v.h"
0000 ; # include "macros.h"
0000 ; # include "LCDFun.h"
0000 ; # include "fat.h"
0000 ; # include "ProString.h"
0000 ; # include "MMC.h"
0000 ; # include "VS1011B.h"
0000 ;
0000 ; #ifndef uchar
0000 ; #define uchar unsigned char
0000 ; #endif
0000 ;
0000 ; #define uint8 unsigned char
0000 ; #define uint16 unsigned int
0000 ; #define uint32 unsigned long
0000 ;
0000 ; //4个控制按键接口:
0000 ; #define KEY01 0 //PB0 前进
0000 ; #define KEY02 1 //PB1
0000 ; #define KEY03 2 //PB2
0000 ; #define KEY04 3 //PB3
0000 ; //KEY01,KEY02,KEY03,KEY04输入
0000 ; # define KeyOutput() DDRB|=(BIT(KEY01)|BIT(KEY02)|BIT(KEY03)|BIT(KEY04))
0000 ; # define KeyIni() PORTB|=(BIT(KEY01)|BIT(KEY02)|BIT(KEY03)|BIT(KEY04))
0000 ; # define KeyInput() DDRB&=~(BIT(KEY01)|BIT(KEY02)|BIT(KEY03)|BIT(KEY04))
0000 ; # define KeySt01 (PINB&=BIT(KEY01)) //获取KEY01状态
0000 ; # define KeySt02 (PINB&=BIT(KEY02)) //获取KEY02状态
0000 ; # define KeySt03 (PINB&=BIT(KEY03)) //获取KEY03状态
0000 ; # define KeySt04 (PINB&=BIT(KEY04)) //获取KEY04状态
0000 ;
0000 ; //外部函数、变量的引用声明
0000 ; extern unsigned char SecPerClus; //每个簇占用的扇区数目,1GB的SD卡应为8
0000 ; extern unsigned long data_offset; //数据区的起始扇区数,FAT32的根目录区和数据区重合:
0000 ;
0000 ; extern unsigned char ShowText_main;
0000 ; extern unsigned char *pointer_FDT; //用于指向找到指定文件的文件名
0000 ; extern unsigned long old_pos_blk,FirstRootDirSecNum;
0000 ;
0000 ; extern unsigned char CurSongTim[3]; //当前歌曲的播放时间 分:秒:百秒
0000 ; extern unsigned char TotalSongTim[4]; //当前歌曲的播放时间 时:分:秒:百秒
0000 ;
0000 ; extern void E2PROM_Write(unsigned int IAddress,unsigned char *Data,unsigned char Cnt);
0000 ; extern unsigned char E2PROM_Read_OneChar(unsigned int IAddress);
0000 ; extern void ADC_Init(void);
0000 ; extern unsigned char ADC_Convert(void);
0000 ; extern void MCUMode(uchar iMode);
0000 ;
0000 ; unsigned char buff[512]; //用于暂存读取一扇区的数据缓冲
0000 ; unsigned char Mp3FileName[8]; //用于保存Mp3歌曲文件名,8字节短名格式
0000 ; unsigned char CurVol,CurBass; //当前音量,低音量
0000 ; unsigned char Lcdak=1,UsrSel=0; //背光开关,用户选择菜单项
0000 ; unsigned char SWPlayTime=1; //时间开关
0000 ; unsigned char SWSpeaker=1,SWIRRemoteMode=1; //扬声器开关,遥控制式
0000 ; unsigned char CurStatus=0; //播放器当前状态
0000 ; unsigned long FONT_ClusterVar; //找到字库文件的起始簇号
0000 ; unsigned int DEF_MAX_SONGS=0; //SD卡根目录下歌曲数目.
0000 ;
0000 ; void IniData_From_EEPROM(void) //从E2PROM中读取音量、低音信息
0000 ; { unsigned char i,j,k;
0000 .dbline 66
0000 ; CurVol=E2PROM_Read_OneChar(0);
0000 0027 clr R16
0002 1127 clr R17
0004 0E940000 xcall _E2PROM_Read_OneChar
0008 00930500 sts _CurVol,R16
000C .dbline 67
000C ; CurBass=E2PROM_Read_OneChar(1);
000C 01E0 ldi R16,1
000E 10E0 ldi R17,0
0010 0E940000 xcall _E2PROM_Read_OneChar
0014 00930400 sts _CurBass,R16
0018 .dbline -2
0018 L1:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbsym l k 1 c
001A .dbsym l j 1 c
001A .dbsym l i 1 c
001A .dbend
001A .dbfunc e DisplayNumChar _DisplayNumChar fV
001A ; srnum -> R22
001A ; tnnum -> R12
001A ; hunum -> R10
001A ; ShowBit -> R14
001A ; ll -> R12
001A ; l -> R20
001A ; h -> y+11
.even
001A _DisplayNumChar::
001A 0E940000 xcall push_arg4
001E 0E940000 xcall push_xgsetF0FC
0022 422F mov R20,R18
0024 2197 sbiw R28,1
0026 CF84 ldd R12,y+15
0028 E988 ldd R14,y+17
002A .dbline -1
002A .dbline 75
002A ; }
002A ;
002A ; //DisplayNumChar用于显示百、十、个的数字值
002A ; //l,h: 行、列位置
002A ; //ll:要显示的数值
002A ; //ShowBit:3,显示百,十,个,位;2,显示十,个,位
002A ; void DisplayNumChar(unsigned char h,unsigned char l,unsigned char ll,unsigned char ShowBit)
002A ; {
002A .dbline 77
002A ; unsigned char hunum,tnnum,srnum; //百、十、个位
002A ; hunum=ll/100; //百位
002A 14E6 ldi R17,100
002C 0C2D mov R16,R12
002E 0E940000 xcall div8u
0032 A02E mov R10,R16
0034 .dbline 78
0034 ; srnum=ll%10; //个位
0034 1AE0 ldi R17,10
0036 0C2D mov R16,R12
0038 0E940000 xcall mod8u
003C 602F mov R22,R16
003E .dbline 79
003E ; tnnum=(ll-hunum*100)/10; //十位
003E 84E6 ldi R24,100
0040 8A9D mul R24,R10
0042 0C2D mov R16,R12
0044 0019 sub R16,R0
0046 1AE0 ldi R17,10
0048 0E940000 xcall div8u
004C C02E mov R12,R16
004E .dbline 81
004E ;
004E ; hunum+=0x30;srnum+=0x30;tnnum+=0x30;
004E 8A2D mov R24,R10
0050 805D subi R24,208 ; addi 48
0052 A82E mov R10,R24
0054 .dbline 81
0054 605D subi R22,208 ; addi 48
0056 .dbline 81
0056 8C2D mov R24,R12
0058 805D subi R24,208 ; addi 48
005A C82E mov R12,R24
005C .dbline 82
005C ; if(ShowBit==3) //显示百,十,个,位
005C 8E2D mov R24,R14
005E 8330 cpi R24,3
0060 91F4 brne L3
0062 X0:
0062 .dbline 83
0062 ; {
0062 .dbline 84
0062 ; PrintOneASCII(h,l,hunum);PrintOneASCII(h,l+8,tnnum);
0062 A882 std y+0,R10
0064 242F mov R18,R20
0066 0B85 ldd R16,y+11
0068 0E940000 xcall _PrintOneASCII
006C .dbline 84
006C C882 std y+0,R12
006E 242F mov R18,R20
0070 285F subi R18,248 ; addi 8
0072 0B85 ldd R16,y+11
0074 0E940000 xcall _PrintOneASCII
0078 .dbline 85
0078 ; PrintOneASCII(h,l+16,srnum);
0078 6883 std y+0,R22
007A 242F mov R18,R20
007C 205F subi R18,240 ; addi 16
007E 0B85 ldd R16,y+11
0080 0E940000 xcall _PrintOneASCII
0084 .dbline 86
0084 ; }
0084 0EC0 xjmp L4
0086 L3:
0086 .dbline 87
0086 ; else if(ShowBit==2) //显示十,个,位
0086 8E2D mov R24,R14
0088 8230 cpi R24,2
008A 59F4 brne L5
008C X1:
008C .dbline 88
008C ; {
008C .dbline 89
008C ; PrintOneASCII(h,l,tnnum);PrintOneASCII(h,l+8,srnum);
008C C882 std y+0,R12
008E 242F mov R18,R20
0090 0B85 ldd R16,y+11
0092 0E940000 xcall _PrintOneASCII
0096 .dbline 89
0096 6883 std y+0,R22
0098 242F mov R18,R20
009A 285F subi R18,248 ; addi 8
009C 0B85 ldd R16,y+11
009E 0E940000 xcall _PrintOneASCII
00A2 .dbline 90
00A2 ; }
00A2 L5:
00A2 L4:
00A2 .dbline -2
00A2 L2:
00A2 .dbline 0 ; func end
00A2 2196 adiw R28,1
00A4 0E940000 xcall pop_xgsetF0FC
00A8 2496 adiw R28,4
00AA 0895 ret
00AC .dbsym r srnum 22 c
00AC .dbsym r tnnum 12 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -