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

📄 menu_implement.lis

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