📄 menu_implement.lis
字号:
0116 .dbline 142
0116 ; else
0116 ; {
0116 .dbline 144
0116 ; //错误处理函数
0116 ; Show_Menu(NULL,1);
0116 21E0 ldi R18,1
0118 0027 clr R16
011A 1127 clr R17
011C 3BD1 xcall _Show_Menu
011E .dbline 145
011E ; return TRUE;
011E 01E0 ldi R16,1
0120 36C1 xjmp L7
0122 L20:
0122 L18:
0122 .dbline 147
0122 ; }
0122 ; }
0122 L14:
0122 .dbline 149
0122 ;
0122 ; if (s_pDISPMenuItem == s_pCurrentMenuItem)
0122 20900200 lds R2,_s_pCurrentMenuItem
0126 30900300 lds R3,_s_pCurrentMenuItem+1
012A 40900400 lds R4,_s_pDISPMenuItem
012E 50900500 lds R5,_s_pDISPMenuItem+1
0132 4214 cp R4,R2
0134 5304 cpc R5,R3
0136 21F4 brne L21
0138 X7:
0138 .dbline 150
0138 ; {
0138 .dbline 151
0138 ; Show_Menu(s_pDISPMenuItem,1);
0138 21E0 ldi R18,1
013A 8201 movw R16,R4
013C 2BD1 xcall _Show_Menu
013E .dbline 152
013E ; }
013E 06C0 xjmp L22
0140 L21:
0140 .dbline 154
0140 ; else
0140 ; {
0140 .dbline 155
0140 ; Show_Menu(s_pDISPMenuItem,2);
0140 22E0 ldi R18,2
0142 00910400 lds R16,_s_pDISPMenuItem
0146 10910500 lds R17,_s_pDISPMenuItem+1
014A 24D1 xcall _Show_Menu
014C .dbline 156
014C ; }
014C L22:
014C .dbline 158
014C ;
014C ; if (Get_Key_Code())
014C 0E940000 xcall _Get_Key_Code
0150 0023 tst R16
0152 09F4 brne X26
0154 1BC1 xjmp L23
0156 X26:
0156 X8:
0156 .dbline 159
0156 ; {
0156 .dbline 161
0156 ; //检测普通按键
0156 ; s_cIdleTimeCounter = 0;
0156 2224 clr R2
0158 20920600 sts _s_cIdleTimeCounter,R2
015C .dbline 162
015C ; CLS
015C 0E940000 xcall _LCDWaitForReady
0160 .dbline 162
0160 01E0 ldi R16,1
0162 0E940000 xcall _LCDSendCommand
0166 .dbline 162
0166 0E940000 xcall _LCDWaitForReady
016A .dbline 162
016A 02E0 ldi R16,2
016C 0E940000 xcall _LCDSendCommand
0170 .dbline 163
0170 ; switch (g_cReturnKeyNum)
0170 40910000 lds R20,_g_cReturnKeyNum
0174 4130 cpi R20,1
0176 99F0 breq L28
0178 X9:
0178 4430 cpi R20,4
017A 09F4 brne X27
017C D8C0 xjmp L49
017E X27:
017E X10:
017E 4530 cpi R20,5
0180 09F4 brne X28
0182 77C0 xjmp L40
0184 X28:
0184 X11:
0184 4630 cpi R20,6
0186 09F4 brne X29
0188 74C0 xjmp L40
018A X29:
018A X12:
018A 4930 cpi R20,9
018C 09F4 brne X30
018E 34C0 xjmp L33
0190 X30:
0190 X13:
0190 4130 cpi R20,1
0192 08F4 brsh X31
0194 E6C0 xjmp L26
0196 X31:
0196 X14:
0196 L52:
0196 4331 cpi R20,19
0198 09F4 brne X32
019A 6BC0 xjmp L40
019C X32:
019C X15:
019C E2C0 xjmp L26
019E L28:
019E .dbline 166
019E ; {
019E ; case KEY_UP:
019E ; if (s_pDISPMenuItem == s_pCurrentMenuItem)
019E 20900200 lds R2,_s_pCurrentMenuItem
01A2 30900300 lds R3,_s_pCurrentMenuItem+1
01A6 40900400 lds R4,_s_pDISPMenuItem
01AA 50900500 lds R5,_s_pDISPMenuItem+1
01AE 4214 cp R4,R2
01B0 5304 cpc R5,R3
01B2 C9F4 brne L29
01B4 X16:
01B4 .dbline 167
01B4 ; {
01B4 .dbline 168
01B4 ; if (s_pCurrentMenuItem->pPreviouse != NULL)
01B4 F101 movw R30,R2
01B6 3996 adiw R30,9
01B8 2590 lpm R2,Z+
01BA 3490 lpm R3,Z
01BC 2220 tst R2
01BE 19F4 brne X17
01C0 3320 tst R3
01C2 09F4 brne X33
01C4 CEC0 xjmp L26
01C6 X33:
01C6 X17:
01C6 .dbline 169
01C6 ; {
01C6 .dbline 170
01C6 ; s_pCurrentMenuItem = s_pCurrentMenuItem->pPreviouse;
01C6 E0910200 lds R30,_s_pCurrentMenuItem
01CA F0910300 lds R31,_s_pCurrentMenuItem+1
01CE 3996 adiw R30,9
01D0 2590 lpm R2,Z+
01D2 3490 lpm R3,Z
01D4 30920300 sts _s_pCurrentMenuItem+1,R3
01D8 20920200 sts _s_pCurrentMenuItem,R2
01DC .dbline 171
01DC ; s_pDISPMenuItem = s_pCurrentMenuItem;
01DC 30920500 sts _s_pDISPMenuItem+1,R3
01E0 20920400 sts _s_pDISPMenuItem,R2
01E4 .dbline 172
01E4 ; }
01E4 .dbline 173
01E4 ; }
01E4 BEC0 xjmp L26
01E6 L29:
01E6 .dbline 175
01E6 ; else
01E6 ; {
01E6 .dbline 176
01E6 ; s_pCurrentMenuItem = s_pDISPMenuItem;
01E6 20900400 lds R2,_s_pDISPMenuItem
01EA 30900500 lds R3,_s_pDISPMenuItem+1
01EE 30920300 sts _s_pCurrentMenuItem+1,R3
01F2 20920200 sts _s_pCurrentMenuItem,R2
01F6 .dbline 177
01F6 ; }
01F6 .dbline 178
01F6 ; break;
01F6 B5C0 xjmp L26
01F8 L33:
01F8 .dbline 180
01F8 ; case KEY_DOWN:
01F8 ; if (s_pDISPMenuItem == s_pCurrentMenuItem)
01F8 20900200 lds R2,_s_pCurrentMenuItem
01FC 30900300 lds R3,_s_pCurrentMenuItem+1
0200 40900400 lds R4,_s_pDISPMenuItem
0204 50900500 lds R5,_s_pDISPMenuItem+1
0208 4214 cp R4,R2
020A 5304 cpc R5,R3
020C A9F4 brne L34
020E X18:
020E .dbline 181
020E ; {
020E .dbline 182
020E ; if (s_pCurrentMenuItem->pNext != NULL)
020E F101 movw R30,R2
0210 3B96 adiw R30,11
0212 2590 lpm R2,Z+
0214 3490 lpm R3,Z
0216 2220 tst R2
0218 19F4 brne X19
021A 3320 tst R3
021C 09F4 brne X34
021E A1C0 xjmp L26
0220 X34:
0220 X19:
0220 .dbline 183
0220 ; {
0220 .dbline 184
0220 ; s_pCurrentMenuItem = s_pCurrentMenuItem->pNext;
0220 E0910200 lds R30,_s_pCurrentMenuItem
0224 F0910300 lds R31,_s_pCurrentMenuItem+1
0228 3B96 adiw R30,11
022A 2590 lpm R2,Z+
022C 3490 lpm R3,Z
022E 30920300 sts _s_pCurrentMenuItem+1,R3
0232 20920200 sts _s_pCurrentMenuItem,R2
0236 .dbline 185
0236 ; }
0236 .dbline 186
0236 ; }
0236 95C0 xjmp L26
0238 L34:
0238 .dbline 188
0238 ; else
0238 ; {
0238 .dbline 189
0238 ; s_pDISPMenuItem = s_pCurrentMenuItem;
0238 20900200 lds R2,_s_pCurrentMenuItem
023C 30900300 lds R3,_s_pCurrentMenuItem+1
0240 30920500 sts _s_pDISPMenuItem+1,R3
0244 20920400 sts _s_pDISPMenuItem,R2
0248 .dbline 190
0248 ; if (s_pCurrentMenuItem->pNext != NULL)
0248 F101 movw R30,R2
024A 3B96 adiw R30,11
024C 2590 lpm R2,Z+
024E 3490 lpm R3,Z
0250 2220 tst R2
0252 19F4 brne X20
0254 3320 tst R3
0256 09F4 brne X35
0258 84C0 xjmp L26
025A X35:
025A X20:
025A .dbline 191
025A ; {
025A .dbline 192
025A ; s_pCurrentMenuItem = s_pCurrentMenuItem->pNext;
025A E0910200 lds R30,_s_pCurrentMenuItem
025E F0910300 lds R31,_s_pCurrentMenuItem+1
0262 3B96 adiw R30,11
0264 2590 lpm R2,Z+
0266 3490 lpm R3,Z
0268 30920300 sts _s_pCurrentMenuItem+1,R3
026C 20920200 sts _s_pCurrentMenuItem,R2
0270 .dbline 193
0270 ; }
0270 .dbline 194
0270 ; }
0270 .dbline 195
0270 ; break;
0270 78C0 xjmp L26
0272 L40:
0272 .dbline 199
0272 ; case KEY_RIGHT:
0272 ; case KEY_5:
0272 ; case KEY_ENTER:
0272 ; if (s_pCurrentMenuItem->pChild != NULL)
0272 E0910200 lds R30,_s_pCurrentMenuItem
0276 F0910300 lds R31,_s_pCurrentMenuItem+1
027A 3796 adiw R30,7
027C 2590 lpm R2,Z+
027E 3490 lpm R3,Z
0280 2220 tst R2
0282 11F4 brne X21
0284 3320 tst R3
0286 81F0 breq L41
0288 X21:
0288 .dbline 200
0288 ; {
0288 .dbline 201
0288 ; s_pCurrentMenuItem = s_pCurrentMenuItem->pChild;
0288 E0910200 lds R30,_s_pCurrentMenuItem
028C F0910300 lds R31,_s_pCurrentMenuItem+1
0290 3796 adiw R30,7
0292 2590 lpm R2,Z+
0294 3490 lpm R3,Z
0296 30920300 sts _s_pCurrentMenuItem+1,R3
029A 20920200 sts _s_pCurrentMenuItem,R2
029E .dbline 202
029E ; s_pDISPMenuItem = s_pCurrentMenuItem;
029E 30920500 sts _s_pDISPMenuItem+1,R3
02A2 20920400 sts _s_pDISPMenuItem,R2
02A6 .dbline 203
02A6 ; }
02A6 5DC0 xjmp L26
02A8 L41:
02A8 .dbline 204
02A8 ; else if (s_pCurrentMenuItem->fnTask != NULL)
02A8 E0910200 lds R30,_s_pCurrentMenuItem
02AC F0910300 lds R31,_s_pCurrentMenuItem+1
02B0 3396 adiw R30,3
02B2 2590 lpm R2,Z+
02B4 3490 lpm R3,Z
02B6 2220 tst R2
02B8 11F4 brne X22
02BA 3320 tst R3
02BC 69F0 breq L43
02BE X22:
02BE .dbline 205
02BE ; {
02BE .dbline 206
02BE ; (s_pCurrentMenuItem->fnTask)(); //调用函数
02BE 40910200 lds R20,_s_pCurrentMenuItem
02C2 50910300 lds R21,_s_pCurrentMenuItem+1
02C6 4D5F subi R20,253 ; offset = 3
02C8 5F4F sbci R21,255
02CA FA01 movw R30,R20
02CC 0590 lpm R0,Z+
02CE 1490 lpm R1,Z
02D0 F001 movw R30,R0
02D2 0E940000 xcall xicallx
02D6 .dbline 207
02D6 ; }
02D6 45C0 xjmp L26
02D8 L43:
02D8 .dbline 209
02D8 ; else
02D8 ; {
02D8 .dbline 210
02D8 ; CLS;
02D8 0E940000 xcall _LCDWaitForReady
02DC .dbline 210
02DC 01E0 ldi R16,1
02DE 0E940000 xcall _LCDSendCommand
02E2 .dbline 210
02E2 0E940000 xcall _LCDWaitForReady
02E6 .dbline 210
02E6 02E0 ldi R16,2
02E8 0E940000 xcall _LCDSendCommand
02EC .dbline 210
02EC .dbline 211
02EC ; LOCATE(1,2);
02EC 21E0 ldi R18,1
02EE 0027 clr R16
02F0 0E940000 xcall _LCDSetXY
02F4 .dbline 211
02F4 .dbline 212
02F4 ; PRINT("PRESS ANY KEY...");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -