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

📄 menu.lst

📁 一个基于MEGA16的GUI
💻 LST
📖 第 1 页 / 共 4 页
字号:
 886 03e8 F91C      		adc r15,r9
 887 03ea CF5F      		subi r28,lo8(-(1))
 888 03ec D12E      		mov r13,r17
 889 03ee D394      		inc r13
 890 03f0 28E0      		ldi r18,lo8(8)
 891 03f2 F701      		movw r30,r14
 892 03f4 4481      		ldd r20,Z+4
 893 03f6 5581      		ldd r21,Z+5
 894 03f8 6C2F      		mov r22,r28
 895 03fa 8D2D      		mov r24,r13
 896 03fc 0E94 0000 		call GUI_PutNoStr
 233:menu.c        ****    /* 选择新的子菜单 */
 234:menu.c        ****    yy = mwin->y + 19 + 2;
 898               	.LM86:
 899 0400 F501      		movw r30,r10
 900 0402 C181      		ldd r28,Z+1
 901 0404 CB5E      		subi r28,lo8(-(21))
 235:menu.c        ****    yy += new_no*8;
 903               	.LM87:
 904 0406 EC2C      		mov r14,r12
 905 0408 FF24      		clr r15
 906 040a C701      		movw r24,r14
 907 040c 33E0      		ldi r19,3
 908 040e 880F      	1:	lsl r24
 909 0410 991F      		rol r25
 910 0412 3A95      		dec r19
 911 0414 E1F7      		brne 1b
 912 0416 C80F      		add r28,r24
 236:menu.c        ****    GUI_RectangleFill(xx, yy, xx+SMENU_WIDTH-2, yy+8, Windows_C);
 914               	.LM88:
 915 0418 8C2F      		mov r24,r28
 916 041a 885F      		subi r24,lo8(-(8))
 917 041c 0091 0000 		lds r16,Windows_C
 918 0420 282F      		mov r18,r24
 919 0422 472D      		mov r20,r7
 920 0424 6C2F      		mov r22,r28
 921 0426 812F      		mov r24,r17
 922 0428 0E94 0000 		call GUI_RectangleFill
 237:menu.c        ****    GUI_ExchangeColor();
 924               	.LM89:
 925 042c 0E94 0000 		call GUI_ExchangeColor
 238:menu.c        ****    GUI_PutNoStr(xx+1, yy+1, men->str[new_no], 8);
 927               	.LM90:
 928 0430 EE0C      		add r14,r14
 929 0432 FF1C      		adc r15,r15
 930 0434 E80C      		add r14,r8
 931 0436 F91C      		adc r15,r9
 932 0438 CF5F      		subi r28,lo8(-(1))
 933 043a 28E0      		ldi r18,lo8(8)
 934 043c F701      		movw r30,r14
 935 043e 4481      		ldd r20,Z+4
 936 0440 5581      		ldd r21,Z+5
 937 0442 6C2F      		mov r22,r28
 938 0444 8D2D      		mov r24,r13
 939 0446 0E94 0000 		call GUI_PutNoStr
 239:menu.c        ****    GUI_ExchangeColor();
 941               	.LM91:
 942 044a 0E94 0000 		call GUI_ExchangeColor
 943               	.L44:
 944               	/* epilogue: frame size=0 */
 945 044e CF91      		pop r28
 946 0450 1F91      		pop r17
 947 0452 0F91      		pop r16
 948 0454 FF90      		pop r15
 949 0456 EF90      		pop r14
 950 0458 DF90      		pop r13
 951 045a CF90      		pop r12
 952 045c BF90      		pop r11
 953 045e AF90      		pop r10
 954 0460 9F90      		pop r9
 955 0462 8F90      		pop r8
 956 0464 7F90      		pop r7
 957 0466 0895      		ret
 958               	/* epilogue end (size=13) */
 959               	/* function GUI_SMenuSelect size 145 (120) */
 966               	.Lscope5:
 969               	.global	GUI_SMenuHide
 971               	GUI_SMenuHide:
 240:menu.c        **** }
 241:menu.c        **** 
 242:menu.c        **** 
 243:menu.c        **** 
 244:menu.c        **** /****************************************************************************
 245:menu.c        **** * 名称:GUI_SMenuHide()
 246:menu.c        **** * 功能:消隐子菜单项。
 247:menu.c        **** * 入口参数:men		子菜单句柄
 248:menu.c        **** * 出口参数:返回0表示操作失败,返回1表示操作成功
 249:menu.c        **** ****************************************************************************/
 250:menu.c        **** uint8  GUI_SMenuHide(SMENU *men)
 251:menu.c        **** {  WINDOWS  *mwin;
 973               	.LM92:
 974               	/* prologue: frame size=0 */
 975 0468 EF92      		push r14
 976 046a FF92      		push r15
 977 046c 0F93      		push r16
 978 046e CF93      		push r28
 979 0470 DF93      		push r29
 980               	/* prologue end (size=5) */
 981 0472 9C01      		movw r18,r24
 252:menu.c        ****    uint8    xx, yy;
 253:menu.c        **** 
 254:menu.c        ****    mwin = men->win;
 983               	.LM93:
 984 0474 DC01      		movw r26,r24
 985 0476 ED90      		ld r14,X+
 986 0478 FC90      		ld r15,X
 255:menu.c        ****    /* 判断是否可以显示主菜单 */
 256:menu.c        ****    if( (mwin->hight)<50 ) return(0);
 988               	.LM94:
 989 047a E701      		movw r28,r14
 990 047c 8B81      		ldd r24,Y+3
 991 047e 8233      		cpi r24,lo8(50)
 992 0480 20F0      		brlo .L61
 257:menu.c        ****    if( (mwin->with)<50 ) return(0);
 994               	.LM95:
 995 0482 F701      		movw r30,r14
 996 0484 4281      		ldd r20,Z+2
 997 0486 4233      		cpi r20,lo8(50)
 998 0488 18F4      		brsh .L51
 999               	.L61:
 1000 048a 80E0      		ldi r24,lo8(0)
 1001 048c 90E0      		ldi r25,hi8(0)
 1002 048e 51C0      		rjmp .L49
 1003               	.L51:
 258:menu.c        ****     
 259:menu.c        ****    /* 画菜子单项。下拉子菜单,以向左下拉为原则,若右边溢出则以右下拉显示 */
 260:menu.c        ****    xx = mwin->x;
 1005               	.LM96:
 1006 0490 D701      		movw r26,r14
 1007 0492 CC91      		ld r28,X
 261:menu.c        ****    xx +=  (men->mmenu_no)*MMENU_WIDTH;
 1009               	.LM97:
 1010 0494 F901      		movw r30,r18
 1011 0496 7281      		ldd r23,Z+2
 1012 0498 8CE1      		ldi r24,lo8(28)
 1013 049a 789F      		mul r23,r24
 1014 049c C001      		movw r24,r0
 1015 049e 1124      		clr r1
 1016 04a0 C80F      		add r28,r24
 262:menu.c        ****    yy = mwin->y + 19;
 1018               	.LM98:
 1019 04a2 F701      		movw r30,r14
 1020 04a4 6181      		ldd r22,Z+1
 263:menu.c        ****    yy +=  (men->no) * 8 + 2;
 1022               	.LM99:
 1023 04a6 F901      		movw r30,r18
 1024 04a8 9381      		ldd r25,Z+3
 1025 04aa 990F      		lsl r25
 1026 04ac 990F      		lsl r25
 1027 04ae 990F      		lsl r25
 1028 04b0 960F      		add r25,r22
 1029 04b2 9B5E      		subi r25,lo8(-(21))
 264:menu.c        ****    if( (xx+SMENU_WIDTH) <= (mwin->x + mwin->with - 1) ) 
 1031               	.LM100:
 1032 04b4 EC2F      		mov r30,r28
 1033 04b6 FF27      		clr r31
 1034 04b8 9F01      		movw r18,r30
 1035 04ba 265D      		subi r18,lo8(-(42))
 1036 04bc 3F4F      		sbci r19,hi8(-(42))
 1037 04be 8C91      		ld r24,X
 1038 04c0 480F      		add r20,r24
 1039 04c2 512D      		mov r21,__zero_reg__
 1040 04c4 511D      		adc r21,__zero_reg__
 1041 04c6 4150      		subi r20,lo8(-(-1))
 1042 04c8 5040      		sbci r21,hi8(-(-1))
 1043 04ca 4217      		cp r20,r18
 1044 04cc 5307      		cpc r21,r19
 1045 04ce 84F0      		brlt .L52
 1046 04d0 4C2F      		mov r20,r28
 1047 04d2 455D      		subi r20,lo8(-(43))
 1048 04d4 6C5E      		subi r22,lo8(-(20))
 265:menu.c        ****    {  /* 以左下拉为原则显示子菜单 */
 266:menu.c        ****       if( (men->mmenu_no) == 0 )
 1050               	.LM101:
 1051 04d6 7723      		tst r23
 1052 04d8 31F4      		brne .L53
 267:menu.c        ****       {  GUI_RectangleFill(xx+1, mwin->y + 19+1, xx+SMENU_WIDTH+1, yy, Back_G );
 1054               	.LM102:
 1055 04da 0091 0000 		lds r16,Back_G
 1056 04de 292F      		mov r18,r25
 1057 04e0 8C2F      		mov r24,r28
 1058 04e2 8F5F      		subi r24,lo8(-(1))
 1059 04e4 16C0      		rjmp .L62
 1060               	.L53:
 268:menu.c        ****       }
 269:menu.c        ****       else
 270:menu.c        ****       {  GUI_RectangleFill(xx, mwin->y + 19+1, xx+SMENU_WIDTH+1, yy, Back_G );
 1062               	.LM103:
 1063 04e6 0091 0000 		lds r16,Back_G
 1064 04ea 292F      		mov r18,r25
 1065 04ec 8C2F      		mov r24,r28
 1066 04ee 11C0      		rjmp .L62
 1067               	.L52:
 271:menu.c        ****       }
 272:menu.c        ****       GUI_HLine(xx+1, mwin->y + 19, xx+MMENU_WIDTH-1, Windows_C);
 273:menu.c        ****    }
 274:menu.c        ****    else
 275:menu.c        ****    {  /* 以右下拉为原则 */
 276:menu.c        ****       if( (xx+MMENU_WIDTH) == (mwin->x + mwin->with - 1) )
 1069               	.LM104:
 1070 04f0 7C96      		adiw r30,28
 1071 04f2 6C5E      		subi r22,lo8(-(20))
 1072 04f4 3C2F      		mov r19,r28
 1073 04f6 3E50      		subi r19,lo8(-(-14))
 1074 04f8 E417      		cp r30,r20
 1075 04fa F507      		cpc r31,r21
 1076 04fc 19F4      		brne .L56
 277:menu.c        ****       {  GUI_RectangleFill(xx-(SMENU_WIDTH-MMENU_WIDTH), mwin->y + 19+1, xx+MMENU_WIDTH, yy, Back_G
 1078               	.LM105:
 1079 04fe 8C2F      		mov r24,r28
 1080 0500 845E      		subi r24,lo8(-(28))
 1081 0502 02C0      		rjmp .L59
 1082               	.L56:
 278:menu.c        ****       }
 279:menu.c        ****       else
 280:menu.c        ****       {  GUI_RectangleFill(xx-(SMENU_WIDTH-MMENU_WIDTH), mwin->y + 19+1, xx+MMENU_WIDTH+1, yy, Back
 1084               	.LM106:
 1085 0504 8C2F      		mov r24,r28
 1086 0506 835E      		subi r24,lo8(-(29))
 1087               	.L59:
 1088 0508 0091 0000 		lds r16,Back_G
 1089 050c 292F      		mov r18,r25
 1090 050e 482F      		mov r20,r24
 1091 0510 832F      		mov r24,r19
 1092               	.L62:
 1093 0512 0E94 0000 		call GUI_RectangleFill
 281:menu.c        ****       }
 282:menu.c        ****       GUI_HLine(xx+1, mwin->y + 19, xx+MMENU_WIDTH-1, Windows_C);
 1095               	.LM107:
 1096 0516 C55E      		subi r28,lo8(-(27))
 1097 0518 F701      		movw r30,r14
 1098 051a 8181      		ldd r24,Z+1
 1099 051c 8D5E      		subi r24,lo8(-(19))
 1100 051e 2091 0000 		lds r18,Windows_C
 1101 0522 4C2F      		mov r20,r28
 1102 0524 682F      		mov r22,r24
 1103 0526 8C2F      		mov r24,r28
 1104 0528 8A51      		subi r24,lo8(-(-26))
 1105 052a 0E94 0000 		call GUI_HLine
 283:menu.c        ****    }
 284:menu.c        ****     
 285:menu.c        ****    return(1);
 1107               	.LM108:
 1108 052e 81E0      		ldi r24,lo8(1)
 1109 0530 90E0      		ldi r25,hi8(1)
 1110               	.L49:
 1111               	/* epilogue: frame size=0 */
 1112 0532 DF91      		pop r29
 1113 0534 CF91      		pop r28
 1114 0536 0F91      		pop r16
 1115 0538 FF90      		pop r15
 1116 053a EF90      		pop r14
 1117 053c 0895      		ret
 1118               	/* epilogue end (size=6) */
 1119               	/* function GUI_SMenuHide size 107 (96) */
 1126               	.Lscope6:
 1127               		.comm Alarm,1,1
 1132               		.text
 1134               	Letext:
 1135               	/* File "menu.c": code  671 = 0x029f ( 582), prologues  41, epilogues  48 */
DEFINED SYMBOLS
                            *ABS*:00000000 menu.c
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:3      *ABS*:0000003f __SREG__
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:4      *ABS*:0000003e __SP_H__
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:5      *ABS*:0000003d __SP_L__
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:6      *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:7      *ABS*:00000001 __zero_reg__
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:128    .data:00000000 other_C
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:133    .data:00000001 Windows_C
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:140    .bss:00000000 Back_G
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:146    .text:00000000 GUI_ExchangeColor
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:174    .text:00000012 GUI_MMenuDraw
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:313    .text:000000c8 GUI_MMenuSelect
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:403    .text:00000136 GUI_MMenuNSelect
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:477    .text:0000018c GUI_SMenuDraw
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:773    .text:00000346 GUI_SMenuSelect
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:971    .text:00000468 GUI_SMenuHide
                            *COM*:00000001 Alarm
C:\DOCUME~1\64564564\LOCALS~1\Temp/ccu4aaaa.s:1134   .text:0000053e Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
GUI_HLine
GUI_PutNoStr
GUI_RLine
GUI_Rectangle
GUI_RectangleFill

⌨️ 快捷键说明

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