📄 at45db~1.s
字号:
xjmp L42
L44:
.dbline 117
; }
; CLEAR_45CS();
sbi 0x11,4
.dbline 118
; CLEAR_45SCK();
sbi 0x11,6
.dbline 119
; SET_45IO();
cbi 0x11,5
.dbline 120
; DELAY();
xcall _DELAY
.dbline 121
; write_byte(0x83);
ldi R16,131
xcall _write_byte
.dbline 122
; i=pagenum>>6;
ldi R18,6
ldi R19,0
movw R16,R22
xcall lsr16
.dbline 123
; write_byte((unsigned char)i);
xcall _write_byte
.dbline 124
; i=pagenum<<2;
movw R20,R22
lsl R20
rol R21
lsl R20
rol R21
.dbline 125
; write_byte((unsigned char)i);
mov R16,R20
xcall _write_byte
.dbline 126
; write_byte(0x00);
clr R16
xcall _write_byte
.dbline 127
; DELAY();
xcall _DELAY
.dbline 128
; SET_45CS();
cbi 0x11,4
.dbline -2
.dbline 129
; }
L41:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r flag 20 c
.dbsym r pagenum 22 i
.dbend
.dbfunc e write_buffer2mainmemory _write_buffer2mainmemory fV
; i -> R20,R21
; flag -> R20
; pagenum -> R22,R23
.even
_write_buffer2mainmemory::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 131
; void write_buffer2mainmemory(unsigned int pagenum)
; {
xjmp L49
L48:
.dbline 136
; unsigned int i;
; unsigned char flag;
; // write_buffer2(chip_cs,0,yyj02);
; while(1)
; {
.dbline 137
; flag=read_status();
xcall _read_status
mov R20,R16
.dbline 138
; if((flag&0x80)==0x80)
mov R24,R20
andi R24,128
cpi R24,128
brne L51
.dbline 139
; break;
xjmp L50
L51:
.dbline 140
L49:
.dbline 135
xjmp L48
L50:
.dbline 141
; }
; CLEAR_45CS();
sbi 0x11,4
.dbline 142
; CLEAR_45SCK();
sbi 0x11,6
.dbline 143
; SET_45IO();
cbi 0x11,5
.dbline 144
; DELAY();
xcall _DELAY
.dbline 145
; write_byte(0x86);
ldi R16,134
xcall _write_byte
.dbline 146
; i=pagenum>>6;
ldi R18,6
ldi R19,0
movw R16,R22
xcall lsr16
.dbline 147
; write_byte((unsigned char)i);
xcall _write_byte
.dbline 148
; i=pagenum<<2;
movw R20,R22
lsl R20
rol R21
lsl R20
rol R21
.dbline 149
; write_byte((unsigned char)i);
mov R16,R20
xcall _write_byte
.dbline 150
; write_byte(0x00);
clr R16
xcall _write_byte
.dbline 151
; DELAY();
xcall _DELAY
.dbline 152
; SET_45CS();
cbi 0x11,4
.dbline -2
.dbline 153
; }
L47:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r flag 20 c
.dbsym r pagenum 22 i
.dbend
.dbfunc e read_mainmemory _read_mainmemory fc
; byte1 -> R10,R11
; temp1 -> R20
; i -> R22,R23
; flag -> R22
; bits -> R20,R21
; pagenum -> R10,R11
.even
_read_mainmemory::
xcall push_gset3
movw R20,R18
movw R10,R16
.dbline -1
.dbline 155
; unsigned char read_mainmemory(unsigned int pagenum,unsigned int bits)
; {
xjmp L55
L54:
.dbline 159
; unsigned char flag,temp1;
; unsigned int byte1,i;
; while(1)
; {
.dbline 160
; flag=read_status();
xcall _read_status
mov R22,R16
.dbline 161
; if(flag&0x80)
sbrs R16,7
rjmp L57
.dbline 162
; break;
xjmp L56
L57:
.dbline 163
L55:
.dbline 158
xjmp L54
L56:
.dbline 164
; }
; CLEAR_45CS();
sbi 0x11,4
.dbline 165
; SET_45IO();
cbi 0x11,5
.dbline 166
; CLEAR_45SCK();
sbi 0x11,6
.dbline 167
; DELAY();
xcall _DELAY
.dbline 168
; write_byte(0x52);
ldi R16,82
xcall _write_byte
.dbline 169
; i=pagenum>>6;
ldi R18,6
ldi R19,0
movw R16,R10
xcall lsr16
.dbline 170
; write_byte((unsigned char)i);
xcall _write_byte
.dbline 171
; i=pagenum<<2;
movw R22,R10
lsl R22
rol R23
lsl R22
rol R23
.dbline 172
; byte1=bits>>8;
movw R10,R20
mov R10,R11
clr R11
.dbline 173
; i=(unsigned char)i+(unsigned char)byte1;
mov R2,R10
clr R3
clr R23
add R22,R2
adc R23,R3
.dbline 174
; write_byte((unsigned char)i);
mov R16,R22
xcall _write_byte
.dbline 175
; write_byte((unsigned char)bits);
mov R16,R20
xcall _write_byte
.dbline 176
; write_byte(0x00);
clr R16
xcall _write_byte
.dbline 177
; write_byte(0x00);
clr R16
xcall _write_byte
.dbline 178
; write_byte(0x00);
clr R16
xcall _write_byte
.dbline 179
; write_byte(0x00);
clr R16
xcall _write_byte
.dbline 181
; // SET_45IO();
; CLOCK1();
xcall _CLOCK1
.dbline 182
; NOP();
nop
.dbline 183
; temp1=read_byte();
xcall _read_byte
mov R20,R16
.dbline 184
; SET_45CS();
cbi 0x11,4
.dbline 185
; return temp1;
.dbline -2
L53:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r byte1 10 i
.dbsym r temp1 20 c
.dbsym r i 22 i
.dbsym r flag 22 c
.dbsym r bits 20 i
.dbsym r pagenum 10 i
.dbend
.dbfunc e read_startarry _read_startarry fV
; flag -> R20
; i -> R20,R21
; len -> R22,R23
; pt -> R10,R11
; bitnum -> R12,R13
; pagenum -> R14,R15
.even
_read_startarry::
xcall push_gset5
movw R12,R18
movw R14,R16
ldd R10,y+10
ldd R11,y+11
ldd R22,y+12
ldd R23,y+13
.dbline -1
.dbline 189
; }
; void read_startarry(unsigned int pagenum,unsigned int bitnum,
; unsigned char *pt,unsigned int len)
; {
xjmp L61
L60:
.dbline 193
; unsigned int i;
; unsigned char flag;
; while(1)
; {
.dbline 194
; flag=read_status();
xcall _read_status
mov R20,R16
.dbline 195
; if(flag&0x80)
sbrs R16,7
rjmp L63
.dbline 196
; break;
xjmp L62
L63:
.dbline 197
L61:
.dbline 192
xjmp L60
L62:
.dbline 198
; }
; CLEAR_45CS();
sbi 0x11,4
.dbline 199
; SET_45IO();
cbi 0x11,5
.dbline 200
; CLEAR_45SCK();
sbi 0x11,6
.dbline 201
; DELAY();
xcall _DELAY
.dbline 202
; write_byte(0x68);
ldi R16,104
xcall _write_byte
.dbline 203
; i=pagenum>>6;
ldi R18,6
ldi R19,0
movw R16,R14
xcall lsr16
.dbline 204
; write_byte((unsigned char)i);
xcall _write_byte
.dbline 205
; i=pagenum<<2+bitnum>>8;
movw R18,R12
subi R18,254 ; offset = 2
sbci R19,255
movw R16,R14
xcall lsl16
movw R20,R16
mov R20,R21
clr R21
.dbline 206
; write_byte((unsigned char)i);
mov R16,R20
xcall _write_byte
.dbline 207
; write_byte((unsigned char)bitnum);
mov R16,R12
xcall _write_byte
.dbline 208
; write_byte(0x00);
clr R16
xcall _write_byte
.dbline 209
; write_byte(0x00);
clr R16
xcall _write_byte
.dbline 210
; write_byte(0x00);
clr R16
xcall _write_byte
.dbline 211
; write_byte(0x00);
clr R16
xcall _write_byte
.dbline 212
; CLOCK1();
xcall _CLOCK1
.dbline 213
; for(i=0;i<len;i++)
clr R20
clr R21
xjmp L68
L65:
.dbline 214
xcall _read_byte
movw R30,R10
st Z+,R16
movw R10,R30
L66:
.dbline 213
subi R20,255 ; offset = 1
sbci R21,255
L68:
.dbline 213
cp R20,R22
cpc R21,R23
brlo L65
.dbline 215
; *pt++=read_byte();
; SET_45CS();
cbi 0x11,4
.dbline -2
.dbline 216
; }
L59:
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r flag 20 c
.dbsym r i 20 i
.dbsym r len 22 i
.dbsym r pt 10 pc
.dbsym r bitnum 12 i
.dbsym r pagenum 14 i
.dbend
.dbfunc e compare_buffer1page _compare_buffer1page fV
; i -> R20,R21
; flag -> R20
; pagenum -> R22,R23
.even
_compare_buffer1page::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 218
; void compare_buffer1page(unsigned int pagenum)
; {
xjmp L71
L70:
.dbline 222
; unsigned int i;
; unsigned char flag;
; while(1)
; {
.dbline 223
; flag=read_status();
xcall _read_status
mov R20,R16
.dbline 224
; if(flag&0x80)
sbrs R16,7
rjmp L73
.dbline 225
; break;
xjmp L72
L73:
.dbline 226
L71:
.dbline 221
xjmp L70
L72:
.dbline 227
; }
; CLEAR_45CS();
sbi 0x11,4
.dbline 228
; SET_45IO();
cbi 0x11,5
.dbline 229
; CLEAR_45SCK();
sbi 0x11,6
.dbline 230
; DELAY();
xcall _DELAY
.dbline 231
; write_byte(0x60);
ldi R16,96
xcall _write_byte
.dbline 232
; i=pagenum>>6;
ldi R18,6
ldi R19,0
movw R16,R22
xcall lsr16
.dbline 233
; write_byte((unsigned char)i);
xcall _write_byte
.dbline 234
; i=pagenum<<2;
movw R20,R22
lsl R20
rol R21
lsl R20
rol R21
.dbline 235
; write_byte((unsigned char)i);
mov R16,R20
xcall _write_byte
.dbline 236
; write_byte(0x00);
clr R16
xcall _write_byte
.dbline 237
; SET_45CS();
cbi 0x11,4
.dbline -2
.dbline 238
; }
L69:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r flag 20 c
.dbsym r pagenum 22 i
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -