menumeasure.lis
来自「Atmega64单片机程序(完整工程)」· LIS 代码 · 共 335 行
LIS
335 行
.module MenuMeasure.C
.area text(rom, con, rel)
.even
0000 _DispMenuMeasureInit::
0000 2197 sbiw R28,1
0002 ; /*这份代码经源码格式软件格式化过
0002 ; yang_hx@neusoft.com */
0002 ; /******************************************************************************
0002 ; * MenuMeasure.C - "测量"菜单
0002 ;
0002 ; ******************************************************************************/
0002 ; #include "SYS_Config.h"
0002 ; #include "GUI_Config.h"
0002 ; #include "GUI.H"
0002 ; #include "Menu.H"
0002 ;
0002 ; //测量
0002 ; //Bar型菜单
0002 ; void DispMenuMeasureInit()
0002 ; {
0002 ; //----------------------
0002 ; GUI_Clear();
0002 0E940000 xcall _GUI_Clear
0006 ; //--------------------
0006 ; BarMenu=&MenuMeasure[language];
0006 20900000 lds R2,_language
000A 85E0 ldi R24,5
000C 829D mul R24,R2
000E 1001 movw R2,R0
0010 80E0 ldi R24,<_MenuMeasure
0012 90E0 ldi R25,>_MenuMeasure
0014 280E add R2,R24
0016 391E adc R3,R25
0018 30920100 sts _BarMenu+1,R3
001C 20920000 sts _BarMenu,R2
0020 ; //--------------------
0020 ;
0020 ; ItemNum=(*BarMenu).TextNum ;
0020 F101 movw R30,R2
0022 3296 adiw R30,2
0024 E491 lpm R30,Z
0026 E0930000 sts _ItemNum,R30
002A ; DispItem=(*BarMenu).Text ;
002A F101 movw R30,R2
002C 0590 lpm R0,Z+
002E 1490 lpm R1,Z
0030 F001 movw R30,R0
0032 F0930100 sts _DispItem+1,R31
0036 E0930000 sts _DispItem,R30
003A ;
003A ; //用户的初始化代码请放在这里
003A ;
003A ; //显示按键对应的文字提示,1-->"选择"
003A ; GUI_DispStringAt(*(Tip[language].Text+1),1,LCD_YSIZE-14);
003A 86E3 ldi R24,54
003C 8883 std y+0,R24
003E 21E0 ldi R18,1
0040 20900000 lds R2,_language
0044 85E0 ldi R24,5
0046 829D mul R24,R2
0048 F001 movw R30,R0
004A 80E0 ldi R24,<_Tip
004C 90E0 ldi R25,>_Tip
004E E80F add R30,R24
0050 F91F adc R31,R25
0052 0590 lpm R0,Z+
0054 1490 lpm R1,Z
0056 F001 movw R30,R0
0058 0281 ldd R16,z+2
005A 1381 ldd R17,z+3
005C 0E940000 xcall _GUI_DispStringAt
0060 ; //显示按键对应的文字提示,0-->"退出"
0060 ; GUI_DispStringAt(*(Tip[language].Text+4),LCD_XSIZE-24,LCD_YSIZE-14);
0060 86E3 ldi R24,54
0062 8883 std y+0,R24
0064 29E4 ldi R18,73
0066 20900000 lds R2,_language
006A 85E0 ldi R24,5
006C 829D mul R24,R2
006E F001 movw R30,R0
0070 80E0 ldi R24,<_Tip
0072 90E0 ldi R25,>_Tip
0074 E80F add R30,R24
0076 F91F adc R31,R25
0078 0590 lpm R0,Z+
007A 1490 lpm R1,Z
007C F001 movw R30,R0
007E 0085 ldd R16,z+8
0080 1185 ldd R17,z+9
0082 0E940000 xcall _GUI_DispStringAt
0086 ;
0086 ; BarMenuInit();
0086 0E940000 xcall _BarMenuInit
008A L1:
008A 2196 adiw R28,1
008C .dbline 0 ; func end
008C 0895 ret
.even
008E _DispMenuMeasureUp::
008E 0E940000 xcall push_gset1
0092 2197 sbiw R28,1
0094 ; }
0094 ;
0094 ;
0094 ;
0094 ; void DispMenuMeasureUp()
0094 ; {
0094 ; //-----------
0094 ; PUSH();
0094 0E940000 xcall _PUSH
0098 ; //-------------------
0098 ; GUI_Clear();
0098 0E940000 xcall _GUI_Clear
009C ; switch(Item)
009C 40910000 lds R20,_Item
00A0 5527 clr R21
00A2 4030 cpi R20,0
00A4 4507 cpc R20,R21
00A6 E1F0 breq L6
00A8 X0:
00A8 4130 cpi R20,1
00AA E0E0 ldi R30,0
00AC 5E07 cpc R21,R30
00AE 21F1 breq L8
00B0 4230 cpi R20,2
00B2 E0E0 ldi R30,0
00B4 5E07 cpc R21,R30
00B6 61F1 breq L10
00B8 4330 cpi R20,3
00BA E0E0 ldi R30,0
00BC 5E07 cpc R21,R30
00BE A1F1 breq L12
00C0 4430 cpi R20,4
00C2 E0E0 ldi R30,0
00C4 5E07 cpc R21,R30
00C6 09F4 brne X2
00C8 3BC0 xjmp L14
00CA X2:
00CA 4530 cpi R20,5
00CC E0E0 ldi R30,0
00CE 5E07 cpc R21,R30
00D0 09F4 brne X3
00D2 42C0 xjmp L16
00D4 X3:
00D4 4630 cpi R20,6
00D6 E0E0 ldi R30,0
00D8 5E07 cpc R21,R30
00DA 09F4 brne X4
00DC 49C0 xjmp L18
00DE X4:
00DE 54C0 xjmp L3
00E0 X1:
00E0 ; {
00E0 L6:
00E0 ; case 0 : GUI_DispStringAt("Measure 1",20,0);GUI_Delay(500);break ;
00E0 2224 clr R2
00E2 2882 std y+0,R2
00E4 24E1 ldi R18,20
00E6 00E0 ldi R16,<L7
00E8 10E0 ldi R17,>L7
00EA 0E940000 xcall _GUI_DispStringAt
00EE 04EF ldi R16,500
00F0 11E0 ldi R17,1
00F2 0E940000 xcall _GUI_Delay
00F6 53C0 xjmp L4
00F8 L8:
00F8 ; case 1 : GUI_DispStringAt("Measure 2",20,0);GUI_Delay(500);break ;
00F8 2224 clr R2
00FA 2882 std y+0,R2
00FC 24E1 ldi R18,20
00FE 00E0 ldi R16,<L9
0100 10E0 ldi R17,>L9
0102 0E940000 xcall _GUI_DispStringAt
0106 04EF ldi R16,500
0108 11E0 ldi R17,1
010A 0E940000 xcall _GUI_Delay
010E 47C0 xjmp L4
0110 L10:
0110 ; case 2 : GUI_DispStringAt("Measure 3",20,0);GUI_Delay(500);break ;
0110 2224 clr R2
0112 2882 std y+0,R2
0114 24E1 ldi R18,20
0116 00E0 ldi R16,<L11
0118 10E0 ldi R17,>L11
011A 0E940000 xcall _GUI_DispStringAt
011E 04EF ldi R16,500
0120 11E0 ldi R17,1
0122 0E940000 xcall _GUI_Delay
0126 3BC0 xjmp L4
0128 L12:
0128 ; case 3 : GUI_DispStringAt("Measure 4",20,0);GUI_Delay(500);break ;
0128 2224 clr R2
012A 2882 std y+0,R2
012C 24E1 ldi R18,20
012E 00E0 ldi R16,<L13
0130 10E0 ldi R17,>L13
0132 0E940000 xcall _GUI_DispStringAt
0136 04EF ldi R16,500
0138 11E0 ldi R17,1
013A 0E940000 xcall _GUI_Delay
013E 2FC0 xjmp L4
0140 L14:
0140 ; case 4 : GUI_DispStringAt("Measure 5",20,0);GUI_Delay(500);break ;
0140 2224 clr R2
0142 2882 std y+0,R2
0144 24E1 ldi R18,20
0146 00E0 ldi R16,<L15
0148 10E0 ldi R17,>L15
014A 0E940000 xcall _GUI_DispStringAt
014E 04EF ldi R16,500
0150 11E0 ldi R17,1
0152 0E940000 xcall _GUI_Delay
0156 23C0 xjmp L4
0158 L16:
0158 ; case 5 : GUI_DispStringAt("Measure 6",20,0);GUI_Delay(500);break ;
0158 2224 clr R2
015A 2882 std y+0,R2
015C 24E1 ldi R18,20
015E 00E0 ldi R16,<L17
0160 10E0 ldi R17,>L17
0162 0E940000 xcall _GUI_DispStringAt
0166 04EF ldi R16,500
0168 11E0 ldi R17,1
016A 0E940000 xcall _GUI_Delay
016E 17C0 xjmp L4
0170 L18:
0170 ; case 6 : GUI_DispStringAt("Measure 7",20,0);GUI_Delay(500);break ;
0170 2224 clr R2
0172 2882 std y+0,R2
0174 24E1 ldi R18,20
0176 00E0 ldi R16,<L19
0178 10E0 ldi R17,>L19
017A 0E940000 xcall _GUI_DispStringAt
017E 04EF ldi R16,500
0180 11E0 ldi R17,1
0182 0E940000 xcall _GUI_Delay
0186 0BC0 xjmp L4
0188 L3:
0188 ; default :GUI_DispStringAt("Measure X",20,0);GUI_Delay(500);break ;
0188 2224 clr R2
018A 2882 std y+0,R2
018C 24E1 ldi R18,20
018E 00E0 ldi R16,<L20
0190 10E0 ldi R17,>L20
0192 0E940000 xcall _GUI_DispStringAt
0196 04EF ldi R16,500
0198 11E0 ldi R17,1
019A 0E940000 xcall _GUI_Delay
019E L4:
019E ; }
019E ; GUI_Clear();
019E 0E940000 xcall _GUI_Clear
01A2 ; //-------------------
01A2 ; POP();
01A2 0E940000 xcall _POP
01A6 L2:
01A6 2196 adiw R28,1
01A8 0E940000 xcall pop_gset1
01AC .dbline 0 ; func end
01AC 0895 ret
.even
01AE _DispMenuMeasureDown::
01AE ; //-------------------
01AE ; }
01AE ;
01AE ; void DispMenuMeasureDown()
01AE ; {
01AE ; POP();
01AE 0E940000 xcall _POP
01B2 L21:
01B2 .dbline 0 ; func end
01B2 0895 ret
.even
01B4 _DispMenuMeasureLeft::
01B4 ; }
01B4 ;
01B4 ; void DispMenuMeasureLeft()
01B4 ; {
01B4 ; BarMenuLeft();
01B4 0E940000 xcall _BarMenuLeft
01B8 L22:
01B8 .dbline 0 ; func end
01B8 0895 ret
.even
01BA _DispMenuMeasureRight::
01BA ; }
01BA ; void DispMenuMeasureRight()
01BA ; {
01BA ; BarMenuRight();
01BA 0E940000 xcall _BarMenuRight
01BE L23:
01BE .dbline 0 ; func end
01BE 0895 ret
.area data(ram, con, rel)
0000 L20:
0000 .blkb 10
.area idata
0000 4D656173757265205800 .byte 'M,'e,'a,'s,'u,'r,'e,32,'X,0
.area data(ram, con, rel)
000A L19:
000A .blkb 10
.area idata
000A 4D656173757265203700 .byte 'M,'e,'a,'s,'u,'r,'e,32,55,0
.area data(ram, con, rel)
0014 L17:
0014 .blkb 10
.area idata
0014 4D656173757265203600 .byte 'M,'e,'a,'s,'u,'r,'e,32,54,0
.area data(ram, con, rel)
001E L15:
001E .blkb 10
.area idata
001E 4D656173757265203500 .byte 'M,'e,'a,'s,'u,'r,'e,32,53,0
.area data(ram, con, rel)
0028 L13:
0028 .blkb 10
.area idata
0028 4D656173757265203400 .byte 'M,'e,'a,'s,'u,'r,'e,32,52,0
.area data(ram, con, rel)
0032 L11:
0032 .blkb 10
.area idata
0032 4D656173757265203300 .byte 'M,'e,'a,'s,'u,'r,'e,32,51,0
.area data(ram, con, rel)
003C L9:
003C .blkb 10
.area idata
003C 4D656173757265203200 .byte 'M,'e,'a,'s,'u,'r,'e,32,50,0
.area data(ram, con, rel)
0046 L7:
0046 .blkb 10
.area idata
0046 4D656173757265203100 .byte 'M,'e,'a,'s,'u,'r,'e,32,49,0
.area data(ram, con, rel)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?