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

📄 at45db~1.s

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	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 + -