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

📄 menu.lst

📁 一个基于MEGA16的GUI
💻 LST
📖 第 1 页 / 共 4 页
字号:
 627 027c 07C0      		rjmp .L33
 628               	.L32:
 160:menu.c        ****          
 161:menu.c        ****       }
 162:menu.c        ****       else
 163:menu.c        ****       {  
 164:menu.c        **** 	   GUI_Rectangle(xx-(SMENU_WIDTH-MMENU_WIDTH), mwin->y + 19, xx+MMENU_WIDTH, yy,Windows_C);
 630               	.LM55:
 631 027e 0091 0000 		lds r16,Windows_C
 632 0282 212F      		mov r18,r17
 633 0284 4E2D      		mov r20,r14
 634 0286 8C2F      		mov r24,r28
 635 0288 0E94 0000 		call GUI_Rectangle
 636               	.L33:
 165:menu.c        ****       }
 166:menu.c        ****       GUI_HLine(xx+1, mwin->y + 19, xx+MMENU_WIDTH-1,Back_G );
 638               	.LM56:
 639 028c 9F2D      		mov r25,r15
 640 028e 955E      		subi r25,lo8(-(27))
 641 0290 F601      		movw r30,r12
 642 0292 8181      		ldd r24,Z+1
 643 0294 8D5E      		subi r24,lo8(-(19))
 644 0296 2091 0000 		lds r18,Back_G
 645 029a 492F      		mov r20,r25
 646 029c 682F      		mov r22,r24
 647 029e 8F2D      		mov r24,r15
 648 02a0 8F5F      		subi r24,lo8(-(1))
 649 02a2 0E94 0000 		call GUI_HLine
 167:menu.c        ****       
 168:menu.c        ****       xx = xx-(SMENU_WIDTH-MMENU_WIDTH);
 651               	.LM57:
 652 02a6 F2EF      		ldi r31,lo8(-14)
 653 02a8 FF0E      		add r15,r31
 654               	.L31:
 169:menu.c        ****    }
 170:menu.c        ****    
 171:menu.c        ****    /* 显示菜单文字 */
 172:menu.c        ****    xx++;
 656               	.LM58:
 657 02aa F394      		inc r15
 173:menu.c        ****    yy = mwin->y + 19 + 2;
 659               	.LM59:
 660 02ac E601      		movw r28,r12
 661 02ae 1981      		ldd r17,Y+1
 662 02b0 1B5E      		subi r17,lo8(-(21))
 174:menu.c        ****    for(i=0; i<(men->no); i++)
 664               	.LM60:
 665 02b2 EE24      		clr r14
 666               	.L42:
 667 02b4 F501      		movw r30,r10
 668 02b6 8381      		ldd r24,Z+3
 669 02b8 E816      		cp r14,r24
 670 02ba C0F5      		brsh .L41
 175:menu.c        ****    {  if( i == (men->state) )								// 判断所选择的菜单项
 672               	.LM61:
 673 02bc E501      		movw r28,r10
 674 02be 8A85      		ldd r24,Y+10
 675 02c0 CF2C      		mov r12,r15
 676 02c2 C394      		inc r12
 677 02c4 212F      		mov r18,r17
 678 02c6 285F      		subi r18,lo8(-(8))
 679 02c8 4F2D      		mov r20,r15
 680 02ca 485D      		subi r20,lo8(-(40))
 681 02cc CE2D      		mov r28,r14
 682 02ce DD27      		clr r29
 683 02d0 D12E      		mov r13,r17
 684 02d2 D394      		inc r13
 685 02d4 E816      		cp r14,r24
 686 02d6 B1F4      		brne .L37
 176:menu.c        ****       {  /* 显示背景色 */
 177:menu.c        ****          GUI_RectangleFill(xx, yy, xx+SMENU_WIDTH-2, yy+8, Windows_C);
 688               	.LM62:
 689 02d8 0091 0000 		lds r16,Windows_C
 690 02dc 612F      		mov r22,r17
 691 02de 8F2D      		mov r24,r15
 692 02e0 0E94 0000 		call GUI_RectangleFill
 178:menu.c        ****          /* 显示菜单字符 */
 179:menu.c        ****          GUI_ExchangeColor();
 694               	.LM63:
 695 02e4 0E94 0000 		call GUI_ExchangeColor
 180:menu.c        ****          GUI_PutNoStr(xx+1, yy+1, men->str[i], 8);			// 书写子菜单文字
 697               	.LM64:
 698 02e8 CC0F      		add r28,r28
 699 02ea DD1F      		adc r29,r29
 700 02ec CA0D      		add r28,r10
 701 02ee DB1D      		adc r29,r11
 702 02f0 28E0      		ldi r18,lo8(8)
 703 02f2 4C81      		ldd r20,Y+4
 704 02f4 5D81      		ldd r21,Y+5
 705 02f6 6D2D      		mov r22,r13
 706 02f8 8C2D      		mov r24,r12
 707 02fa 0E94 0000 		call GUI_PutNoStr
 181:menu.c        ****          GUI_ExchangeColor();
 709               	.LM65:
 710 02fe 0E94 0000 		call GUI_ExchangeColor
 711 0302 11C0      		rjmp .L38
 712               	.L37:
 182:menu.c        ****       }
 183:menu.c        ****       else
 184:menu.c        ****       {  /* 显示背景色 */
 185:menu.c        ****          GUI_RectangleFill(xx, yy, xx+SMENU_WIDTH-2, yy+8,Windows_C);
 714               	.LM66:
 715 0304 0091 0000 		lds r16,Windows_C
 716 0308 612F      		mov r22,r17
 717 030a 8F2D      		mov r24,r15
 718 030c 0E94 0000 		call GUI_RectangleFill
 186:menu.c        ****          /* 显示菜单字符 */
 187:menu.c        ****          GUI_PutNoStr(xx+1, yy+1, men->str[i], 8);			// 书写子菜单文字
 720               	.LM67:
 721 0310 CC0F      		add r28,r28
 722 0312 DD1F      		adc r29,r29
 723 0314 CA0D      		add r28,r10
 724 0316 DB1D      		adc r29,r11
 725 0318 28E0      		ldi r18,lo8(8)
 726 031a 4C81      		ldd r20,Y+4
 727 031c 5D81      		ldd r21,Y+5
 728 031e 6D2D      		mov r22,r13
 729 0320 8C2D      		mov r24,r12
 730 0322 0E94 0000 		call GUI_PutNoStr
 731               	.L38:
 188:menu.c        ****       }   
 189:menu.c        ****       
 190:menu.c        ****       yy += 8;
 733               	.LM68:
 734 0326 185F      		subi r17,lo8(-(8))
 736               	.LM69:
 737 0328 E394      		inc r14
 738 032a C4CF      		rjmp .L42
 739               	.L41:
 191:menu.c        ****    }
 192:menu.c        ****     
 193:menu.c        ****    return(1);
 741               	.LM70:
 742 032c 81E0      		ldi r24,lo8(1)
 743 032e 90E0      		ldi r25,hi8(1)
 744               	.L25:
 745               	/* epilogue: frame size=0 */
 746 0330 DF91      		pop r29
 747 0332 CF91      		pop r28
 748 0334 1F91      		pop r17
 749 0336 0F91      		pop r16
 750 0338 FF90      		pop r15
 751 033a EF90      		pop r14
 752 033c DF90      		pop r13
 753 033e CF90      		pop r12
 754 0340 BF90      		pop r11
 755 0342 AF90      		pop r10
 756 0344 0895      		ret
 757               	/* epilogue end (size=11) */
 758               	/* function GUI_SMenuDraw size 221 (200) */
 766               	.Lscope4:
 771               	.global	GUI_SMenuSelect
 773               	GUI_SMenuSelect:
 194:menu.c        **** }
 195:menu.c        **** 
 196:menu.c        **** 
 197:menu.c        **** 
 198:menu.c        **** /****************************************************************************
 199:menu.c        **** * 名称:GUI_SMenuSelect()
 200:menu.c        **** * 功能:选择新的子菜单。
 201:menu.c        **** * 入口参数:men		子菜单句柄
 202:menu.c        **** *          old_no	原先选择的子菜单项
 203:menu.c        **** *		   new_no	现要选择的子菜单项
 204:menu.c        **** * 出口参数:无
 205:menu.c        **** ****************************************************************************/
 206:menu.c        **** void  GUI_SMenuSelect(SMENU *men, uint8 old_no, uint8 new_no)
 207:menu.c        **** {  WINDOWS  *mwin;
 775               	.LM71:
 776               	/* prologue: frame size=0 */
 777 0346 7F92      		push r7
 778 0348 8F92      		push r8
 779 034a 9F92      		push r9
 780 034c AF92      		push r10
 781 034e BF92      		push r11
 782 0350 CF92      		push r12
 783 0352 DF92      		push r13
 784 0354 EF92      		push r14
 785 0356 FF92      		push r15
 786 0358 0F93      		push r16
 787 035a 1F93      		push r17
 788 035c CF93      		push r28
 789               	/* prologue end (size=12) */
 790 035e 4C01      		movw r8,r24
 791 0360 C42E      		mov r12,r20
 208:menu.c        ****    uint8  xx, yy;
 209:menu.c        **** 
 210:menu.c        ****    /* 参数过滤 */ 
 211:menu.c        ****    if(old_no==new_no) return;
 793               	.LM72:
 794 0362 6417      		cp r22,r20
 795 0364 09F4      		brne .+2
 796 0366 73C0      		rjmp .L44
 212:menu.c        ****    xx = men->no;
 798               	.LM73:
 799 0368 FC01      		movw r30,r24
 800 036a 1381      		ldd r17,Z+3
 213:menu.c        ****    if( (old_no>xx) || (new_no>xx) ) return;
 802               	.LM74:
 803 036c 1617      		cp r17,r22
 804 036e 08F4      		brsh .+2
 805 0370 6EC0      		rjmp .L44
 806 0372 1417      		cp r17,r20
 807 0374 08F4      		brsh .+2
 808 0376 6BC0      		rjmp .L44
 214:menu.c        ****    
 215:menu.c        ****    /* 设置新的选择的子菜单项 */
 216:menu.c        ****    men->state = new_no;
 810               	.LM75:
 811 0378 4287      		std Z+10,r20
 217:menu.c        ****    
 218:menu.c        ****    /* 进行菜单反相显示 */
 219:menu.c        ****    mwin = men->win;	 
 813               	.LM76:
 814 037a A080      		ld r10,Z
 815 037c B180      		ldd r11,Z+1
 220:menu.c        ****    xx = mwin->x;
 817               	.LM77:
 818 037e F501      		movw r30,r10
 819 0380 1081      		ld r17,Z
 221:menu.c        ****    xx +=  (men->mmenu_no)*MMENU_WIDTH;
 821               	.LM78:
 822 0382 FC01      		movw r30,r24
 823 0384 9281      		ldd r25,Z+2
 824 0386 8CE1      		ldi r24,lo8(28)
 825 0388 989F      		mul r25,r24
 826 038a C001      		movw r24,r0
 827 038c 1124      		clr r1
 828 038e 180F      		add r17,r24
 222:menu.c        ****    if( (xx+SMENU_WIDTH) > (mwin->x + mwin->with - 1) ) 
 830               	.LM79:
 831 0390 212F      		mov r18,r17
 832 0392 3327      		clr r19
 833 0394 265D      		subi r18,lo8(-(42))
 834 0396 3F4F      		sbci r19,hi8(-(42))
 835 0398 F501      		movw r30,r10
 836 039a 9081      		ld r25,Z
 837 039c 8281      		ldd r24,Z+2
 838 039e 890F      		add r24,r25
 839 03a0 912D      		mov r25,__zero_reg__
 840 03a2 911D      		adc r25,__zero_reg__
 841 03a4 0197      		sbiw r24,1
 842 03a6 8217      		cp r24,r18
 843 03a8 9307      		cpc r25,r19
 844 03aa 0CF4      		brge .L48
 223:menu.c        ****    {  /* 以右下拉为原则显示子菜单,所以xx设置在左端 */
 224:menu.c        ****       xx = xx-(SMENU_WIDTH-MMENU_WIDTH);
 846               	.LM80:
 847 03ac 1E50      		subi r17,lo8(-(-14))
 848               	.L48:
 225:menu.c        ****    }
 226:menu.c        ****    xx++;
 850               	.LM81:
 851 03ae 1F5F      		subi r17,lo8(-(1))
 227:menu.c        ****  
 228:menu.c        ****    /* 取消原子菜单选择 */  
 229:menu.c        ****    yy = mwin->y + 19 + 2;
 853               	.LM82:
 854 03b0 F501      		movw r30,r10
 855 03b2 C181      		ldd r28,Z+1
 856 03b4 CB5E      		subi r28,lo8(-(21))
 230:menu.c        ****    yy += old_no*8;
 858               	.LM83:
 859 03b6 E62E      		mov r14,r22
 860 03b8 FF24      		clr r15
 861 03ba C701      		movw r24,r14
 862 03bc 53E0      		ldi r21,3
 863 03be 880F      	1:	lsl r24
 864 03c0 991F      		rol r25
 865 03c2 5A95      		dec r21
 866 03c4 E1F7      		brne 1b
 867 03c6 C80F      		add r28,r24
 231:menu.c        ****    GUI_RectangleFill(xx, yy, xx+SMENU_WIDTH-2, yy+8, Windows_C);
 869               	.LM84:
 870 03c8 8C2F      		mov r24,r28
 871 03ca 885F      		subi r24,lo8(-(8))
 872 03cc 48E2      		ldi r20,lo8(40)
 873 03ce 742E      		mov r7,r20
 874 03d0 710E      		add r7,r17
 875 03d2 0091 0000 		lds r16,Windows_C
 876 03d6 282F      		mov r18,r24
 877 03d8 472D      		mov r20,r7
 878 03da 6C2F      		mov r22,r28
 879 03dc 812F      		mov r24,r17
 880 03de 0E94 0000 		call GUI_RectangleFill
 232:menu.c        ****    GUI_PutNoStr(xx+1, yy+1, men->str[old_no], 8);
 882               	.LM85:
 883 03e2 EE0C      		add r14,r14
 884 03e4 FF1C      		adc r15,r15
 885 03e6 E80C      		add r14,r8

⌨️ 快捷键说明

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