📄 at45db~1.lis
字号:
020E ; while(1)
020E ; {
020E .dbline 160
020E ; flag=read_status();
020E 24DF xcall _read_status
0210 602F mov R22,R16
0212 .dbline 161
0212 ; if(flag&0x80)
0212 07FF sbrs R16,7
0214 01C0 rjmp L57
0216 .dbline 162
0216 ; break;
0216 01C0 xjmp L56
0218 L57:
0218 .dbline 163
0218 L55:
0218 .dbline 158
0218 FACF xjmp L54
021A L56:
021A .dbline 164
021A ; }
021A ; CLEAR_45CS();
021A 8C9A sbi 0x11,4
021C .dbline 165
021C ; SET_45IO();
021C 8D98 cbi 0x11,5
021E .dbline 166
021E ; CLEAR_45SCK();
021E 8E9A sbi 0x11,6
0220 .dbline 167
0220 ; DELAY();
0220 15DF xcall _DELAY
0222 .dbline 168
0222 ; write_byte(0x52);
0222 02E5 ldi R16,82
0224 FDDE xcall _write_byte
0226 .dbline 169
0226 ; i=pagenum>>6;
0226 26E0 ldi R18,6
0228 30E0 ldi R19,0
022A 8501 movw R16,R10
022C 0E940000 xcall lsr16
0230 .dbline 170
0230 ; write_byte((unsigned char)i);
0230 F7DE xcall _write_byte
0232 .dbline 171
0232 ; i=pagenum<<2;
0232 B501 movw R22,R10
0234 660F lsl R22
0236 771F rol R23
0238 660F lsl R22
023A 771F rol R23
023C .dbline 172
023C ; byte1=bits>>8;
023C 5A01 movw R10,R20
023E AB2C mov R10,R11
0240 BB24 clr R11
0242 .dbline 173
0242 ; i=(unsigned char)i+(unsigned char)byte1;
0242 2A2C mov R2,R10
0244 3324 clr R3
0246 7727 clr R23
0248 620D add R22,R2
024A 731D adc R23,R3
024C .dbline 174
024C ; write_byte((unsigned char)i);
024C 062F mov R16,R22
024E E8DE xcall _write_byte
0250 .dbline 175
0250 ; write_byte((unsigned char)bits);
0250 042F mov R16,R20
0252 E6DE xcall _write_byte
0254 .dbline 176
0254 ; write_byte(0x00);
0254 0027 clr R16
0256 E4DE xcall _write_byte
0258 .dbline 177
0258 ; write_byte(0x00);
0258 0027 clr R16
025A E2DE xcall _write_byte
025C .dbline 178
025C ; write_byte(0x00);
025C 0027 clr R16
025E E0DE xcall _write_byte
0260 .dbline 179
0260 ; write_byte(0x00);
0260 0027 clr R16
0262 DEDE xcall _write_byte
0264 .dbline 181
0264 ; // SET_45IO();
0264 ; CLOCK1();
0264 EFDE xcall _CLOCK1
0266 .dbline 182
0266 ; NOP();
0266 0000 nop
0268 .dbline 183
0268 ; temp1=read_byte();
0268 CBDE xcall _read_byte
026A 402F mov R20,R16
026C .dbline 184
026C ; SET_45CS();
026C 8C98 cbi 0x11,4
026E .dbline 185
026E ; return temp1;
026E .dbline -2
026E L53:
026E 0E940000 xcall pop_gset3
0272 .dbline 0 ; func end
0272 0895 ret
0274 .dbsym r byte1 10 i
0274 .dbsym r temp1 20 c
0274 .dbsym r i 22 i
0274 .dbsym r flag 22 c
0274 .dbsym r bits 20 i
0274 .dbsym r pagenum 10 i
0274 .dbend
0274 .dbfunc e read_startarry _read_startarry fV
0274 ; flag -> R20
0274 ; i -> R20,R21
0274 ; len -> R22,R23
0274 ; pt -> R10,R11
0274 ; bitnum -> R12,R13
0274 ; pagenum -> R14,R15
.even
0274 _read_startarry::
0274 0E940000 xcall push_gset5
0278 6901 movw R12,R18
027A 7801 movw R14,R16
027C AA84 ldd R10,y+10
027E BB84 ldd R11,y+11
0280 6C85 ldd R22,y+12
0282 7D85 ldd R23,y+13
0284 .dbline -1
0284 .dbline 189
0284 ; }
0284 ; void read_startarry(unsigned int pagenum,unsigned int bitnum,
0284 ; unsigned char *pt,unsigned int len)
0284 ; {
0284 05C0 xjmp L61
0286 L60:
0286 .dbline 193
0286 ; unsigned int i;
0286 ; unsigned char flag;
0286 ; while(1)
0286 ; {
0286 .dbline 194
0286 ; flag=read_status();
0286 E8DE xcall _read_status
0288 402F mov R20,R16
028A .dbline 195
028A ; if(flag&0x80)
028A 07FF sbrs R16,7
028C 01C0 rjmp L63
028E .dbline 196
028E ; break;
028E 01C0 xjmp L62
0290 L63:
0290 .dbline 197
0290 L61:
0290 .dbline 192
0290 FACF xjmp L60
0292 L62:
0292 .dbline 198
0292 ; }
0292 ; CLEAR_45CS();
0292 8C9A sbi 0x11,4
0294 .dbline 199
0294 ; SET_45IO();
0294 8D98 cbi 0x11,5
0296 .dbline 200
0296 ; CLEAR_45SCK();
0296 8E9A sbi 0x11,6
0298 .dbline 201
0298 ; DELAY();
0298 D9DE xcall _DELAY
029A .dbline 202
029A ; write_byte(0x68);
029A 08E6 ldi R16,104
029C C1DE xcall _write_byte
029E .dbline 203
029E ; i=pagenum>>6;
029E 26E0 ldi R18,6
02A0 30E0 ldi R19,0
02A2 8701 movw R16,R14
02A4 0E940000 xcall lsr16
02A8 .dbline 204
02A8 ; write_byte((unsigned char)i);
02A8 BBDE xcall _write_byte
02AA .dbline 205
02AA ; i=pagenum<<2+bitnum>>8;
02AA 9601 movw R18,R12
02AC 2E5F subi R18,254 ; offset = 2
02AE 3F4F sbci R19,255
02B0 8701 movw R16,R14
02B2 0E940000 xcall lsl16
02B6 A801 movw R20,R16
02B8 452F mov R20,R21
02BA 5527 clr R21
02BC .dbline 206
02BC ; write_byte((unsigned char)i);
02BC 042F mov R16,R20
02BE B0DE xcall _write_byte
02C0 .dbline 207
02C0 ; write_byte((unsigned char)bitnum);
02C0 0C2D mov R16,R12
02C2 AEDE xcall _write_byte
02C4 .dbline 208
02C4 ; write_byte(0x00);
02C4 0027 clr R16
02C6 ACDE xcall _write_byte
02C8 .dbline 209
02C8 ; write_byte(0x00);
02C8 0027 clr R16
02CA AADE xcall _write_byte
02CC .dbline 210
02CC ; write_byte(0x00);
02CC 0027 clr R16
02CE A8DE xcall _write_byte
02D0 .dbline 211
02D0 ; write_byte(0x00);
02D0 0027 clr R16
02D2 A6DE xcall _write_byte
02D4 .dbline 212
02D4 ; CLOCK1();
02D4 B7DE xcall _CLOCK1
02D6 .dbline 213
02D6 ; for(i=0;i<len;i++)
02D6 4427 clr R20
02D8 5527 clr R21
02DA 06C0 xjmp L68
02DC L65:
02DC .dbline 214
02DC 91DE xcall _read_byte
02DE F501 movw R30,R10
02E0 0193 st Z+,R16
02E2 5F01 movw R10,R30
02E4 L66:
02E4 .dbline 213
02E4 4F5F subi R20,255 ; offset = 1
02E6 5F4F sbci R21,255
02E8 L68:
02E8 .dbline 213
02E8 4617 cp R20,R22
02EA 5707 cpc R21,R23
02EC B8F3 brlo L65
02EE .dbline 215
02EE ; *pt++=read_byte();
02EE ; SET_45CS();
02EE 8C98 cbi 0x11,4
02F0 .dbline -2
02F0 .dbline 216
02F0 ; }
02F0 L59:
02F0 0E940000 xcall pop_gset5
02F4 .dbline 0 ; func end
02F4 0895 ret
02F6 .dbsym r flag 20 c
02F6 .dbsym r i 20 i
02F6 .dbsym r len 22 i
02F6 .dbsym r pt 10 pc
02F6 .dbsym r bitnum 12 i
02F6 .dbsym r pagenum 14 i
02F6 .dbend
02F6 .dbfunc e compare_buffer1page _compare_buffer1page fV
02F6 ; i -> R20,R21
02F6 ; flag -> R20
02F6 ; pagenum -> R22,R23
.even
02F6 _compare_buffer1page::
02F6 0E940000 xcall push_gset2
02FA B801 movw R22,R16
02FC .dbline -1
02FC .dbline 218
02FC ; void compare_buffer1page(unsigned int pagenum)
02FC ; {
02FC 05C0 xjmp L71
02FE L70:
02FE .dbline 222
02FE ; unsigned int i;
02FE ; unsigned char flag;
02FE ; while(1)
02FE ; {
02FE .dbline 223
02FE ; flag=read_status();
02FE ACDE xcall _read_status
0300 402F mov R20,R16
0302 .dbline 224
0302 ; if(flag&0x80)
0302 07FF sbrs R16,7
0304 01C0 rjmp L73
0306 .dbline 225
0306 ; break;
0306 01C0 xjmp L72
0308 L73:
0308 .dbline 226
0308 L71:
0308 .dbline 221
0308 FACF xjmp L70
030A L72:
030A .dbline 227
030A ; }
030A ; CLEAR_45CS();
030A 8C9A sbi 0x11,4
030C .dbline 228
030C ; SET_45IO();
030C 8D98 cbi 0x11,5
030E .dbline 229
030E ; CLEAR_45SCK();
030E 8E9A sbi 0x11,6
0310 .dbline 230
0310 ; DELAY();
0310 9DDE xcall _DELAY
0312 .dbline 231
0312 ; write_byte(0x60);
0312 00E6 ldi R16,96
0314 85DE xcall _write_byte
0316 .dbline 232
0316 ; i=pagenum>>6;
0316 26E0 ldi R18,6
0318 30E0 ldi R19,0
031A 8B01 movw R16,R22
031C 0E940000 xcall lsr16
0320 .dbline 233
0320 ; write_byte((unsigned char)i);
0320 7FDE xcall _write_byte
0322 .dbline 234
0322 ; i=pagenum<<2;
0322 AB01 movw R20,R22
0324 440F lsl R20
0326 551F rol R21
0328 440F lsl R20
032A 551F rol R21
032C .dbline 235
032C ; write_byte((unsigned char)i);
032C 042F mov R16,R20
032E 78DE xcall _write_byte
0330 .dbline 236
0330 ; write_byte(0x00);
0330 0027 clr R16
0332 76DE xcall _write_byte
0334 .dbline 237
0334 ; SET_45CS();
0334 8C98 cbi 0x11,4
0336 .dbline -2
0336 .dbline 238
0336 ; }
0336 L69:
0336 0E940000 xcall pop_gset2
033A .dbline 0 ; func end
033A 0895 ret
033C .dbsym r i 20 i
033C .dbsym r flag 20 c
033C .dbsym r pagenum 22 i
033C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -