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

📄 menu_implement.lis

📁 LCD1602键盘显示模块实例
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -