usbdisk.lst

来自「MP3 整个 SDK」· LST 代码 · 共 479 行 · 第 1/2 页

LST
479
字号
   \   00B1            ?0027:
     84                          {
     85                              DisplayIndi=0x00;
   \   00B1  AF                XOR     A
   \   00B2  1860              JR      ?0065
     86                              Display(DisplayIndi);   //显示模块 0:传输结束  01:上传  02:下传
   \   00B4            ?0028:
     87                          }
     88                          break;
   \   00B4            ?0029:
     89              
     90                      case 0x10:
     91                          if(DisplayIndi!=0x01)
   \   00B4  3A0000            LD      A,(DisplayIndi)
   \   00B7  3D                DEC     A
   \   00B8  CA1F00            JP      Z,?0004
   \   00BB            ?0030:
     92                          {
     93                              DisplayIndi=0x01;
   \   00BB  3E01              LD      A,1
   \   00BD  1855              JR      ?0065
     94                              Display(DisplayIndi);   //显示模块 0:传输结束  01:上传  02:下传
   \   00BF            ?0031:
     95                          }
     96                          break;
   \   00BF            ?0032:
     97                      case 0x11://显示Commu
     98                      case 0x21://显示DownLoad
     99                      case 0x31://显示UpLoad
    100                      case 0x41://显示Succ
    101                      case 0x61://显示Succ,退出
    102                          DisplayIndi=USBStatus>>4;
   \   00BF  3A0100            LD      A,(USBStatus)
   \   00C2  1F                RRA
   \   00C3  1F                RRA
   \   00C4  1F                RRA
   \   00C5  1F                RRA
   \   00C6  E60F              AND     15
   \   00C8  320000            LD      (DisplayIndi),A
    103                          if (USBStatus==0x61)
   \   00CB  3A0100            LD      A,(USBStatus)
   \   00CE  FE61              CP      97
   \   00D0  2008              JR      NZ,?0034
   \   00D2            ?0033:
    104                          {
    105                              DisplayIndi -= 1;       //0x61与0x51显示一致
   \   00D2  3A0000            LD      A,(DisplayIndi)
   \   00D5  C6FF              ADD     A,255
   \   00D7  320000            LD      (DisplayIndi),A
   \   00DA            ?0034:
    106                          }
    107                          DisplayIndi+=0x10;
   \   00DA  3A0000            LD      A,(DisplayIndi)
   \   00DD  C610              ADD     A,16
   \   00DF  320000            LD      (DisplayIndi),A
    108                          if(dispIndibak != DisplayIndi)   //保证只显示一次
   \   00E2  47                LD      B,A
   \   00E3  DD7D              LD      A,IXL
   \   00E5  B8                CP      B
   \   00E6  CA1F00            JP      Z,?0004
   \   00E9            ?0035:
    109                          {
    110                              dispIndibak=DisplayIndi;
   \   00E9  DD68              LD      IXL,B
    111                              Display(DisplayIndi);
   \   00EB  1817              JR      ?0066
   \   00ED            ?0036:
    112                          }
    113                          break;
   \   00ED            ?0037:
    114          
    115                      case 0x51:      //切换到adfu
    116                          output8(0x27,input8(0x27) & 0x9f);  //关键盘和RTC中断
   \   00ED  DB27              IN      A,(39)
   \   00EF  E69F              AND     159
   \   00F1  D327              OUT     (39),A
    117                          DisplayIndi=0x10;
   \   00F3  3E10              LD      A,16
   \   00F5  320000            LD      (DisplayIndi),A
    118                          if(dispIndibak != DisplayIndi)      //保证只显示一次
   \   00F8  DD7D              LD      A,IXL
   \   00FA  FE10              CP      16
   \   00FC  CA1F00            JP      Z,?0004
   \   00FF            ?0038:
    119                          {
    120                              dispIndibak=DisplayIndi;
   \   00FF  3A0000            LD      A,(DisplayIndi)
   \   0102  DD6F              LD      IXL,A
    121                              Display(DisplayIndi);
   \   0104            ?0066:
   \   0104  ED5B0000          LD      DE,(DisplayIndi)
   \   0108  180E              JR      ?0064
   \   010A            ?0039:
    122                          }
    123                          break;
   \   010A            ?0040:
    124                      case 0x20:
    125                          if(DisplayIndi!=0x02)
   \   010A  3A0000            LD      A,(DisplayIndi)
   \   010D  3D                DEC     A
   \   010E  3D                DEC     A
   \   010F  CA1F00            JP      Z,?0004
   \   0112            ?0041:
    126                          {
    127                              DisplayIndi=0x02;
   \   0112  3E02              LD      A,2
   \   0114            ?0065:
   \   0114  320000            LD      (DisplayIndi),A
    128                              Display(DisplayIndi);   //显示模块 0:传输结束  01:上传  02:下传
   \   0117  5F                LD      E,A
   \   0118            ?0064:
   \   0118  CD0000            CALL    LWRD Display
   \   011B            ?0042:
    129                          }
    130                          break;
   \   011B  C31F00            JP      LWRD ?0004
   \   011E            ?0043:
    131                      case 0x80:
    132                          sKY_CloseBacklight();
   \   011E  CD0000            CALL    LWRD sKY_CloseBacklight
    133                          ClearScreen(NULL);      //清成白屏
   \   0121  110000            LD      DE,0
   \   0124  CD0000            CALL    LWRD ClearScreen
    134                        //  UpdateScreen(NULL);
    135                       StandbyScreen(0);       //关显示屏
   \   0127  1E00              LD      E,0
   \   0129  CD0000            CALL    LWRD StandbyScreen
    136                          DisplayIndi=0xff;       //置成其他值,为了退出Suspend时能显示
   \   012C  3EFF              LD      A,255
   \   012E  320000            LD      (DisplayIndi),A
    137                          break;
   \   0131  C31F00            JP      LWRD ?0004
   \   0134            ?0044:
    138                      case 0x90:                  //退出Suspend状态
    139                          sKY_OpenBacklight();
   \   0134  CD0000            CALL    LWRD sKY_OpenBacklight
    140                          StandbyScreen(1);       //开显示屏
   \   0137  1E01              LD      E,1
   \   0139  CD0000            CALL    LWRD StandbyScreen
    141                          SetContrast(g_comval.DisplayContrast);      //设对比度
   \   013C  ED5B0800          LD      DE,(g_comval+8)
   \   0140  CD0000            CALL    LWRD SetContrast
    142                          output8(0x27,input8(0x27) | 0x04);
   \   0143  DB27              IN      A,(39)
   \   0145  CBD7              SET     2,A
   \   0147  D327              OUT     (39),A
    143                          break;
   \   0149  C31F00            JP      LWRD ?0004
   \   014C            ?0045:
    144                      default:
    145                          break;
   \   014C            ?0025:
   \   014C            ?0008:
    146                  }
    147                  
    148              }   
    149              
    150               
    151              //~~~~~~~~~~~~~~~~~~~~~
    152              //usb disk exit
    153              //~~~~~~~~~~~~~~~~~~~~~     
    154              UDiskExit();                            //USB退出
   \   014C  CD0000            CALL    LWRD UDiskExit
    155          
    156              ResClose(res_fp);                       //关资源文件
   \   014F  ED5B0000          LD      DE,(res_fp)
   \   0153  CD0000            CALL    LWRD ResClose
    157          
    158              sKY_CloseBacklight();
   \   0156  CD0000            CALL    LWRD sKY_CloseBacklight
    159          
    160              DRV_ActiveUD(0x00,MODE_SLOW);
   \   0159  0E01              LD      C,1
   \   015B  1E00              LD      E,0
   \   015D  CD0000            CALL    LWRD DRV_ActiveUD
    161              
    162          ////////////////////////////     zxs add for card
    163              output8(0x2f,input8(0x2f)|0x04);       //CE3 change to GIOA3
   \   0160  DB2F              IN      A,(47)
   \   0162  CBD7              SET     2,A
   \   0164  D32F              OUT     (47),A
    164              output8(0xf7,input8(0xf7)|0x01);      // PowerOff
   \   0166  DBF7              IN      A,(247)
   \   0168  CBC7              SET     0,A
   \   016A  D3F7              OUT     (247),A
    165              output8(0xee,input8(0xee)&0xf7);      //GPIO A3=0
   \   016C  DBEE              IN      A,(238)
   \   016E  CB9F              RES     3,A
   \   0170  D3EE              OUT     (238),A
    166          ////////////////////////////     zxs add for card    
    167              
    168              if(USBStatus == 0x00)                   //按Mode退出
   \   0172  3A0100            LD      A,(USBStatus)
   \   0175  B7                OR      A
   \   0176  2005              JR      NZ,?0047
   \   0178            ?0046:
    169                      return RESULT_MAIN;
   \   0178  210A00            LD      HL,10
   \   017B  180C              JR      ?0050
   \   017D            ?0047:
    170              else if(USBStatus == 0x50)              //升级退出
   \   017D  FE50              CP      80
   \   017F  2005              JR      NZ,?0049
   \   0181            ?0048:
    171                      return RESULT_UPGRADE;
   \   0181  210300            LD      HL,3
    172              else
   \   0184  1803              JR      ?0050
   \   0186            ?0049:
    173                      return 0;                       //拔线,弹出               //拔线,弹出      
   \   0186  210000            LD      HL,0
    174                      
    175                       
    176          }
   \   0189            ?0050:
   \   0189  F1                POP     AF
   \   018A  DDE1              POP     IX
   \   018C  C1                POP     BC
   \   018D  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
    177          
    178          #pragma memory=default
   \   0000                    RSEG    UDISK_RD
   \   0000            DisplayIndi:
   \   0001                    DEFS    1
   \   0001            USBStatus:
   \   0002                    DEFS    1
   \   0002            OldVddVol:
   \   0003                    DEFS    1
   \   0003            DispBuf:
   \   0005                    DEFS    2
   \   0005                    END

Errors: none
Warnings: none
Code size: 400
Constant size: 0
Static variable size: Data(5) Iram(0)

⌨️ 快捷键说明

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