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

📄 main.lis

📁 采用Mega16+VS1011B+SD卡制作的Mp3
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00AC                   .dbsym r hunum 10 c
 00AC                   .dbsym r ShowBit 14 c
 00AC                   .dbsym r ll 12 c
 00AC                   .dbsym r l 20 c
 00AC                   .dbsym l h 11 c
 00AC                   .dbend
 00AC                   .dbfunc e DisplayNumInt _DisplayNumInt fV
 00AC           ;          srnum -> R22
 00AC           ;          tnnum -> R12
 00AC           ;          hunum -> R10
 00AC           ;        ShowBit -> R14
 00AC           ;             ll -> R12,R13
 00AC           ;              l -> R20
 00AC           ;              h -> y+11
                        .even
 00AC           _DisplayNumInt::
 00AC 0E940000          xcall push_arg4
 00B0 0E940000          xcall push_xgsetF0FC
 00B4 422F              mov R20,R18
 00B6 2197              sbiw R28,1
 00B8 CF84              ldd R12,y+15
 00BA D888              ldd R13,y+16
 00BC E988              ldd R14,y+17
 00BE                   .dbline -1
 00BE                   .dbline 95
 00BE           ; }
 00BE           ; 
 00BE           ; //DisplayNumInt该函数主要用于测试显示中间变量
 00BE           ; void DisplayNumInt(unsigned char h,unsigned char l,unsigned int ll,unsigned char ShowBit)
 00BE           ; {
 00BE                   .dbline 97
 00BE           ;   unsigned char hunum,tnnum,srnum;  //百、十、个位
 00BE           ;   hunum=ll/100;       //百位
 00BE 24E6              ldi R18,100
 00C0 30E0              ldi R19,0
 00C2 8601              movw R16,R12
 00C4 0E940000          xcall div16u
 00C8 A02E              mov R10,R16
 00CA                   .dbline 98
 00CA           ;   srnum=ll%10;                //个位
 00CA 2AE0              ldi R18,10
 00CC 30E0              ldi R19,0
 00CE 8601              movw R16,R12
 00D0 0E940000          xcall mod16u
 00D4 602F              mov R22,R16
 00D6                   .dbline 99
 00D6           ;   tnnum=(ll-hunum*100)/10; //十位
 00D6 84E6              ldi R24,100
 00D8 8A9D              mul R24,R10
 00DA 8601              movw R16,R12
 00DC 0019              sub R16,R0
 00DE 1109              sbc R17,R1
 00E0 2AE0              ldi R18,10
 00E2 30E0              ldi R19,0
 00E4 0E940000          xcall div16u
 00E8 C02E              mov R12,R16
 00EA                   .dbline 101
 00EA           ;   
 00EA           ;   hunum+=0x30;srnum+=0x30;tnnum+=0x30;
 00EA 8A2D              mov R24,R10
 00EC 805D              subi R24,208    ; addi 48
 00EE A82E              mov R10,R24
 00F0                   .dbline 101
 00F0 605D              subi R22,208    ; addi 48
 00F2                   .dbline 101
 00F2 8C2D              mov R24,R12
 00F4 805D              subi R24,208    ; addi 48
 00F6 C82E              mov R12,R24
 00F8                   .dbline 102
 00F8           ;   if(ShowBit==3)              //显示百,十,个,位
 00F8 8E2D              mov R24,R14
 00FA 8330              cpi R24,3
 00FC 91F4              brne L8
 00FE           X2:
 00FE                   .dbline 103
 00FE           ;   {
 00FE                   .dbline 104
 00FE           ;      PrintOneASCII(h,l,hunum);PrintOneASCII(h,l+8,tnnum);
 00FE A882              std y+0,R10
 0100 242F              mov R18,R20
 0102 0B85              ldd R16,y+11
 0104 0E940000          xcall _PrintOneASCII
 0108                   .dbline 104
 0108 C882              std y+0,R12
 010A 242F              mov R18,R20
 010C 285F              subi R18,248    ; addi 8
 010E 0B85              ldd R16,y+11
 0110 0E940000          xcall _PrintOneASCII
 0114                   .dbline 105
 0114           ;        PrintOneASCII(h,l+16,srnum);
 0114 6883              std y+0,R22
 0116 242F              mov R18,R20
 0118 205F              subi R18,240    ; addi 16
 011A 0B85              ldd R16,y+11
 011C 0E940000          xcall _PrintOneASCII
 0120                   .dbline 106
 0120           ;   }
 0120 0EC0              xjmp L9
 0122           L8:
 0122                   .dbline 107
 0122           ;   else if(ShowBit==2) //显示十,个,位
 0122 8E2D              mov R24,R14
 0124 8230              cpi R24,2
 0126 59F4              brne L10
 0128           X3:
 0128                   .dbline 108
 0128           ;   {
 0128                   .dbline 109
 0128           ;        PrintOneASCII(h,l,tnnum);PrintOneASCII(h,l+8,srnum);
 0128 C882              std y+0,R12
 012A 242F              mov R18,R20
 012C 0B85              ldd R16,y+11
 012E 0E940000          xcall _PrintOneASCII
 0132                   .dbline 109
 0132 6883              std y+0,R22
 0134 242F              mov R18,R20
 0136 285F              subi R18,248    ; addi 8
 0138 0B85              ldd R16,y+11
 013A 0E940000          xcall _PrintOneASCII
 013E                   .dbline 110
 013E           ;   }
 013E           L10:
 013E           L9:
 013E                   .dbline -2
 013E           L7:
 013E                   .dbline 0 ; func end
 013E 2196              adiw R28,1
 0140 0E940000          xcall pop_xgsetF0FC
 0144 2496              adiw R28,4
 0146 0895              ret
 0148                   .dbsym r srnum 22 c
 0148                   .dbsym r tnnum 12 c
 0148                   .dbsym r hunum 10 c
 0148                   .dbsym r ShowBit 14 c
 0148                   .dbsym r ll 12 i
 0148                   .dbsym r l 20 c
 0148                   .dbsym l h 11 c
 0148                   .dbend
 0148                   .dbfunc e MMCFntHZ _MMCFntHZ fpc
 0148           ;        flgover -> <dead>
 0148           ;    FntStartBlk -> y+10
 0148           ;     Dir_Attrib -> R14
 0148           ;          HzNmL -> R12
 0148           ;          HzNmH -> R14
 0148           ;            Blk -> y+6
 0148           ;       InOffset -> R12,R13
 0148           ;           Hzpt -> y+2
 0148           ;          HzChr -> R12,R13
 0148           ;          buffp -> R10,R11
                        .even
 0148           _MMCFntHZ::
 0148 0E940000          xcall push_xgsetF0FC
 014C 6901              movw R12,R18
 014E 5801              movw R10,R16
 0150 2E97              sbiw R28,14
 0152                   .dbline -1
 0152                   .dbline 115
 0152           ; }
 0152           ; 
 0152           ; //从SD卡上读取汉字字型信息,输入汉字的内码号(常指针),返回汉字的字型指针
 0152           ; unsigned char * MMCFntHZ(unsigned char *buffp,unsigned char *HzChr)   
 0152           ; {
 0152                   .dbline 120
 0152           ;     unsigned int  InOffset;
 0152           ;       unsigned long Blk,Hzpt,FntStartBlk;             //字库文件的起始扇区
 0152           ;       unsigned char HzNmH,HzNmL;
 0152           ;       unsigned char flgover;
 0152           ;       unsigned char Dir_Attrib = 0;
 0152                   .dbline 122
 0152           ;       //汉字在汉字库中的位置=汉字点阵数*[(区码-A0h-1)*94+(位码-A0h-1)]
 0152           ;       HzNmH=HzChr[0];HzNmL=HzChr[1];
 0152 F601              movw R30,R12
 0154 E080              ldd R14,z+0
 0156                   .dbline 122
 0156 3196              adiw R30,1
 0158 C080              ldd R12,z+0
 015A                   .dbline 127
 015A           ;       //显示内码:
 015A           ;       //DisplayLong(HzNmH*65536+HzNmL,3);
 015A           ;       //Delay(500);
 015A           ;       /////
 015A           ;       Hzpt=32*((HzNmH-0xA0-1)*(unsigned long)94+(HzNmL-0xA0-1));
 015A 8E2D              mov R24,R14
 015C 9927              clr R25
 015E 805A              subi R24,160
 0160 9040              sbci R25,0
 0162 0197              sbiw R24,1
 0164 1C01              movw R2,R24
 0166 4424              clr R4
 0168 37FC              sbrc R3,7
 016A 4094              com R4
 016C 5524              clr R5
 016E 47FC              sbrc R4,7
 0170 5094              com R5
 0172 4EE5              ldi R20,94
 0174 50E0              ldi R21,0
 0176 60E0              ldi R22,0
 0178 70E0              ldi R23,0
 017A 5A92              st -y,R5
 017C 4A92              st -y,R4
 017E 3A92              st -y,R3
 0180 2A92              st -y,R2
 0182 8A01              movw R16,R20
 0184 9B01              movw R18,R22
 0186 0E940000          xcall empy32u
 018A 1801              movw R2,R16
 018C 2901              movw R4,R18
 018E 8C2D              mov R24,R12
 0190 9927              clr R25
 0192 805A              subi R24,160
 0194 9040              sbci R25,0
 0196 0197              sbiw R24,1
 0198 3C01              movw R6,R24
 019A 8824              clr R8
 019C 77FC              sbrc R7,7
 019E 8094              com R8
 01A0 9924              clr R9
 01A2 87FC              sbrc R8,7
 01A4 9094              com R9
 01A6 260C              add R2,R6
 01A8 371C              adc R3,R7
 01AA 481C              adc R4,R8
 01AC 591C              adc R5,R9
 01AE 40E2              ldi R20,32
 01B0 50E0              ldi R21,0
 01B2 60E0              ldi R22,0
 01B4 70E0              ldi R23,0
 01B6 5A92              st -y,R5
 01B8 4A92              st -y,R4
 01BA 3A92              st -y,R3
 01BC 2A92              st -y,R2
 01BE 8A01              movw R16,R20
 01C0 9B01              movw R18,R22
 01C2 0E940000          xcall empy32u
 01C6 0A83              std y+2,R16
 01C8 1B83              std y+3,R17
 01CA 2C83              std y+4,R18
 01CC 3D83              std y+5,R19
 01CE                   .dbline 133
 01CE           ;       //显示汉字字型在字库中的位置:
 01CE           ;       //DisplayLong(Hzpt,1);
 01CE           ;       //Delay(500);
 01CE           ;       /////
 01CE           ;       //由汉字内码,计算它所在的扇区号和偏移位置
 01CE           ;       Blk=Hzpt/512;InOffset=Hzpt%512;  //512是每个扇区的大小
 01CE 89E0              ldi R24,9
 01D0 90E0              ldi R25,0
 01D2 0A81              ldd R16,y+2
 01D4 1B81              ldd R17,y+3
 01D6 2C81              ldd R18,y+4
 01D8 3D81              ldd R19,y+5
 01DA 8A93              st -y,R24
 01DC 0E940000          xcall lsr32
 01E0 0E83              std y+6,R16
 01E2 1F83              std y+7,R17
 01E4 2887              std y+8,R18
 01E6 3987              std y+9,R19
 01E8                   .dbline 133
 01E8 4FEF              ldi R20,255
 01EA 51E0              ldi R21,1
 01EC 60E0              ldi R22,0
 01EE 70E0              ldi R23,0
 01F0 2A80              ldd R2,y+2
 01F2 3B80              ldd R3,y+3
 01F4 4C80              ldd R4,y+4
 01F6 5D80              ldd R5,y+5
 01F8 2422              and R2,R20
 01FA 3522              and R3,R21
 01FC 4622              and R4,R22
 01FE 5722              and R5,R23
 0200 6101              movw R12,R2
 0202                   .dbline 139
 0202           ;       //显示汉字字型在字库中的位置(扇区为单位):       
 0202           ;       //DisplayLong(Blk*65536+InOffset,2);
 0202           ;       //Delay(500);
 0202           ;       //////////////////
 0202           ;       //读取该文件:
 0202           ;       MMC_SD_ReadSingleBlock((FONT_ClusterVar-2)*SecPerClus+data_offset+Blk,buffp);
 0202 B982              std y+1,R11
 0204 A882              std y+0,R10
 0206 42E0              ldi R20,2
 0208 50E0              ldi R21,0
 020A 60E0              ldi R22,0
 020C 70E0              ldi R23,0
 020E 20910200          lds R18,_FONT_ClusterVar+2
 0212 30910300          lds R19,_FONT_ClusterVar+2+1
 0216 00910000          lds R16,_FONT_ClusterVar
 021A 10910100          lds R17,_FONT_ClusterVar+1
 021E 041B              sub R16,R20
 0220 150B              sbc R17,R21
 0222 260B              sbc R18,R22
 0224 370B              sbc R19,R23
 0226 20900000          lds R2,_SecPerClus
 022A 3324              clr R3
 022C 4424              clr R4
 022E 5524              clr R5
 0230 5A92              st -y,R5
 0232 4A92              st -y,R4
 0234 3A92              st -y,R3
 0236 2A92              st -y,R2
 0238 0E940000          xcall empy32u
 023C 1801              movw R2,R16
 023E 2901              movw R4,R18
 0240 80900200          lds R8,_data_offset+2
 0244 90900300          lds R9,_data_offset+2+1
 0248 60900000          lds R6,_data_offset
 024C 70900100          lds R7,_data_offset+1
 0250 260C              add R2,R6
 0252 371C              adc R3,R7
 0254 481C              adc R4,R8
 0256 591C              adc R5,R9
 0258 6E80              ldd R6,y+6
 025A 7F80              ldd R7,y+7
 025C 8884              ldd R8,y+8
 025E 9984              ldd R9,y+9
 0260 260C              add R2,R6

⌨️ 快捷键说明

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