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

📄 lcd.lst

📁 l602驱动程序 数据总线为4根 增加了io利用率
💻 LST
📖 第 1 页 / 共 3 页
字号:
 513 00d0 DEB7      		movw r16,r22
 515 00d4 0FB6      	.LM44:
 516 00d6 F894      		ldi r24,lo8(5)
 517 00d8 DEBF      		movw r30,r28
 518 00da 0FBE      		adiw r30,1
 519 00dc CDBF      		st Z+,__zero_reg__
 520               	        dec r24
 521 00de 9C01      		brne .-6
 522 00e0 8B01      		movw r30,r28
 214:lcd.c         **** 	/***************************************************************
 215:lcd.c         **** 	This function writes a integer type value to LCD module
 216:lcd.c         **** 
 217:lcd.c         **** 	Arguments:
 218:lcd.c         **** 	1)int val	: Value to print
 219:lcd.c         **** 
 220:lcd.c         **** 	2)unsigned int field_length :total length of field in which the value is printed
 221:lcd.c         **** 	must be between 1-5 if it is -1 the field length is no of digits in the val
 222:lcd.c         **** 
 223:lcd.c         **** 	****************************************************************/
 224:lcd.c         **** 
 225:lcd.c         **** 	char str[5]={0,0,0,0,0};
 523               	18
 524               	.L19:
 526 00e4 FE01      	.LM45:
 527 00e6 3196      		movw r24,r18
 528 00e8 1192      		ldi r22,lo8(10)
 529 00ea 8A95      		ldi r23,hi8(10)
 530 00ec 01F4      		call __divmodhi4
 531 00ee FE01      		std Z+1,r24
 533 00f2 00C0      	.LM46:
 534               		movw r24,r18
 226:lcd.c         **** 	int i=4,j=0;
 227:lcd.c         **** 	while(val)
 228:lcd.c         **** 	{
 229:lcd.c         **** 	str[i]=val%10;
 535               	(10)
 536               		ldi r23,hi8(10)
 537 00f4 C901      		call __divmodhi4
 538 00f6 6AE0      		movw r18,r22
 539 00f8 70E0      	.L18:
 540 00fa 0E94 0000 		sbiw r30,1
 230:lcd.c         **** 	val=val/10;
 542               		cp r18,__zero_reg__
 543               		cpc r19,__zero_reg__
 544 0100 C901      		brne .L19
 546 0104 70E0      	.LM48:
 547 0106 0E94 0000 		ldi r24,hi8(-1)
 548 010a 9B01      		cpi r16,lo8(-1)
 549               		cpc r17,r24
 550 010c 3197      		brne .L21
 551               		movw r30,r28
 552               	.L24:
 553 010e 2115      		adiw r30,1
 555 0112 01F4      	.LM49:
 231:lcd.c         **** 	i--;
 232:lcd.c         **** 	}
 233:lcd.c         **** 	if(field_length==-1)
 556               	 r24
 557               		breq .L24
 559 0116 0F3F      	.LM50:
 560 0118 1807      		movw r24,r28
 561 011a 01F4      		adiw r24,1
 562 011c FE01      		sub r30,r24
 563               		sbc r31,r25
 564 011e 3196      		movw r24,r30
 234:lcd.c         **** 		while(str[j]==0) j++;
 565               	6
 566               	.L21:
 568 0122 8823      	.LM51:
 569 0124 01F0      		ldi r24,lo8(5)
 570               		ldi r25,hi8(5)
 571               		sub r24,r16
 572 0126 CE01      		sbc r25,r17
 573 0128 0196      	.L26:
 574 012a E81B      		movw r14,r28
 575 012c F90B      		sec
 576 012e CF01      		adc r14,__zero_reg__
 577 0130 00C0      		adc r15,__zero_reg__
 578               		add r14,r24
 235:lcd.c         **** 	else
 236:lcd.c         **** 		j=5-field_length;
 579               	movw r16,r24
 580               		rjmp .L27
 581 0132 85E0      	.L28:
 583 0136 801B      	.LM52:
 584 0138 910B      		movw r30,r14
 585               		ld r24,Z+
 586 013a 7E01      		movw r14,r30
 587 013c 0894      		ldi r22,lo8(1)
 588 013e E11C      		subi r24,lo8(-(48))
 589 0140 F11C      		call LCDByte
 591 0144 F91E      	.LM53:
 592 0146 8C01      		subi r16,lo8(-(1))
 593 0148 00C0      		sbci r17,hi8(-(1))
 594               	.L27:
 237:lcd.c         **** 
 238:lcd.c         **** 	if(val<0) LCDData('-');
 239:lcd.c         **** 	for(i=j;i<5;i++)
 240:lcd.c         **** 	{
 241:lcd.c         **** 	LCDData(48+str[i]);
 595               	r17,__zero_reg__
 596               		brlt .L28
 597 014a F701      	/* epilogue: frame size=5 */
 598 014c 8191      		adiw r28,5
 599 014e 7F01      		in __tmp_reg__,__SREG__
 600 0150 61E0      		cli
 601 0152 805D      		out __SP_H__,r29
 602 0154 0E94 0000 		out __SREG__,__tmp_reg__
 603               		out __SP_L__,r28
 604               		pop r29
 605 0158 0F5F      		pop r28
 606 015a 1F4F      		pop r17
 607               		pop r16
 608 015c 0530      		pop r15
 609 015e 1105      		pop r14
 610 0160 04F0      		ret
 611               	/* epilogue end (size=13) */
 612 0162 2596      	/* function LCDWriteInt size 93 (66) */
 619 0170 CF91      	.Lscope3:
 623 0178 EF90      	.global	LCDGotoXY
 625               	LCDGotoXY:
 627               	.LM54:
 628               	/* prologue: frame size=0 */
 629               	/* prologue end (size=0) */
 631               	.LM55:
 632               		cpi r24,lo8(40)
 633               		brsh .L36
 635               	.LM56:
 636               		cpse r22,__zero_reg__
 637               		ori r24,lo8(64)
 638               	.L34:
 242:lcd.c         **** 	}
 243:lcd.c         **** }
 244:lcd.c         **** void LCDGotoXY(uint8_t x,uint8_t y)
 245:lcd.c         **** {
 640               	ll LCDByte
 641               	.L36:
 642               		ret
 643               	/* epilogue: frame size=0 */
 246:lcd.c         ****  if(x<40)
 644               	,__zero_reg__
 645               		ori r24,lo8(64)
 646 017c 8832      	.L34:
 247:lcd.c         ****  {
 248:lcd.c         ****   if(y) x|=0b01000000;
 648               	46,.LM55-LCDGotoXY
 649               	.LM55:
 650 0180 6111      		cpi r24,lo8(40)
 651 0182 8064      		brsh .L36
 249:lcd.c         ****   x|=0b10000000;
 250:lcd.c         ****   LCDCmd(x);
 653               	54-LCDGotoXY
 654               	.LM54:
 655 0184 60E0      	/* prologue: frame size=0 */
 656 0186 8068      	/* prologue end (size=0) */
 658               	.LM55:
 659 018c 0895      		cpi r24,lo8(40)
 660               		brsh .L36
 662               	.LM56:
 663               		cpse r22,__zero_reg__
 664               		ori r24,lo8(64)
 665               	.L34:
 667               	.LM57:
 668               		ldi r22,lo8(0)
 669               		ori r24,lo8(-128)
 670               		call LCDByte
 671               	.L36:
 672               		ret
 673               	/* epilogue: frame size=0 */
 674 018e 1F93      	/* epilogue: noreturn */
 675               	/* epilogue end (size=0) */
 676 0190 182F      	/* function LCDGotoXY size 10 (10) */
 678               	.Lscope4:
 681               	.global	InitLCD
 105:c:/winavr/bin/../avr/include/util/delay.h **** 		"1: dec %0" "\n\t"
 106:c:/winavr/bin/../avr/include/util/delay.h **** 		"brne 1b"
 107:c:/winavr/bin/../avr/include/util/delay.h **** 		: "=r" (__count)
 108:c:/winavr/bin/../avr/include/util/delay.h **** 		: "0" (__count)
 109:c:/winavr/bin/../avr/include/util/delay.h **** 	);
 110:c:/winavr/bin/../avr/include/util/delay.h **** }
 111:c:/winavr/bin/../avr/include/util/delay.h **** 
 112:c:/winavr/bin/../avr/include/util/delay.h **** /** \ingroup util_delay
 113:c:/winavr/bin/../avr/include/util/delay.h **** 
 114:c:/winavr/bin/../avr/include/util/delay.h ****     Delay loop using a 16-bit counter \c __count, so up to 65536
 115:c:/winavr/bin/../avr/include/util/delay.h ****     iterations are possible.  (The value 65536 would have to be
 116:c:/winavr/bin/../avr/include/util/delay.h ****     passed as 0.)  The loop executes four CPU cycles per iteration,
 117:c:/winavr/bin/../avr/include/util/delay.h ****     not including the overhead the compiler requires to setup the
 118:c:/winavr/bin/../avr/include/util/delay.h ****     counter register pair.
 119:c:/winavr/bin/../avr/include/util/delay.h **** 
 120:c:/winavr/bin/../avr/include/util/delay.h ****     Thus, at a CPU speed of 1 MHz, delays of up to about 262.1
 121:c:/winavr/bin/../avr/include/util/delay.h ****     milliseconds can be achieved.
 122:c:/winavr/bin/../avr/include/util/delay.h ****  */
 123:c:/winavr/bin/../avr/include/util/delay.h **** void
 124:c:/winavr/bin/../avr/include/util/delay.h **** _delay_loop_2(uint16_t __count)
 125:c:/winavr/bin/../avr/include/util/delay.h **** {
 126:c:/winavr/bin/../avr/include/util/delay.h **** 	__asm__ volatile (
 683               	
 685 0192 80E6      	.Lscope4:
 688 0196 0197      	.global	InitLCD
 690               	InitLCD:
 692               	.LM58:
 693               	/* prologue: frame size=0 */
 694               		push r17
 695               	/* prologue end (size=1) */
 696               		mov r17,r24
 697               	.LBB118:
 698               	.LBB119:
 699 019a 84B3      	.LBB120:
 700 019c 8F60      	.LBB121:
 702               	.Ltext25:
 704 01a0 8F9A      	.LM59:
 705               		ldi r24,lo8(-5536)
 706               		ldi r25,hi8(-5536)
 707 01a2 8E9A      	/* #APP */
 708               		1: sbiw r24,1
 709               		brne 1b
 710 01a4 8D9A      	/* #NOAPP */
 711               	.LBE121:
 712               	.LBE120:
 713 01a6 85B3      	.LBE119:
 714 01a8 807F      	.LBE118:
 716               	.Ltext26:
 718 01ac 9798      	.LM60:
 719               		in r24,52-0x20
 720               		ori r24,lo8(15)
 721 01ae 9598      		out 52-0x20,r24
 723               	.LM61:
 724 01b0 9698      		sbi 49-0x20,7
 726               	.LM62:
 727               		sbi 49-0x20,6
 729               	.LM63:
 730               		sbi 49-0x20,5
 732               	.LM64:
 733 01b2 81E0      		in r24,53-0x20
 734               		andi r24,lo8(-16)
 735 01b4 8A95      		out 53-0x20,r24
 737               	.LM65:
 738               		cbi 50-0x20,7
 740               	.LM66:
 741               		cbi 50-0x20,5
 743               	.LM67:
 744               		cbi 50-0x20,6
 745               	.LBB122:
 746 01b8 979A      	.LBB123:
 747               	.LBB124:
 748               	.LBB125:
 750               	.Ltext27:
 752               	.LM68:
 753               		ldi r24,lo8(1)
 754               	/* #APP */
 755               		1: dec r24
 756               		brne 1b
 757               	/* #NOAPP */
 758 01bc 82E0      	.LBE125:
 759 01be 982F      	.LBE124:
 760               	.LBE123:
 761 01c0 9A95      	.LBE122:
 763               	.Ltext28:
 765               	.LM69:
 766               		sbi 50-0x20,7
 768               	.LM70:
 769               		sbi 53-0x20,1
 770               	.LBB126:
 771               	.LBB127:
 772 01c4 9798      	.LBB128:
 773               	.LBB129:
 775               	.Ltext29:
 777               	.LM71:
 778               		ldi r24,lo8(2)
 779               		mov r25,r24
 780               	/* #APP */
 781               		1: dec r25
 782 01c6 8A95      		brne 1b
 783 01c8 01F4      	/* #NOAPP */
 784               	.LBE129:
 785               	.LBE128:
 786               	.LBE127:
 787               	.LBE126:
 789               	.Ltext30:
 791               	.LM72:
 792               		cbi 50-0x20,7
 793 01ca 0E94 0000 	.LBB130:
 794               	.LBB131:
 795               	.LBB132:
 796 01ce 60E0      	.LBB133:
 798 01d2 8C60      	.Ltext31:
 800               	.LM73:
 801               	/* #APP */
 802 01d8 60E0      		1: dec r24
 803 01da 88E2      		brne 1b
 804 01dc 0E94 0000 	/* #NOAPP */
 805               	.LBE133:
 806 01e0 1F91      	.LBE132:
 807 01e2 0895      	.LBE131:
 808               	.LBE130:
 810               	.Ltext32:
 812               	.LM74:
 813               		call LCDBusyLoop
 815               	.LM75:
 816               		ldi r22,lo8(0)
 817               		mov r24,r17
 818               		ori r24,lo8(12)
 819               		call LCDByte
 821               	.LM76:
 822               		ldi r22,lo8(0)
 823               		ldi r24,lo8(40)
 824               		call LCDByte
 825               	/* epilogue: frame size=0 */
 826               		pop r17
DEFINED SYMBOLS
                            *ABS*:00000000 lcd.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc6Laaaa.s:3      *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc6Laaaa.s:4      *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc6Laaaa.s:5      *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc6Laaaa.s:6      *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc6Laaaa.s:7      *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc6Laaaa.s:70     .text:00000000 LCDBusyLoop
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc6Laaaa.s:292    .text:00000056 LCDByte
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc6Laaaa.s:466    .text:000000a6 LCDWriteString
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc6Laaaa.s:502    .text:000000c2 LCDWriteInt
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc6Laaaa.s:639    .text:0000017c LCDGotoXY
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc6Laaaa.s:670    .text:0000018e InitLCD

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__divmodhi4

⌨️ 快捷键说明

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