main.lis
来自「Atmega64单片机程序(完整工程)」· LIS 代码 · 共 271 行
LIS
271 行
.module main.c
.area data(ram, con, rel)
0000 _WritFileData::
0000 .blkb 21
.area idata
0000 46696C652073797374656D2074657374 .byte 'F,'i,'l,'e,32,'s,'y,'s,'t,'e,'m,32,'t,'e,'s,'t
0010 2121210A00 .byte 33,33,33,10,0
.area data(ram, con, rel)
.area text(rom, con, rel)
; c -> R20
.even
0000 __StackOverflowed::
0000 0E940000 xcall push_gset1
0004 402F mov R20,R16
0006 ; #include "SYS_Config.h"
0006 ; #include "GUI_Config.h"
0006 ; #include "FS_Config.h"
0006 ; #include "time.h"
0006 ; #include "KeyScan.h"
0006 ;
0006 ; #include "SD_Config.h"
0006 ;
0006 ; #include "GUI.h"
0006 ; #include "Picture.h"
0006 ;
0006 ; #include "SD_EEPROM.h"
0006 ; #include "SD_Drive.h"
0006 ; #include "USART1.h"
0006 ; #include "TEST_SD.h"
0006 ;
0006 ; #include "fat.h"
0006 ;
0006 ; INT8U Data_Buf[SD_BLOCKSIZE];
0006 ; INT8U WritFileData[]="File system test!!!\n";
0006 ;
0006 ; //注明:堆在设为64,设为32会出现硬件堆在溢出的情况!!!
0006 ; extern void MenuMainLoop(void);
0006 ; //编译时间
0006 ; extern void DispBuildTime(void);
0006 ;
0006 ; void _StackOverflowed(char c)
0006 ; {
0006 ; if (c == 1)
0006 4130 cpi R20,1
0008 29F4 brne L2
000A ; Uart1_SendString("\ntrashed HW stack\n");
000A 00E0 ldi R16,<L4
000C 10E0 ldi R17,>L4
000E 0E940000 xcall _Uart1_SendString
0012 04C0 xjmp L3
0014 L2:
0014 ; else
0014 ; Uart1_SendString("\ntrashed SW stack\n");
0014 00E0 ldi R16,<L5
0016 10E0 ldi R17,>L5
0018 0E940000 xcall _Uart1_SendString
001C L3:
001C L1:
001C 0E940000 xcall pop_gset1
0020 .dbline 0 ; func end
0020 0895 ret
0022 ; i -> <dead>
.even
0022 _main::
0022 2397 sbiw R28,3
0024 ; }
0024 ;
0024 ;
0024 ; HANDLE FHandle;//文件系统句柄
0024 ; void main(void)
0024 ; {
0024 ; INT8U i;
0024 ;
0024 ; GUI_Delay(500);//等待系统稳定,再作初始化
0024 04EF ldi R16,500
0026 11E0 ldi R17,1
0028 0E940000 xcall _GUI_Delay
002C ;
002C ; CLI();//关中断,对模块函数进行初始化
002C F894 cli
002E ; timer0_init();
002E 0E940000 xcall _timer0_init
0032 ; timer2_init();
0032 0E940000 xcall _timer2_init
0036 ;
0036 ; #if USART1_EN
0036 ; Uart1_Init();
0036 0E940000 xcall _Uart1_Init
003A ; #endif
003A ;
003A ; #if (USART1_EN==1&&SD_MMC_TEST_EN==1)
003A ; Test_SD_Initialize(); //SD卡初始化(带串口输出功能)
003A ; #else
003A ; SD_Initialize();
003A 0E940000 xcall _SD_Initialize
003E ; #endif
003E ;
003E ; GUI_Init();
003E 0E940000 xcall _GUI_Init
0042 ; //编译时间
0042 ; DispBuildTime();
0042 0E940000 xcall _DispBuildTime
0046 ; GUI_Delay(10000);
0046 00E1 ldi R16,10000
0048 17E2 ldi R17,39
004A 0E940000 xcall _GUI_Delay
004E ;
004E ; SEI();//开中断
004E 7894 sei
0050 ;
0050 ; //GUI_Display_Image(PIC_FAT);
0050 ;
0050 ; #if SD_MMC_TEST_EN
0050 ; SD_MMC_TEST(); //测试SD卡各项功能函数,正常使用时使SD_MMC_TEST_EN=0
0050 ; #endif
0050 ;
0050 ; DiskInit(); //初始化磁盘管理模块
0050 0E940000 xcall _DiskInit
0054 ; AddFileDriver( SD_Command );//加载SD卡驱动程序
0054 00E0 ldi R16,<PL_SD_Command
0056 10E0 ldi R17,>PL_SD_Command
0058 0E940000 xcall _AddFileDriver
005C ; FileInit();
005C 0E940000 xcall _FileInit
0060 ;
0060 ; Uart1_SendString("\n\nMakeDir:");
0060 00E0 ldi R16,<L7
0062 10E0 ldi R17,>L7
0064 0E940000 xcall _Uart1_SendString
0068 ; MakeDir("a:\\蒋金雄");
0068 00E0 ldi R16,<L8
006A 10E0 ldi R17,>L8
006C 0E940000 xcall _MakeDir
0070 ;
0070 ; //Uart1_SendString("\n\nFileOpen_W:");
0070 ; //FHandle = FileOpen("a:\\蒋金雄\\JJX.txt","w");
0070 ;
0070 ; //Uart1_SendString("\n\nFileWrite:");
0070 ; //FileWrite(WritFileData,sizeof(WritFileData), FHandle);
0070 ;
0070 ; //Uart1_SendString("\n\nFileClose:");
0070 ; //FileClose(FHandle);
0070 ;
0070 ; Uart1_SendString("\n\nFileOpen:");
0070 00E0 ldi R16,<L9
0072 10E0 ldi R17,>L9
0074 0E940000 xcall _Uart1_SendString
0078 ; FHandle = FileOpen("a:\\蒋金雄\\JJX.txt","r");
0078 20E0 ldi R18,<L11
007A 30E0 ldi R19,>L11
007C 00E0 ldi R16,<L10
007E 10E0 ldi R17,>L10
0080 0E940000 xcall _FileOpen
0084 00930000 sts _FHandle,R16
0088 ;
0088 ; Uart1_SendString("\n\nFileRead:");
0088 00E0 ldi R16,<L12
008A 10E0 ldi R17,>L12
008C 0E940000 xcall _Uart1_SendString
0090 ; FileRead(Data_Buf,512,FHandle);
0090 20900000 lds R2,_FHandle
0094 2A82 std y+2,R2
0096 40E0 ldi R20,0
0098 52E0 ldi R21,2
009A 60E0 ldi R22,0
009C 70E0 ldi R23,0
009E 6883 std y+0,R22
00A0 7983 std y+1,R23
00A2 9A01 movw R18,R20
00A4 00E0 ldi R16,<_Data_Buf
00A6 10E0 ldi R17,>_Data_Buf
00A8 0E940000 xcall _FileRead
00AC ;
00AC ; Uart1_SendString("\n\nFileClose:");
00AC 00E0 ldi R16,<L13
00AE 10E0 ldi R17,>L13
00B0 0E940000 xcall _Uart1_SendString
00B4 ; FileClose(FHandle);
00B4 00910000 lds R16,_FHandle
00B8 0E940000 xcall _FileClose
00BC ;
00BC ; Uart1_SendString("\n\nOUTPUT:");
00BC 00E0 ldi R16,<L14
00BE 10E0 ldi R17,>L14
00C0 0E940000 xcall _Uart1_SendString
00C4 ; Uart1_SendString(Data_Buf);
00C4 00E0 ldi R16,<_Data_Buf
00C6 10E0 ldi R17,>_Data_Buf
00C8 0E940000 xcall _Uart1_SendString
00CC ;
00CC ;
00CC ; AllCacheWriteBack();
00CC 0E940000 xcall _AllCacheWriteBack
00D0 ; RemoveFileDriver(0);
00D0 0027 clr R16
00D2 0E940000 xcall _RemoveFileDriver
00D6 04C0 xjmp L16
00D8 L15:
00D8 0E940000 xcall __StackCheck
00DC 0E940000 xcall _MenuMainLoop
00E0 L16:
00E0 ;
00E0 ; while(1)
00E0 FBCF xjmp L15
00E2 X0:
00E2 L6:
00E2 2396 adiw R28,3
00E4 .dbline 0 ; func end
00E4 0895 ret
.area bss(ram, con, rel)
0000 _FHandle::
0000 .blkb 1
0001 _Data_Buf::
0001 .blkb 512
.area data(ram, con, rel)
0015 L14:
0015 .blkb 10
.area idata
0015 0A0A4F55545055543A00 .byte 10,10,'O,'U,'T,'P,'U,'T,58,0
.area data(ram, con, rel)
001F L13:
001F .blkb 13
.area idata
001F 0A0A46696C65436C6F73653A00 .byte 10,10,'F,'i,'l,'e,'C,'l,'o,'s,'e,58,0
.area data(ram, con, rel)
002C L12:
002C .blkb 12
.area idata
002C 0A0A46696C65526561643A00 .byte 10,10,'F,'i,'l,'e,'R,'e,'a,'d,58,0
.area data(ram, con, rel)
0038 L11:
0038 .blkb 2
.area idata
0038 7200 .byte 'r,0
.area data(ram, con, rel)
003A L10:
003A .blkb 18
.area idata
003A 613A5CBDAFBDF0D0DB5C4A4A582E7478 .byte 'a,58,92,189,175,189,240,208,219,92,'J,'J,'X,46,'t,'x
004A 7400 .byte 't,0
.area data(ram, con, rel)
004C L9:
004C .blkb 12
.area idata
004C 0A0A46696C654F70656E3A00 .byte 10,10,'F,'i,'l,'e,'O,'p,'e,'n,58,0
.area data(ram, con, rel)
0058 L8:
0058 .blkb 10
.area idata
0058 613A5CBDAFBDF0D0DB00 .byte 'a,58,92,189,175,189,240,208,219,0
.area data(ram, con, rel)
0062 L7:
0062 .blkb 11
.area idata
0062 0A0A4D616B654469723A00 .byte 10,10,'M,'a,'k,'e,'D,'i,'r,58,0
.area data(ram, con, rel)
006D L5:
006D .blkb 19
.area idata
006D 0A747261736865642053572073746163 .byte 10,'t,'r,'a,'s,'h,'e,'d,32,'S,'W,32,'s,'t,'a,'c
007D 6B0A00 .byte 'k,10,0
.area data(ram, con, rel)
0080 L4:
0080 .blkb 19
.area idata
0080 0A747261736865642048572073746163 .byte 10,'t,'r,'a,'s,'h,'e,'d,32,'H,'W,32,'s,'t,'a,'c
0090 6B0A00 .byte 'k,10,0
.area data(ram, con, rel)
.area func_lit
0000 0000 PL_SD_Command: .word `_SD_Command
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?