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

📄 lcd_app.lst

📁 ATmega64单片机
💻 LST
📖 第 1 页 / 共 5 页
字号:
 439 01b4 90E0      		ldi r25,hi8(48)
 440 01b6 8C19      		sub r24,r12
 441 01b8 9D09      		sbc r25,r13
 442 01ba 8097      		sbiw r24,32
 443 01bc 00F4      		brsh .+2
 444 01be 00C0      		rjmp .L41
 446               	.LM42:
 447 01c0 80E1      		ldi r24,lo8(16)
 448 01c2 90E0      		ldi r25,hi8(16)
 449 01c4 C80E      		add r12,r24
 450 01c6 D91E      		adc r13,r25
 451 01c8 EE24      		clr r14
 452 01ca FF24      		clr r15
 453               	.L52:
 455               	.LM43:
 456 01cc B601      		movw r22,r12
 457 01ce C701      		movw r24,r14
 458 01d0 0E94 0000 		call Dis_Ascii_16
 460               	.LM44:
 461 01d4 0F5F      		subi r16,lo8(-(1))
 462 01d6 1F4F      		sbci r17,hi8(-(1))
 464               	.LM45:
 465 01d8 E8E0      		ldi r30,lo8(8)
 466 01da F0E0      		ldi r31,hi8(8)
 467 01dc EE0E      		add r14,r30
 468 01de FF1E      		adc r15,r31
 469 01e0 00C0      		rjmp .L64
 470               	.L50:
 472               	.LM46:
 473 01e2 84E5      		ldi r24,lo8(84)
 474 01e4 90E0      		ldi r25,hi8(84)
 475 01e6 8E19      		sub r24,r14
 476 01e8 9F09      		sbc r25,r15
 477 01ea 4097      		sbiw r24,16
 478 01ec 00F4      		brsh .L55
 480               	.LM47:
 481 01ee 80E3      		ldi r24,lo8(48)
 482 01f0 90E0      		ldi r25,hi8(48)
 483 01f2 8C19      		sub r24,r12
 484 01f4 9D09      		sbc r25,r13
 485 01f6 8097      		sbiw r24,32
 486 01f8 00F0      		brlo .L41
 488               	.LM48:
 489 01fa 80E1      		ldi r24,lo8(16)
 490 01fc 90E0      		ldi r25,hi8(16)
 491 01fe C80E      		add r12,r24
 492 0200 D91E      		adc r13,r25
 493 0202 EE24      		clr r14
 494 0204 FF24      		clr r15
 495               	.L55:
 496               	.LBB2:
 498               	.LM49:
 499 0206 0F5F      		subi r16,lo8(-(1))
 500 0208 1F4F      		sbci r17,hi8(-(1))
 501 020a F801      		movw r30,r16
 502               	/* #APP */
 503 020c 8491      		lpm r24, Z
 504               		
 505               	/* #NOAPP */
 506               	.LBE2:
 507 020e 90E0      		ldi r25,lo8(0)
 508 0210 982F      		mov r25,r24
 509 0212 8827      		clr r24
 510 0214 820F      		add r24,r18
 511 0216 931F      		adc r25,r19
 512 0218 9A83      		std Y+2,r25
 513 021a 8983      		std Y+1,r24
 515               	.LM50:
 516 021c A501      		movw r20,r10
 517 021e B601      		movw r22,r12
 518 0220 C701      		movw r24,r14
 519 0222 0E94 0000 		call Dis_GBK16
 521               	.LM51:
 522 0226 0F5F      		subi r16,lo8(-(1))
 523 0228 1F4F      		sbci r17,hi8(-(1))
 525               	.LM52:
 526 022a 80E1      		ldi r24,lo8(16)
 527 022c 90E0      		ldi r25,hi8(16)
 528 022e E80E      		add r14,r24
 529 0230 F91E      		adc r15,r25
 530               	.L64:
 531               	.LBB3:
 533               	.LM53:
 534 0232 F801      		movw r30,r16
 535               	/* #APP */
 536 0234 4491      		lpm r20, Z
 537               		
 538               	/* #NOAPP */
 539               	.LBE3:
 540 0236 4423      		tst r20
 541 0238 01F0      		breq .+2
 542 023a 00C0      		rjmp .L36
 543 023c 80E0      		ldi r24,lo8(0)
 544 023e 90E0      		ldi r25,hi8(0)
 545 0240 00C0      		rjmp .L59
 546               	.L41:
 547 0242 81E0      		ldi r24,lo8(1)
 548 0244 90E0      		ldi r25,hi8(1)
 549               	.L59:
 550               	/* epilogue: frame size=2 */
 551 0246 2296      		adiw r28,2
 552 0248 0FB6      		in __tmp_reg__,__SREG__
 553 024a F894      		cli
 554 024c DEBF      		out __SP_H__,r29
 555 024e 0FBE      		out __SREG__,__tmp_reg__
 556 0250 CDBF      		out __SP_L__,r28
 557 0252 DF91      		pop r29
 558 0254 CF91      		pop r28
 559 0256 1F91      		pop r17
 560 0258 0F91      		pop r16
 561 025a FF90      		pop r15
 562 025c EF90      		pop r14
 563 025e DF90      		pop r13
 564 0260 CF90      		pop r12
 565 0262 BF90      		pop r11
 566 0264 AF90      		pop r10
 567 0266 0895      		ret
 568               	/* epilogue end (size=17) */
 569               	/* function LCD_print16_P size 205 (170) */
 582               	.Lscope2:
 583               		.data
 584               	.LC0:
 585 0000 A1F6 00   		.string	"\241\366"
 586               		.text
 591               	.global	LCD_print_unicode16
 593               	LCD_print_unicode16:
 376:LCD\LCD_APP.c **** 		}
 377:LCD\LCD_APP.c **** 	}
 378:LCD\LCD_APP.c **** 	return 0;
 379:LCD\LCD_APP.c **** }
 380:LCD\LCD_APP.c **** 
 381:LCD\LCD_APP.c **** unsigned char LCD_print_unicode12(unsigned int x,unsigned int y,unsigned int *str)
 382:LCD\LCD_APP.c **** {
 383:LCD\LCD_APP.c **** 	unsigned int tempX = x,tempY = y;
 384:LCD\LCD_APP.c **** 	unsigned int temp;
 385:LCD\LCD_APP.c **** 	while(*str)
 386:LCD\LCD_APP.c **** 	{
 387:LCD\LCD_APP.c **** 		if(*str == '\n')
 388:LCD\LCD_APP.c **** 		{
 389:LCD\LCD_APP.c **** 			if((MAX_X - tempX)<6)
 390:LCD\LCD_APP.c **** 			{
 391:LCD\LCD_APP.c **** 				tempX = 0;
 392:LCD\LCD_APP.c **** 				if((MAX_Y - tempY)<12)return 1;
 393:LCD\LCD_APP.c **** 				else tempY += 12;
 394:LCD\LCD_APP.c **** 			}
 395:LCD\LCD_APP.c **** 			else if((MAX_Y - tempY)<24)return 1;
 396:LCD\LCD_APP.c **** 			else 
 397:LCD\LCD_APP.c **** 			{
 398:LCD\LCD_APP.c **** 				tempX = 0;
 399:LCD\LCD_APP.c **** 				tempY += 12;
 400:LCD\LCD_APP.c **** 			}
 401:LCD\LCD_APP.c **** 			str ++;
 402:LCD\LCD_APP.c **** 		}
 403:LCD\LCD_APP.c **** 		else if(*str<0x20)
 404:LCD\LCD_APP.c **** 		{
 405:LCD\LCD_APP.c **** 			if((MAX_X - tempX)<6)
 406:LCD\LCD_APP.c **** 			{
 407:LCD\LCD_APP.c **** 				tempX = 0;
 408:LCD\LCD_APP.c **** 				if((MAX_Y - tempY)<24)return 1;
 409:LCD\LCD_APP.c **** 				else tempY += 12;
 410:LCD\LCD_APP.c **** 			}
 411:LCD\LCD_APP.c **** 			Dis_Ascii_12(tempX,tempY,0x20);
 412:LCD\LCD_APP.c **** 			str ++;
 413:LCD\LCD_APP.c **** 			tempX += 6;
 414:LCD\LCD_APP.c **** 
 415:LCD\LCD_APP.c **** 		}
 416:LCD\LCD_APP.c **** 		else if(*str<0x80)
 417:LCD\LCD_APP.c **** 		{
 418:LCD\LCD_APP.c **** 			if((MAX_X - tempX)<6)
 419:LCD\LCD_APP.c **** 			{
 420:LCD\LCD_APP.c **** 				tempX = 0;
 421:LCD\LCD_APP.c **** 				if((MAX_Y - tempY)<24)return 1;
 422:LCD\LCD_APP.c **** 				else tempY += 12;
 423:LCD\LCD_APP.c **** 			}
 424:LCD\LCD_APP.c **** 			Dis_Ascii_12(tempX,tempY,*str);
 425:LCD\LCD_APP.c **** 			str ++;
 426:LCD\LCD_APP.c **** 			tempX += 6;
 427:LCD\LCD_APP.c **** 		}
 428:LCD\LCD_APP.c **** 		else if(*str<0x4e00)
 429:LCD\LCD_APP.c **** 		{
 430:LCD\LCD_APP.c **** 			if((MAX_X - tempX)<12)
 431:LCD\LCD_APP.c **** 			{
 432:LCD\LCD_APP.c **** 				tempX = 0;
 433:LCD\LCD_APP.c **** 				if((MAX_Y - tempY)<24)return 1;
 434:LCD\LCD_APP.c **** 				else tempY += 12;
 435:LCD\LCD_APP.c **** 			}
 436:LCD\LCD_APP.c **** 			Dis_GBK12(tempX,tempY,"■");
 437:LCD\LCD_APP.c **** 			str ++;
 438:LCD\LCD_APP.c **** 			tempX += 12;
 439:LCD\LCD_APP.c **** 
 440:LCD\LCD_APP.c **** 		}
 441:LCD\LCD_APP.c **** 		else if(*str<0x9fa6)
 442:LCD\LCD_APP.c **** 		{
 443:LCD\LCD_APP.c **** 			temp = *str;
 444:LCD\LCD_APP.c **** 			if((MAX_X - tempX)<12)
 445:LCD\LCD_APP.c **** 			{
 446:LCD\LCD_APP.c **** 				tempX = 0;
 447:LCD\LCD_APP.c **** 				if((MAX_Y - tempY)<24)return 1;
 448:LCD\LCD_APP.c **** 				else tempY += 12;
 449:LCD\LCD_APP.c **** 			}
 450:LCD\LCD_APP.c **** 			if(Unicode_to_GBK((unsigned char *)&temp))return 1;
 451:LCD\LCD_APP.c **** 			Dis_GBK12(tempX,tempY,(unsigned char *)&temp);
 452:LCD\LCD_APP.c **** 			str ++;
 453:LCD\LCD_APP.c **** 			tempX += 12;
 454:LCD\LCD_APP.c **** 		}
 455:LCD\LCD_APP.c **** 		else 
 456:LCD\LCD_APP.c **** 		{
 457:LCD\LCD_APP.c **** 			if((MAX_X - tempX)<12)
 458:LCD\LCD_APP.c **** 			{
 459:LCD\LCD_APP.c **** 				tempX = 0;
 460:LCD\LCD_APP.c **** 				if((MAX_Y - tempY)<24)return 1;
 461:LCD\LCD_APP.c **** 				else tempY += 12;
 462:LCD\LCD_APP.c **** 			}
 463:LCD\LCD_APP.c **** 			Dis_GBK12(tempX,tempY,"■");
 464:LCD\LCD_APP.c **** 			str ++;
 465:LCD\LCD_APP.c **** 			tempX += 12;
 466:LCD\LCD_APP.c **** 		}
 467:LCD\LCD_APP.c **** 	}
 468:LCD\LCD_APP.c **** 	return 0;
 469:LCD\LCD_APP.c **** }
 470:LCD\LCD_APP.c **** unsigned char LCD_print_unicode16(unsigned int x,unsigned int y,unsigned int *str)
 471:LCD\LCD_APP.c **** {
 594               		push r8
 595               		push r9
 596               		push r10
 597               		push r11
 598 0268 8F92      		push r12
 599 026a 9F92      		push r13
 600 026c AF92      		push r14
 601 026e BF92      		push r15
 602 0270 CF92      		push r16
 603 0272 DF92      		push r17
 604 0274 EF92      		push r28
 605 0276 FF92      		push r29
 606 0278 0F93      		in r28,__SP_L__
 607 027a 1F93      		in r29,__SP_H__
 608 027c CF93      		sbiw r28,2
 609 027e DF93      		in __tmp_reg__,__SREG__
 610 0280 CDB7      		cli
 611 0282 DEB7      		out __SP_H__,r29
 612 0284 2297      		out __SREG__,__tmp_reg__
 613 0286 0FB6      		out __SP_L__,r28
 614 0288 F894      	/* prologue end (size=20) */
 615 028a DEBF      		movw r12,r20
 616 028c 0FBE      		movw r16,r24
 617 028e CDBF      		movw r14,r22
 618               		ldi r21,lo8(.LC0)
 619 0290 6A01      		mov r8,r21
 620 0292 8C01      		ldi r21,hi8(.LC0)
 621 0294 7B01      		mov r9,r21
 623 0298 852E      	.LM55:
 624 029a 50E0      		movw r10,r28
 625 029c 952E      		sec
 472:LCD\LCD_APP.c **** 	unsigned int tempX = x,tempY = y;
 473:LCD\LCD_APP.c **** 	unsigned int temp;
 474:LCD\LCD_APP.c **** 	while(*str)
 475:LCD\LCD_APP.c **** 	{		if(*str == '\n')
 476:LCD\LCD_APP.c **** 		{
 477:LCD\LCD_APP.c **** 			if((MAX_X - tempX)<8)
 478:LCD\LCD_APP.c **** 			{
 479:LCD\LCD_APP.c **** 				tempX = 0;
 480:LCD\LCD_APP.c **** 				if((MAX_Y - tempY)<32)return 1;
 481:LCD\LCD_APP.c **** 				else tempY += 16;
 482:LCD\LCD_APP.c **** 			}
 483:LCD\LCD_APP.c **** 			else if((MAX_Y - tempY)<32)return 1;
 484:LCD\LCD_APP.c **** 			else 
 485:LCD\LCD_APP.c **** 			{
 486:LCD\LCD_APP.c **** 				tempX = 0;
 487:LCD\LCD_APP.c **** 				tempY += 16;
 488:LCD\LCD_APP.c **** 			}
 489:LCD\LCD_APP.c **** 			str ++;
 490:LCD\LCD_APP.c **** 		}
 491:LCD\LCD_APP.c **** 		else if(*str<0x20)
 492:LCD\LCD_APP.c **** 		{
 493:LCD\LCD_APP.c **** 			if((MAX_X - tempX)<8)
 494:LCD\LCD_APP.c **** 			{
 495:LCD\LCD_APP.c **** 				tempX = 0;
 496:LCD\LCD_APP.c **** 				if((MAX_Y - tempY)<32)return 1;
 497:LCD\LCD_APP.c **** 				else tempY += 16;
 498:LCD\LCD_APP.c **** 			}
 499:LCD\LCD_APP.c **** 			Dis_Ascii_16(tempX,tempY,0x20);
 500:LCD\LCD_APP.c **** 			str ++;
 501:LCD\LCD_APP.c **** 			tempX += 8;
 502:LCD\LCD_APP.c **** 		}
 503:LCD\LCD_APP.c **** 		else if(*str<0x80)
 504:LCD\LCD_APP.c **** 		{
 505:LCD\LCD_APP.c **** 			if((MAX_X - tempX)<8)
 506:LCD\LCD_APP.c **** 			{
 507:LCD\LCD_APP.c **** 				tempX = 0;
 508:LCD\LCD_APP.c **** 				if((MAX_Y - tempY)<32)return 1;
 509:LCD\LCD_APP.c **** 				else tempY += 16;
 510:LCD\LCD_APP.c **** 			}
 511:LCD\LCD_APP.c **** 			Dis_Ascii_16(tempX,tempY,*str);
 512:LCD\LCD_APP.c **** 			str ++;
 513:LCD\LCD_APP.c **** 			tempX += 8;
 514:LCD\LCD_APP.c **** 		}
 515:LCD\LCD_APP.c **** 		else if(*str < 0x4e00)
 516:LCD\LCD_APP.c **** 		{
 517:LCD\LCD_APP.c **** 			if((MAX_X - tempX)<16)
 518:LCD\LCD_APP.c **** 			{
 519:LCD\LCD_APP.c **** 				tempX = 0;
 520:LCD\LCD_APP.c **** 				if((MAX_Y - tempY)<32)return 1;
 521:LCD\LCD_APP.c **** 				else tempY += 16;
 522:LCD\LCD_APP.c **** 			}
 523:LCD\LCD_APP.c **** 			Dis_GBK16(tempX,tempY,"■");
 524:LCD\LCD_APP.c **** 			str ++;
 525:LCD\LCD_APP.c **** 			tempX += 16;
 526:LCD\LCD_APP.c **** 		}
 527:LCD\LCD_APP.c **** 		else if(*str < 0x9fa6)
 528:LCD\LCD_APP.c **** 		{
 529:LCD\LCD_APP.c **** 			temp = *str;
 530:LCD\LCD_APP.c **** 			if((MAX_X - tempX)<16)
 531:LCD\LCD_APP.c **** 			{
 532:LCD\LCD_APP.c **** 				tempX = 0;
 533:LCD\LCD_APP.c **** 				if((MAX_Y - tempY)<32)return 1;
 534:LCD\LCD_APP.c **** 				else tempY += 16;
 535:LCD\LCD_APP.c **** 			}
 536:LCD\LCD_APP.c **** 			if(Unicode_to_GBK((unsigned char *)&temp))return 1;
 626               	_zero_reg__
 627               		rjmp .L66
 628 029e 5E01      	.L67:
 630 02a2 A11C      	.LM56:
 631 02a4 B11C      		cpi r20,10
 632 02a6 00C0      		cpc r21,__zero_reg__
 633               		brne .L68
 635               	.LM57:
 636 02a8 4A30      		ldi r24,lo8(84)
 637 02aa 5105      		ldi r25,hi8(84)
 638 02ac 01F4      		sub r24,r16
 639               		sbc r25,r17
 640               		sbiw r24,8
 641 02ae 84E5      		brsh .L70
 643 02b2 801B      	.LM58:
 644 02b4 910B      		ldi r24,lo8(48)
 645 02b6 0897      		ldi r25,hi8(48)
 646 02b8 00F4      		sub r24,r14
 647               		sbc r25,r15
 648               		sbiw r24,32
 649 02ba 80E3      		brsh .+2
 650 02bc 90E0      		rjmp .L72
 652 02c0 9F09      	.LM59:
 653 02c2 8097      		ldi r24,lo8(16)
 654 02c4 00F4      		ldi r25,hi8(16)
 655 02c6 00C0      		add r14,r24
 656               		adc r15,r25
 657               		rjmp .L74
 658 02c8 80E1      	.L70:
 660 02cc E80E      	.LM60:

⌨️ 快捷键说明

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