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

📄 lcd_gbk.lst

📁 ATmega64单片机
💻 LST
📖 第 1 页 / 共 2 页
字号:
 324 014c 6C01      		movw r22,r10
  83:LCD\LCD_GBK.c **** 	sector_offset = temp1/BytesPerSector;
 325               	,r16
 326               		movw r18,r14
 327 014e 8091 0000 		call __udivmodsi4
 328 0152 9091 0000 		movw r6,r18
 329 0156 7C01      		clr r8
 330 0158 00E0      		clr r9
 331 015a 10E0      		lds r22,GBK12
  84:LCD\LCD_GBK.c **** 	byte_offset = temp1%BytesPerSector;
  85:LCD\LCD_GBK.c **** 	if(FAT_ReadSector(GBK12 + sector_offset,buffer))return 1;
 332               	3,(GBK12)+1
 333               		lds r24,(GBK12)+2
 334 015c C601      		lds r25,(GBK12)+3
 335 015e B501      		add r22,r6
 336 0160 A801      		adc r23,r7
 337 0162 9701      		adc r24,r8
 338 0164 0E94 0000 		adc r25,r9
 339 0168 3901      		lds r30,FAT_ReadSector
 340 016a 8824      		lds r31,(FAT_ReadSector)+1
 341 016c 9924      		movw r4,r28
 342 016e 6091 0000 		sec
 343 0172 7091 0000 		adc r4,__zero_reg__
 344 0176 8091 0000 		adc r5,__zero_reg__
 345 017a 9091 0000 		movw r20,r4
 346 017e 660D      		icall
 347 0180 771D      		tst r24
 348 0182 881D      		breq .+2
 349 0184 991D      		rjmp .L9
 351 018a F091 0000 	.LM23:
 352 018e 2E01      		movw r24,r12
 353 0190 0894      		movw r22,r10
 354 0192 411C      		movw r20,r16
 355 0194 511C      		movw r18,r14
 356 0196 A201      		call __udivmodsi4
 357 0198 0995      		movw r20,r4
 358 019a 8823      		add r20,r22
 359 019c 01F0      		adc r21,r23
 361               	.LM24:
 362               		ldi r24,hi8(489)
 363 01a0 C601      		cpi r22,lo8(489)
 364 01a2 B501      		cpc r23,r24
 365 01a4 A801      		brlo .L13
 367 01a8 0E94 0000 	.LM25:
 368 01ac A201      		lds r18,BytesPerSector
 369 01ae 460F      		lds r19,(BytesPerSector)+1
 370 01b0 571F      		sub r18,r22
  86:LCD\LCD_GBK.c **** 	if(byte_offset>488)
 371               	(0)
 372               		ldi r21,hi8(0)
 373 01b2 81E0      		rjmp .L15
 374 01b4 693E      	.L16:
 375 01b6 7807      		subi r30,lo8(-(GBK_Buffer))
 376 01b8 00F0      		sbci r31,hi8(-(GBK_Buffer))
  87:LCD\LCD_GBK.c **** 	{
  88:LCD\LCD_GBK.c **** 		for(temp2 = 0,temp1 = byte_offset;temp2<(BytesPerSector - byte_offset);temp2++,temp1++)GBK_Buffer
 377               	4,X+
 378               		st Z,r24
 379 01ba 2091 0000 	.L15:
 380 01be 3091 0000 		mov r17,r20
 381 01c2 261B      		subi r20,lo8(-(1))
 382 01c4 370B      		sbci r21,hi8(-(1))
 383 01c6 DA01      		mov r30,r17
 384 01c8 40E0      		ldi r31,lo8(0)
 385 01ca 50E0      		cp r30,r18
 386 01cc 00C0      		cpc r31,r19
 387               		brlo .L16
 389 01d0 F040      	.LM26:
 390 01d2 8D91      		lds r22,GBK12
 391 01d4 8083      		lds r23,(GBK12)+1
 392               		lds r24,(GBK12)+2
 393 01d6 142F      		lds r25,(GBK12)+3
 394 01d8 4F5F      		subi r22,lo8(-(1))
 395 01da 5F4F      		sbci r23,hi8(-(1))
 396 01dc E12F      		sbci r24,hlo8(-(1))
 397 01de F0E0      		sbci r25,hhi8(-(1))
 398 01e0 E217      		add r22,r6
 399 01e2 F307      		adc r23,r7
 400 01e4 00F0      		adc r24,r8
  89:LCD\LCD_GBK.c **** 		if(FAT_ReadSector(GBK12 + sector_offset + 1,buffer))return 1;
 401               	_ReadSector
 402               		lds r31,(FAT_ReadSector)+1
 403 01e6 6091 0000 		movw r14,r28
 404 01ea 7091 0000 		sec
 405 01ee 8091 0000 		adc r14,__zero_reg__
 406 01f2 9091 0000 		adc r15,__zero_reg__
 407 01f6 6F5F      		movw r20,r14
 408 01f8 7F4F      		icall
 409 01fa 8F4F      		tst r24
 410 01fc 9F4F      		brne .L9
 411 01fe 660D      		movw r26,r14
 412 0200 771D      		rjmp .L19
 413 0202 881D      	.L20:
 415 0206 E091 0000 	.LM27:
 416 020a F091 0000 		mov r30,r17
 417 020e 7E01      		ldi r31,lo8(0)
 418 0210 0894      		subi r30,lo8(-(GBK_Buffer))
 419 0212 E11C      		sbci r31,hi8(-(GBK_Buffer))
 420 0214 F11C      		ld r24,X+
 421 0216 A701      		st Z,r24
 422 0218 0995      		subi r17,lo8(-(1))
 423 021a 8823      	.L19:
 424 021c 01F4      		cpi r17,lo8(24)
 425 021e D701      		brlo .L20
 426 0220 00C0      		rjmp .L21
 427               	.L13:
  90:LCD\LCD_GBK.c **** 		for(temp1 = 0;temp2<24;temp2++,temp1++)GBK_Buffer[temp2] = buffer[temp1];
 428               	GBK_Buffer)
 429               		ldi r31,hi8(GBK_Buffer)
 430 0222 E12F      	.L22:
 432 0226 E050      	.LM28:
 433 0228 F040      		ld r24,X+
 434 022a 8D91      		st Z+,r24
 435 022c 8083      		ldi r24,hi8(GBK_Buffer+24)
 436 022e 1F5F      		cpi r30,lo8(GBK_Buffer+24)
 437               		cpc r31,r24
 438 0230 1831      		breq .L21
 439 0232 00F0      		rjmp .L22
 440 0234 00C0      	.L9:
 441               		ldi r24,lo8(1)
 442 0236 DA01      		ldi r25,hi8(1)
 443 0238 E0E0      		rjmp .L23
 444 023a F0E0      	.L21:
 445               		ldi r24,lo8(0)
  91:LCD\LCD_GBK.c **** 	}
  92:LCD\LCD_GBK.c **** 	else for(temp2 = 0,temp1 = byte_offset;temp2<24;temp2++,temp1++)GBK_Buffer[temp2] = buffer[temp1];
 446               	23:
 447               	/* epilogue: frame size=512 */
 448 023c 8D91      		subi r28,lo8(-512)
 449 023e 8193      		sbci r29,hi8(-512)
 450 0240 80E0      		in __tmp_reg__,__SREG__
 451 0242 E030      		cli
 452 0244 F807      		out __SP_H__,r29
 453 0246 01F0      		out __SREG__,__tmp_reg__
 454 0248 00C0      		out __SP_L__,r28
 455               		pop r29
 456 024a 81E0      		pop r28
 457 024c 90E0      		pop r17
 458 024e 00C0      		pop r16
 459               		pop r15
 460 0250 80E0      		pop r14
 461 0252 90E0      		pop r13
 462               		pop r12
 463               		pop r11
 464 0254 C050      		pop r10
 465 0256 DE4F      		pop r9
 466 0258 0FB6      		pop r8
 467 025a F894      		pop r7
 468 025c DEBF      		pop r6
 469 025e 0FBE      		pop r5
 470 0260 CDBF      		pop r4
 471 0262 DF91      		ret
 472 0264 CF91      	/* epilogue end (size=24) */
 473 0266 1F91      	/* function Read_One_GBK12 size 219 (170) */
 481 0276 9F90      	.Lscope3:
 484 027c 6F90      	.global	Read_One_GBK16
 486 0280 4F90      	Read_One_GBK16:
 488               	.LM29:
 489               	.LFBB4:
 490               	/* prologue: frame size=512 */
 491               		push r12
 492               		push r13
 493               		push r14
 494               		push r15
 495               		push r16
 496               		push r17
 497               		push r28
 498               		push r29
 499               		in r28,__SP_L__
 500               		in r29,__SP_H__
 501               		subi r28,lo8(512)
 502               		sbci r29,hi8(512)
  93:LCD\LCD_GBK.c **** 	return 0;
  94:LCD\LCD_GBK.c **** }
  95:LCD\LCD_GBK.c **** unsigned char Read_One_GBK16(unsigned char *ch)
  96:LCD\LCD_GBK.c **** {
 503               	EG__,__tmp_reg__
 504               		out __SP_L__,r28
 505               	/* prologue end (size=17) */
 506               		movw r30,r24
 508 0286 DF92      	.LM30:
 509 0288 EF92      		ld r24,Z
 510 028a FF92      		mov r18,r24
 511 028c 0F93      		ldi r19,lo8(0)
 513 0290 CF93      	.LM31:
 514 0292 DF93      		ldd r20,Z+1
 516 0296 DEB7      	.LM32:
 517 0298 C050      		cpi r18,129
 518 029a D240      		cpc r19,__zero_reg__
 519 029c 0FB6      		brsh .+2
 520 029e F894      		rjmp .L27
 522 02a2 0FBE      	.LM33:
 523 02a4 CDBF      		cpi r20,lo8(64)
 524               		brsh .+2
 525 02a6 FC01      		rjmp .L27
  97:LCD\LCD_GBK.c **** 	unsigned int  temp1;
  98:LCD\LCD_GBK.c **** 	unsigned char temp2;
  99:LCD\LCD_GBK.c **** 	unsigned int  sector_offset;//扇区偏移
 100:LCD\LCD_GBK.c **** 	unsigned int  byte_offset;//字节偏移
 101:LCD\LCD_GBK.c **** 	unsigned char buffer[512];
 102:LCD\LCD_GBK.c **** 	temp1=*ch;
 526               	.LFBB4
 527               	.LM34:
 528 02a8 8081      		subi r18,lo8(-(-129))
 529 02aa 282F      		sbci r19,hi8(-(-129))
 103:LCD\LCD_GBK.c **** 	temp2=*(ch+1);
 531               	:
 532               		ldi r24,lo8(192)
 533 02ae 4181      		ldi r25,hi8(192)
 104:LCD\LCD_GBK.c **** 	if(temp1<0x81||temp2<0x40)return 1;//不合法的汉字
 534               	l r18,r24
 535               		movw r14,r0
 536 02b0 2138      		mul r18,r25
 537 02b2 3105      		add r15,r0
 538 02b4 00F4      		mul r19,r24
 539 02b6 00C0      		add r15,r0
 540               		clr r1
 542 02b8 4034      	.LM36:
 543 02ba 00F4      		subi r20,lo8(-(-64))
 544 02bc 00C0      		add r14,r20
 105:LCD\LCD_GBK.c **** 	temp1-=0x81;//的到类似于2312的区号
 545               	zero_reg__
 547 02be 2158      	.LM37:
 548 02c0 3040      		lds r16,BytesPerSector
 106:LCD\LCD_GBK.c **** 	temp2-=0x40;//位号
 107:LCD\LCD_GBK.c **** 	temp1*=192;//xx7f and xxff are included
 549               	 r17,(BytesPerSector)+1
 550               		ldi r18,5
 551 02c2 80EC      	1:	lsr r17
 552 02c4 90E0      		ror r16
 553 02c6 289F      		dec r18
 554 02c8 7001      		brne 1b
 556 02cc F00C      	.LM38:
 557 02ce 389F      		movw r24,r14
 558 02d0 F00C      		movw r22,r16
 559 02d2 1124      		call __udivmodhi4
 108:LCD\LCD_GBK.c **** 	temp1+=temp2;//得到偏移
 560               	8(0)
 561               		ldi r25,hi8(0)
 562 02d4 4054      		lds r18,GBK16
 563 02d6 E40E      		lds r19,(GBK16)+1
 564 02d8 F11C      		lds r20,(GBK16)+2
 109:LCD\LCD_GBK.c **** 	//temp1*=24;
 110:LCD\LCD_GBK.c **** 	sector_offset = temp1/(BytesPerSector/32);//算出要读哪个扇区
 565               	r21,(GBK16)+3
 566               		add r22,r18
 567 02da 0091 0000 		adc r23,r19
 568 02de 1091 0000 		adc r24,r20
 569 02e2 25E0      		adc r25,r21
 570 02e4 1695      		lds r30,FAT_ReadSector
 571 02e6 0795      		lds r31,(FAT_ReadSector)+1
 572 02e8 2A95      		movw r12,r28
 573 02ea 01F4      		sec
 111:LCD\LCD_GBK.c **** 	byte_offset = (temp1%(BytesPerSector/32))*32;//算出要读扇区的哪个字节
 112:LCD\LCD_GBK.c **** 	if(FAT_ReadSector(GBK16 + sector_offset,buffer))return 1;//读要读的扇区
 574               	__zero_reg__
 575               		adc r13,__zero_reg__
 576 02ec C701      		movw r20,r12
 577 02ee B801      		icall
 578 02f0 0E94 0000 		tst r24
 579 02f4 80E0      		brne .L27
 580 02f6 90E0      		movw r24,r14
 581 02f8 2091 0000 		movw r22,r16
 582 02fc 3091 0000 		call __udivmodhi4
 583 0300 4091 0000 		movw r30,r24
 584 0304 5091 0000 		ldi r25,5
 585 0308 620F      	1:	lsl r30
 586 030a 731F      		rol r31
 587 030c 841F      		dec r25
 588 030e 951F      		brne 1b
 589 0310 E091 0000 		add r30,r12
 590 0314 F091 0000 		adc r31,r13
 591 0318 6E01      		ldi r26,lo8(GBK_Buffer)
 592 031a 0894      		ldi r27,hi8(GBK_Buffer)
 593 031c C11C      	.L31:
 595 0320 A601      	.LM39:
 596 0322 0995      		ld r24,Z+
 597 0324 8823      		st X+,r24
 598 0326 01F4      		ldi r24,hi8(GBK_Buffer+32)
 599 0328 C701      		cpi r26,lo8(GBK_Buffer+32)
 600 032a B801      		cpc r27,r24
 601 032c 0E94 0000 		brne .L31
 602 0330 FC01      		ldi r24,lo8(0)
 603 0332 95E0      		ldi r25,hi8(0)
 604 0334 EE0F      		rjmp .L33
 605 0336 FF1F      	.L27:
 606 0338 9A95      		ldi r24,lo8(1)
 607 033a 01F4      		ldi r25,hi8(1)
 608 033c EC0D      	.L33:
 609 033e FD1D      	/* epilogue: frame size=512 */
 610 0340 A0E0      		subi r28,lo8(-512)
 611 0342 B0E0      		sbci r29,hi8(-512)
 612               		in __tmp_reg__,__SREG__
 113:LCD\LCD_GBK.c **** 	for(temp2 = 0,temp1 = byte_offset;temp2<32;temp2++,temp1++)GBK_Buffer[temp2] = buffer[temp1];//复

⌨️ 快捷键说明

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