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

📄 fat.lis

📁 采用Atmeag162单片机来制作的U盘程序源码
💻 LIS
字号:
                        .module Fat.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\AvrUSB\Fat.c
 0000                   .dbfunc e BPB_Local _BPB_Local fi
 0000           ;        NumFATs -> R10
 0000           ;        FATSz16 -> R20,R21
 0000           ;     RootEntCnt -> R22,R23
 0000           ;     BytsPerSec -> R12,R13
 0000           ;          value -> R20,R21
                        .even
 0000           _BPB_Local::
 0000 0E940000          xcall push_gset4
 0004 2297              sbiw R28,2
 0006                   .dbline -1
 0006                   .dbline 11
 0006           ; #include <iom162v.h>
 0006           ; #include <macros.h>
 0006           ; #include <stdio.h>
 0006           ; #include <string.h>
 0006           ; 
 0006           ; #include "Flash.h"
 0006           ; #include "Fat.h"
 0006           ; 
 0006           ; extern unsigned char PageBuf[512];
 0006           ; unsigned int BPB_Local()
 0006           ; {
 0006                   .dbline 14
 0006           ;    unsigned int  BytsPerSec,RootEntCnt, FATSz16,value;
 0006           ;    unsigned char NumFATs;   
 0006           ;    ReadPage(0,0,PageBuf);
 0006 80E0              ldi R24,<_PageBuf
 0008 90E0              ldi R25,>_PageBuf
 000A 9983              std y+1,R25
 000C 8883              std y+0,R24
 000E 2227              clr R18
 0010 3327              clr R19
 0012 0027              clr R16
 0014 1127              clr R17
 0016 0E940000          xcall _ReadPage
 001A                   .dbline 15
 001A           ;    if(PageBuf[510]!=0x55&&PageBuf[511]!=0xAA)return 16;
 001A 8091FE01          lds R24,_PageBuf+510
 001E 8535              cpi R24,85
 0020 39F0              breq L2
 0022 8091FF01          lds R24,_PageBuf+511
 0026 8A3A              cpi R24,170
 0028 19F0              breq L2
 002A                   .dbline 15
 002A 00E1              ldi R16,16
 002C 10E0              ldi R17,0
 002E 4AC0              xjmp L1
 0030           L2:
 0030                   .dbline 16
 0030           ;    BytsPerSec=PageBuf[12]*256+PageBuf[11];
 0030 20910C00          lds R18,_PageBuf+12
 0034 3327              clr R19
 0036 00E0              ldi R16,256
 0038 11E0              ldi R17,1
 003A 0E940000          xcall empy16s
 003E 6801              movw R12,R16
 0040 20900B00          lds R2,_PageBuf+11
 0044 3324              clr R3
 0046 C20C              add R12,R2
 0048 D31C              adc R13,R3
 004A                   .dbline 17
 004A           ;    NumFATs=PageBuf[16];
 004A A0901000          lds R10,_PageBuf+16
 004E                   .dbline 18
 004E           ;    RootEntCnt=PageBuf[18]*256+PageBuf[17]; 
 004E 20911200          lds R18,_PageBuf+18
 0052 3327              clr R19
 0054 00E0              ldi R16,256
 0056 11E0              ldi R17,1
 0058 0E940000          xcall empy16s
 005C B801              movw R22,R16
 005E 20901100          lds R2,_PageBuf+17
 0062 3324              clr R3
 0064 620D              add R22,R2
 0066 731D              adc R23,R3
 0068                   .dbline 19
 0068           ;    FATSz16=PageBuf[23]*256+PageBuf[22]; 
 0068 20911700          lds R18,_PageBuf+23
 006C 3327              clr R19
 006E 00E0              ldi R16,256
 0070 11E0              ldi R17,1
 0072 0E940000          xcall empy16s
 0076 A801              movw R20,R16
 0078 20901600          lds R2,_PageBuf+22
 007C 3324              clr R3
 007E 420D              add R20,R2
 0080 531D              adc R21,R3
 0082                   .dbline 20
 0082           ;    value=FATSz16*NumFATs*(BytsPerSec/512);
 0082 29E0              ldi R18,9
 0084 30E0              ldi R19,0
 0086 8601              movw R16,R12
 0088 0E940000          xcall lsr16
 008C 1801              movw R2,R16
 008E 2A2D              mov R18,R10
 0090 3327              clr R19
 0092 8A01              movw R16,R20
 0094 0E940000          xcall empy16s
 0098 9101              movw R18,R2
 009A 0E940000          xcall empy16s
 009E A801              movw R20,R16
 00A0                   .dbline 21
 00A0           ;    value+=RootEntCnt/16;//(32/512)
 00A0 1B01              movw R2,R22
 00A2 3694              lsr R3
 00A4 2794              ror R2
 00A6 3694              lsr R3
 00A8 2794              ror R2
 00AA 3694              lsr R3
 00AC 2794              ror R2
 00AE 3694              lsr R3
 00B0 2794              ror R2
 00B2 420D              add R20,R2
 00B4 531D              adc R21,R3
 00B6                   .dbline 22
 00B6           ;    return (value+1)/32;
 00B6 25E0              ldi R18,5
 00B8 30E0              ldi R19,0
 00BA 8A01              movw R16,R20
 00BC 0F5F              subi R16,255  ; offset = 1
 00BE 1F4F              sbci R17,255
 00C0 0E940000          xcall lsr16
 00C4                   .dbline -2
 00C4           L1:
 00C4 2296              adiw R28,2
 00C6 0E940000          xcall pop_gset4
 00CA                   .dbline 0 ; func end
 00CA 0895              ret
 00CC                   .dbsym r NumFATs 10 c
 00CC                   .dbsym r FATSz16 20 i
 00CC                   .dbsym r RootEntCnt 22 i
 00CC                   .dbsym r BytsPerSec 12 i
 00CC                   .dbsym r value 20 i
 00CC                   .dbend

⌨️ 快捷键说明

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