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 + -
显示快捷键?