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

📄 lcm1602.lst

📁 WINAVR编写的PS2键盘驱动
💻 LST
📖 第 1 页 / 共 5 页
字号:
 424 01f8 6981      		ldd r22,Y+1
 425 01fa 7A81      		ldd r23,Y+2
 426 01fc 8B81      		ldd r24,Y+3
 427 01fe 9C81      		ldd r25,Y+4
 428 0200 0E94 0000 		call __fixunssfsi
 429 0204 DC01      		movw r26,r24
 430 0206 CB01      		movw r24,r22
 431 0208 9C87      		std Y+12,r25
 432 020a 8B87      		std Y+11,r24
 433               	.L20:
 434               	.LBB12:
 436               	.LM35:
 437 020c 8B85      		ldd r24,Y+11
 438 020e 9C85      		ldd r25,Y+12
 439 0210 9E83      		std Y+6,r25
 440 0212 8D83      		std Y+5,r24
 441               	.LBB13:
 443               	.LM36:
 444 0214 8D81      		ldd r24,Y+5
 445 0216 9E81      		ldd r25,Y+6
 446               	/* #APP */
 447 0218 0197      		1: sbiw r24,1
 448 021a F1F7      		brne 1b
 449               	/* #NOAPP */
 450 021c 9E83      		std Y+6,r25
 451 021e 8D83      		std Y+5,r24
 452               	.LBE13:
 453               	.LBE12:
 454               	.LBE11:
 455               	.LBE10:
 457               	.Ltext6:
  81:lcm1602.c     **** 	_delay_ms(5);
  82:lcm1602.c     **** 	LCM1602WriteCommand(0x38,0);
 459               	.LM37:
 460 0220 60E0      		ldi r22,lo8(0)
 461 0222 88E3      		ldi r24,lo8(56)
 462 0224 0E94 0000 		call LCM1602WriteCommand
 463               	.LBB14:
 465               	.Ltext7:
 467               	.LM38:
 468 0228 80E0      		ldi r24,lo8(0x40a00000)
 469 022a 90E0      		ldi r25,hi8(0x40a00000)
 470 022c A0EA      		ldi r26,hlo8(0x40a00000)
 471 022e B0E4      		ldi r27,hhi8(0x40a00000)
 472 0230 8F83      		std Y+7,r24
 473 0232 9887      		std Y+8,r25
 474 0234 A987      		std Y+9,r26
 475 0236 BA87      		std Y+10,r27
 476               	.LBB15:
 478               	.LM39:
 479 0238 26E6      		ldi r18,lo8(0x44e66666)
 480 023a 36E6      		ldi r19,hi8(0x44e66666)
 481 023c 46EE      		ldi r20,hlo8(0x44e66666)
 482 023e 54E4      		ldi r21,hhi8(0x44e66666)
 483 0240 6F81      		ldd r22,Y+7
 484 0242 7885      		ldd r23,Y+8
 485 0244 8985      		ldd r24,Y+9
 486 0246 9A85      		ldd r25,Y+10
 487 0248 0E94 0000 		call __mulsf3
 488 024c DC01      		movw r26,r24
 489 024e CB01      		movw r24,r22
 490 0250 8983      		std Y+1,r24
 491 0252 9A83      		std Y+2,r25
 492 0254 AB83      		std Y+3,r26
 493 0256 BC83      		std Y+4,r27
 495               	.LM40:
 496 0258 20E0      		ldi r18,lo8(0x3f800000)
 497 025a 30E0      		ldi r19,hi8(0x3f800000)
 498 025c 40E8      		ldi r20,hlo8(0x3f800000)
 499 025e 5FE3      		ldi r21,hhi8(0x3f800000)
 500 0260 6981      		ldd r22,Y+1
 501 0262 7A81      		ldd r23,Y+2
 502 0264 8B81      		ldd r24,Y+3
 503 0266 9C81      		ldd r25,Y+4
 504 0268 0E94 0000 		call __ltsf2
 505 026c 8823      		tst r24
 506 026e 0CF0      		brlt .L27
 507 0270 05C0      		rjmp .L26
 508               	.L27:
 510               	.LM41:
 511 0272 81E0      		ldi r24,lo8(1)
 512 0274 90E0      		ldi r25,hi8(1)
 513 0276 9C87      		std Y+12,r25
 514 0278 8B87      		std Y+11,r24
 515 027a 1AC0      		rjmp .L28
 516               	.L26:
 518               	.LM42:
 519 027c 20E0      		ldi r18,lo8(0x477fff00)
 520 027e 3FEF      		ldi r19,hi8(0x477fff00)
 521 0280 4FE7      		ldi r20,hlo8(0x477fff00)
 522 0282 57E4      		ldi r21,hhi8(0x477fff00)
 523 0284 6981      		ldd r22,Y+1
 524 0286 7A81      		ldd r23,Y+2
 525 0288 8B81      		ldd r24,Y+3
 526 028a 9C81      		ldd r25,Y+4
 527 028c 0E94 0000 		call __gtsf2
 528 0290 1816      		cp __zero_reg__,r24
 529 0292 0CF0      		brlt .L30
 530 0294 03C0      		rjmp .L29
 531               	.L30:
 533               	.LM43:
 534 0296 1C86      		std Y+12,__zero_reg__
 535 0298 1B86      		std Y+11,__zero_reg__
 536 029a 0AC0      		rjmp .L28
 537               	.L29:
 539               	.LM44:
 540 029c 6981      		ldd r22,Y+1
 541 029e 7A81      		ldd r23,Y+2
 542 02a0 8B81      		ldd r24,Y+3
 543 02a2 9C81      		ldd r25,Y+4
 544 02a4 0E94 0000 		call __fixunssfsi
 545 02a8 DC01      		movw r26,r24
 546 02aa CB01      		movw r24,r22
 547 02ac 9C87      		std Y+12,r25
 548 02ae 8B87      		std Y+11,r24
 549               	.L28:
 550               	.LBB16:
 552               	.LM45:
 553 02b0 8B85      		ldd r24,Y+11
 554 02b2 9C85      		ldd r25,Y+12
 555 02b4 9E83      		std Y+6,r25
 556 02b6 8D83      		std Y+5,r24
 557               	.LBB17:
 559               	.LM46:
 560 02b8 8D81      		ldd r24,Y+5
 561 02ba 9E81      		ldd r25,Y+6
 562               	/* #APP */
 563 02bc 0197      		1: sbiw r24,1
 564 02be F1F7      		brne 1b
 565               	/* #NOAPP */
 566 02c0 9E83      		std Y+6,r25
 567 02c2 8D83      		std Y+5,r24
 568               	.LBE17:
 569               	.LBE16:
 570               	.LBE15:
 571               	.LBE14:
 573               	.Ltext8:
  83:lcm1602.c     **** 	_delay_ms(5);
  84:lcm1602.c     **** 	LCM1602WriteCommand(0x38,1);         //以后的显示都要检查忙
 575               	.LM47:
 576 02c4 61E0      		ldi r22,lo8(1)
 577 02c6 88E3      		ldi r24,lo8(56)
 578 02c8 0E94 0000 		call LCM1602WriteCommand
  85:lcm1602.c     **** 	LCM1602WriteCommand(0x08,1);         //关闭显示
 580               	.LM48:
 581 02cc 61E0      		ldi r22,lo8(1)
 582 02ce 88E0      		ldi r24,lo8(8)
 583 02d0 0E94 0000 		call LCM1602WriteCommand
  86:lcm1602.c     **** 	LCM1602WriteCommand(0x01,1);         //显示清屏
 585               	.LM49:
 586 02d4 61E0      		ldi r22,lo8(1)
 587 02d6 81E0      		ldi r24,lo8(1)
 588 02d8 0E94 0000 		call LCM1602WriteCommand
  87:lcm1602.c     **** 	LCM1602WriteCommand(0x06,1);         //写指令06H,文字不动,光标自动右移
 590               	.LM50:
 591 02dc 61E0      		ldi r22,lo8(1)
 592 02de 86E0      		ldi r24,lo8(6)
 593 02e0 0E94 0000 		call LCM1602WriteCommand
  88:lcm1602.c     **** 	LCM1602WriteCommand(0x0d,1);         //写指令0CH,显示ON,光标OFF,闪烁ON
 595               	.LM51:
 596 02e4 61E0      		ldi r22,lo8(1)
 597 02e6 8DE0      		ldi r24,lo8(13)
 598 02e8 0E94 0000 		call LCM1602WriteCommand
 599               	/* epilogue: frame size=12 */
 600 02ec 2C96      		adiw r28,12
 601 02ee 0FB6      		in __tmp_reg__,__SREG__
 602 02f0 F894      		cli
 603 02f2 DEBF      		out __SP_H__,r29
 604 02f4 0FBE      		out __SREG__,__tmp_reg__
 605 02f6 CDBF      		out __SP_L__,r28
 606 02f8 DF91      		pop r29
 607 02fa CF91      		pop r28
 608 02fc 0895      		ret
 609               	/* epilogue end (size=9) */
 610               	/* function LCM1602Init size 391 (372) */
 652               	.Lscope0:
 654               	.global	LCM1602BusyWait
 656               	LCM1602BusyWait:
  89:lcm1602.c     **** }
  90:lcm1602.c     **** 
  91:lcm1602.c     **** 
  92:lcm1602.c     **** //1602总线忙等待
  93:lcm1602.c     **** void LCM1602BusyWait(void)
  94:lcm1602.c     **** {
 658               	.LM52:
 659               	/* prologue: frame size=0 */
 660 02fe CF93      		push r28
 661 0300 DF93      		push r29
 662 0302 CDB7      		in r28,__SP_L__
 663 0304 DEB7      		in r29,__SP_H__
 664               	/* prologue end (size=4) */
  95:lcm1602.c     **** 	DB_IN;                              //PB定义为输入,读引脚信号
 666               	.LM53:
 667 0306 1092 3700 		sts 55,__zero_reg__
  96:lcm1602.c     **** 	RS_CLR;
 669               	.LM54:
 670 030a 8091 3200 		lds r24,50
 671 030e 8F7E      		andi r24,lo8(-17)
 672 0310 8093 3200 		sts 50,r24
  97:lcm1602.c     **** 	RW_SET;                             //当RS为低电平RW为高电平时可以读忙信号
 674               	.LM55:
 675 0314 8091 3200 		lds r24,50
 676 0318 8062      		ori r24,lo8(32)
 677 031a 8093 3200 		sts 50,r24
  98:lcm1602.c     **** 	E_SET;
 679               	.LM56:
 680 031e 8091 3200 		lds r24,50
 681 0322 8068      		ori r24,lo8(-128)
 682 0324 8093 3200 		sts 50,r24
  99:lcm1602.c     **** 	asm("nop\n nop");                  //延时两个nop时间
 684               	.LM57:
 685               	/* #APP */
 686 0328 0000      		nop
 687 032a 0000      	 nop
 688               	/* #NOAPP */
 689               	.L35:
 100:lcm1602.c     **** 	while(DB_READ&0x80);              //直到忙信号结束,1602可再次写入信号
 691               	.LM58:
 692 032c 8091 3600 		lds r24,54
 693 0330 8823      		tst r24
 694 0332 0CF4      		brge .L36
 695 0334 FBCF      		rjmp .L35
 696               	.L36:
 101:lcm1602.c     **** 	DB_OUT;
 698               	.LM59:
 699 0336 8FEF      		ldi r24,lo8(-1)
 700 0338 8093 3700 		sts 55,r24
 102:lcm1602.c     **** 	E_CLR;
 702               	.LM60:
 703 033c 9FE7      		ldi r25,lo8(127)
 704 033e 8091 3200 		lds r24,50
 705 0342 8923      		and r24,r25
 706 0344 8093 3200 		sts 50,r24
 707               	/* epilogue: frame size=0 */
 708 0348 DF91      		pop r29
 709 034a CF91      		pop r28
 710 034c 0895      		ret
 711               	/* epilogue end (size=3) */
 712               	/* function LCM1602BusyWait size 42 (35) */
 714               	.Lscope1:
 718               	.global	LCM1602WriteCommand
 720               	LCM1602WriteCommand:
 103:lcm1602.c     **** }
 104:lcm1602.c     **** 
 105:lcm1602.c     **** 
 106:lcm1602.c     **** //向1602写入命令
 107:lcm1602.c     **** void LCM1602WriteCommand(uchar com,uchar Busy)//Busy为0时忽略忙检测,为1时检查
 108:lcm1602.c     **** {
 722               	.LM61:
 723               	/* prologue: frame size=2 */
 724 034e CF93      		push r28
 725 0350 DF93      		push r29
 726 0352 CDB7      		in r28,__SP_L__
 727 0354 DEB7      		in r29,__SP_H__
 728 0356 2297      		sbiw r28,2
 729 0358 0FB6      		in __tmp_reg__,__SREG__
 730 035a F894      		cli
 731 035c DEBF      		out __SP_H__,r29
 732 035e 0FBE      		out __SREG__,__tmp_reg__
 733 0360 CDBF      		out __SP_L__,r28
 734               	/* prologue end (size=10) */
 735 0362 8983      		std Y+1,r24
 736 0364 6A83      		std Y+2,r22
 109:lcm1602.c     **** 	if(Busy)
 738               	.LM62:
 739 0366 8A81      		ldd r24,Y+2
 740 0368 8823      		tst r24
 741 036a 11F0      		breq .L38
 110:lcm1602.c     **** 	{
 111:lcm1602.c     **** 		LCM1602BusyWait();                 //根据需要检测忙
 743               	.LM63:
 744 036c 0E94 0000 		call LCM1602BusyWait
 745               	.L38:
 112:lcm1602.c     **** 	}
 113:lcm1602.c     **** 	RS_CLR;    
 747               	.LM64:
 748 0370 8091 3200 		lds r24,50
 749 0374 8F7E      		andi r24,lo8(-17)
 750 0376 8093 3200 		sts 50,r24
 114:lcm1602.c     **** 	RW_CLR;                              //当RS和RW共同为低电平时可以写入指令或者显示地址
 752               	.LM65:
 753 037a 8091 3200 		lds r24,50
 754 037e 8F7D      		andi r24,lo8(-33)
 755 0380 8093 3200 		sts 50,r24
 115:lcm1602.c     **** 	DB_PORT=com;
 757               	.LM66:
 758 0384 8981      		ldd r24,Y+1
 759 0386 8093 3800 		sts 56,r24
 116:lcm1602.c     **** 	E_SET;
 761               	.LM67:
 762 038a 8091 3200 		lds r24,50
 763 038e 8068      		ori r24,lo8(-128)
 764 0390 8093 3200 		sts 50,r24

⌨️ 快捷键说明

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