📄 menu_implement.lis
字号:
02F4 00E0 ldi R16,<L6
02F6 10E0 ldi R17,>L6
02F8 0E940000 xcall _LCDDisplayString
02FC .dbline 212
02FC 08C0 xjmp L46
02FE L45:
02FE .dbline 214
02FE ; while(!Get_Key_Code())
02FE ; {
02FE .dbline 215
02FE ; Flash("ERROR: NULL ITEM!",' ',1,1);
02FE 81E0 ldi R24,1
0300 8A83 std y+2,R24
0302 8883 std y+0,R24
0304 20E2 ldi R18,32
0306 00E0 ldi R16,<L48
0308 10E0 ldi R17,>L48
030A 0E940000 xcall _Flash
030E .dbline 216
030E ; }
030E L46:
030E .dbline 213
030E 0E940000 xcall _Get_Key_Code
0312 A02E mov R10,R16
0314 0023 tst R16
0316 99F3 breq L45
0318 X23:
0318 .dbline 217
0318 ; CLS
0318 0E940000 xcall _LCDWaitForReady
031C .dbline 217
031C 01E0 ldi R16,1
031E 0E940000 xcall _LCDSendCommand
0322 .dbline 217
0322 0E940000 xcall _LCDWaitForReady
0326 .dbline 217
0326 02E0 ldi R16,2
0328 0E940000 xcall _LCDSendCommand
032C .dbline 218
032C ; }
032C .dbline 219
032C ; break;
032C 1AC0 xjmp L26
032E L49:
032E .dbline 221
032E ; case KEY_LEFT:
032E ; if (s_pCurrentMenuItem->pParent != NULL)
032E E0910200 lds R30,_s_pCurrentMenuItem
0332 F0910300 lds R31,_s_pCurrentMenuItem+1
0336 3596 adiw R30,5
0338 2590 lpm R2,Z+
033A 3490 lpm R3,Z
033C 2220 tst R2
033E 11F4 brne X24
0340 3320 tst R3
0342 79F0 breq L26
0344 X24:
0344 .dbline 222
0344 ; {
0344 .dbline 223
0344 ; s_pCurrentMenuItem = s_pCurrentMenuItem->pParent;
0344 E0910200 lds R30,_s_pCurrentMenuItem
0348 F0910300 lds R31,_s_pCurrentMenuItem+1
034C 3596 adiw R30,5
034E 2590 lpm R2,Z+
0350 3490 lpm R3,Z
0352 30920300 sts _s_pCurrentMenuItem+1,R3
0356 20920200 sts _s_pCurrentMenuItem,R2
035A .dbline 224
035A ; s_pDISPMenuItem = s_pCurrentMenuItem;
035A 30920500 sts _s_pDISPMenuItem+1,R3
035E 20920400 sts _s_pDISPMenuItem,R2
0362 .dbline 225
0362 ; }
0362 .dbline 226
0362 ; break;
0362 .dbline 228
0362 ; default:
0362 ; break;
0362 L26:
0362 .dbline 232
0362 ; }
0362 ;
0362 ; //检测长按键
0362 ; switch (g_cReturnLongPressKeyNum)
0362 40910000 lds R20,_g_cReturnLongPressKeyNum
0366 4430 cpi R20,4
0368 09F0 breq L56
036A X25:
036A 10C0 xjmp L54
036C L56:
036C .dbline 235
036C ; {
036C ; case KEY_LEFT: //长按LEFT键返回根目录
036C ; s_pCurrentMenuItem = s_pMenuRoot;
036C 20900000 lds R2,_s_pMenuRoot
0370 30900100 lds R3,_s_pMenuRoot+1
0374 30920300 sts _s_pCurrentMenuItem+1,R3
0378 20920200 sts _s_pCurrentMenuItem,R2
037C .dbline 236
037C ; s_pDISPMenuItem = s_pCurrentMenuItem;
037C 20900200 lds R2,_s_pCurrentMenuItem
0380 30900300 lds R3,_s_pCurrentMenuItem+1
0384 30920500 sts _s_pDISPMenuItem+1,R3
0388 20920400 sts _s_pDISPMenuItem,R2
038C .dbline 237
038C ; break;
038C .dbline 239
038C ; default:
038C ; break;
038C L54:
038C .dbline 241
038C ; }
038C ; }
038C L23:
038C .dbline 243
038C ;
038C ; return TRUE;
038C 01E0 ldi R16,1
038E .dbline -2
038E L7:
038E .dbline 0 ; func end
038E 2396 adiw R28,3
0390 0C940000 xjmp pop_xgset300C
0394 .dbend
0394 .dbfunc s Show_Menu _Show_Menu fV
0394 ; cHandPOS -> R20
0394 ; pStart -> R22,R23
.even
0394 _Show_Menu:
0394 0E940000 xcall push_xgsetF000
0398 422F mov R20,R18
039A B801 movw R22,R16
039C 2397 sbiw R28,3
039E .dbline -1
039E .dbline 253
039E ; }
039E ;
039E ; /***********************************************************
039E ; * 函数说明:目录打印函数 *
039E ; * 输入: 要显示的起始目录条目、光标位置 *
039E ; * 输出: 无 *
039E ; * 调用函数:LOCATE() PRINT() *
039E ; ***********************************************************/
039E ; static void Show_Menu(const MENU_ITEM *pStart,uint8 cHandPOS)
039E ; {
039E .dbline 255
039E ;
039E ; if (pStart == NULL)
039E 6030 cpi R22,0
03A0 6707 cpc R22,R23
03A2 01F5 brne L58
03A4 X36:
03A4 .dbline 256
03A4 ; {
03A4 .dbline 257
03A4 ; CLS;
03A4 0E940000 xcall _LCDWaitForReady
03A8 .dbline 257
03A8 01E0 ldi R16,1
03AA 0E940000 xcall _LCDSendCommand
03AE .dbline 257
03AE 0E940000 xcall _LCDWaitForReady
03B2 .dbline 257
03B2 02E0 ldi R16,2
03B4 0E940000 xcall _LCDSendCommand
03B8 .dbline 257
03B8 .dbline 258
03B8 ; LOCATE(1,2);
03B8 21E0 ldi R18,1
03BA 0027 clr R16
03BC 0E940000 xcall _LCDSetXY
03C0 .dbline 258
03C0 .dbline 259
03C0 ; PRINT("PRESS ANY KEY...");
03C0 00E0 ldi R16,<L6
03C2 10E0 ldi R17,>L6
03C4 0E940000 xcall _LCDDisplayString
03C8 .dbline 259
03C8 08C0 xjmp L61
03CA L60:
03CA .dbline 261
03CA ; while(!Get_Key_Code())
03CA ; {
03CA .dbline 262
03CA ; Flash("ERROR: NO MENU!",' ',1,1);
03CA 81E0 ldi R24,1
03CC 8A83 std y+2,R24
03CE 8883 std y+0,R24
03D0 20E2 ldi R18,32
03D2 00E0 ldi R16,<L63
03D4 10E0 ldi R17,>L63
03D6 0E940000 xcall _Flash
03DA .dbline 263
03DA ; }
03DA L61:
03DA .dbline 260
03DA 0E940000 xcall _Get_Key_Code
03DE 0023 tst R16
03E0 A1F3 breq L60
03E2 X37:
03E2 .dbline 264
03E2 ; return ;
03E2 33C0 xjmp L57
03E4 L58:
03E4 .dbline 267
03E4 ; }
03E4 ;
03E4 ; LOCATE(4,1);
03E4 2227 clr R18
03E6 03E0 ldi R16,3
03E8 0E940000 xcall _LCDSetXY
03EC .dbline 267
03EC .dbline 268
03EC ; PRINT(pStart->String);
03EC FB01 movw R30,R22
03EE 0591 lpm R16,Z+
03F0 1491 lpm R17,Z
03F2 0E940000 xcall _LCDDisplayString
03F6 .dbline 268
03F6 .dbline 270
03F6 ;
03F6 ; if (pStart->pNext != NULL)
03F6 FB01 movw R30,R22
03F8 3B96 adiw R30,11
03FA 2590 lpm R2,Z+
03FC 3490 lpm R3,Z
03FE 2220 tst R2
0400 11F4 brne X38
0402 3320 tst R3
0404 D1F0 breq L64
0406 X38:
0406 .dbline 271
0406 ; {
0406 .dbline 272
0406 ; LOCATE(4,2);
0406 21E0 ldi R18,1
0408 03E0 ldi R16,3
040A 0E940000 xcall _LCDSetXY
040E .dbline 272
040E .dbline 273
040E ; PRINT(pStart->pNext->String);
040E FB01 movw R30,R22
0410 3B96 adiw R30,11
0412 0590 lpm R0,Z+
0414 1490 lpm R1,Z
0416 F001 movw R30,R0
0418 0591 lpm R16,Z+
041A 1491 lpm R17,Z
041C 0E940000 xcall _LCDDisplayString
0420 .dbline 273
0420 .dbline 275
0420 ;
0420 ; LOCATE(2,((cHandPOS-1) & 0x01)+1);
0420 242F mov R18,R20
0422 2150 subi R18,1
0424 2170 andi R18,1
0426 2F5F subi R18,255 ; addi 1
0428 2150 subi R18,1
042A 01E0 ldi R16,1
042C 0E940000 xcall _LCDSetXY
0430 .dbline 275
0430 .dbline 276
0430 ; PRINT(">");
0430 00E0 ldi R16,<L66
0432 10E0 ldi R17,>L66
0434 0E940000 xcall _LCDDisplayString
0438 .dbline 276
0438 .dbline 277
0438 ; }
0438 08C0 xjmp L65
043A L64:
043A .dbline 279
043A ; else
043A ; {
043A .dbline 280
043A ; LOCATE(2,1);
043A 2227 clr R18
043C 01E0 ldi R16,1
043E 0E940000 xcall _LCDSetXY
0442 .dbline 280
0442 .dbline 281
0442 ; PRINT(">");
0442 00E0 ldi R16,<L66
0444 10E0 ldi R17,>L66
0446 0E940000 xcall _LCDDisplayString
044A .dbline 281
044A .dbline 282
044A ; }
044A L65:
044A .dbline -2
044A L57:
044A .dbline 0 ; func end
044A 2396 adiw R28,3
044C 0C940000 xjmp pop_xgsetF000
0450 .dbsym r cHandPOS 20 c
0450 .dbsym r pStart 22 pkS[Menu_Item]
0450 .dbend
.area data(ram, con, rel)
0007 .dbfile O:\2007全国电子设计大赛\键盘显示模块\Menu_Implement.c
0007 L66:
0007 .blkb 2
.area idata
0007 3E00 .byte 62,0
.area data(ram, con, rel)
0009 .dbfile O:\2007全国电子设计大赛\键盘显示模块\Menu_Implement.c
0009 L63:
0009 .blkb 16
.area idata
0009 4552524F523A204E4F204D454E552100 .byte 'E,'R,'R,'O,'R,58,32,'N,'O,32,'M,'E,'N,'U,33,0
.area data(ram, con, rel)
0019 .dbfile O:\2007全国电子设计大赛\键盘显示模块\Menu_Implement.c
0019 L48:
0019 .blkb 18
.area idata
0019 4552524F523A204E554C4C204954454D .byte 'E,'R,'R,'O,'R,58,32,'N,'U,'L,'L,32,'I,'T,'E,'M
0029 2100 .byte 33,0
.area data(ram, con, rel)
002B .dbfile O:\2007全国电子设计大赛\键盘显示模块\Menu_Implement.c
002B L6:
002B .blkb 17
.area idata
002B 505245535320414E59204B45592E2E2E .byte 'P,'R,'E,'S,'S,32,'A,'N,'Y,32,'K,'E,'Y,46,46,46
003B 00 .byte 0
.area data(ram, con, rel)
003C .dbfile O:\2007全国电子设计大赛\键盘显示模块\Menu_Implement.c
003C L5:
003C .blkb 84
.area idata
003C 4E6174696F6E616C20556E6465726772 .byte 'N,'a,'t,'i,'o,'n,'a,'l,32,'U,'n,'d,'e,'r,'g,'r
004C 616475746520456C656374726F6E6963 .byte 'a,'d,'u,'t,'e,32,'E,'l,'e,'c,'t,'r,'o,'n,'i,'c
005C 2044657369676E20436F6E7465737420 .byte 32,'D,'e,'s,'i,'g,'n,32,'C,'o,'n,'t,'e,'s,'t,32
006C 32303038202020204461726520746F20 .byte 50,48,48,56,32,32,32,32,'D,'a,'r,'e,32,'t,'o,32
007C 437265617465202620456E6A6F792120 .byte 'C,'r,'e,'a,'t,'e,32,38,32,'E,'n,'j,'o,'y,33,32
008C 20202000 .byte 32,32,32,0
.area data(ram, con, rel)
0090 .dbfile O:\2007全国电子设计大赛\键盘显示模块\Menu_Implement.c
0090 L4:
0090 .blkb 2
.area idata
0090 5D00 .byte 93,0
.area data(ram, con, rel)
0092 .dbfile O:\2007全国电子设计大赛\键盘显示模块\Menu_Implement.c
0092 L3:
0092 .blkb 2
.area idata
0092 5B00 .byte 91,0
.area data(ram, con, rel)
0094 .dbfile O:\2007全国电子设计大赛\键盘显示模块\Menu_Implement.c
0094 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -