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

📄 rd_usekey.lis

📁 LCD1602键盘显示模块实例
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00E0                   .dbend
 00E0                   .dbfunc e Add_Key_Code _Add_Key_Code fV
                        .even
 00E0           _Add_Key_Code::
 00E0                   .dbline -1
 00E0                   .dbline 242
 00E0           ;        
 00E0           ; }
 00E0           ; 
 00E0           ; /***********************************************************
 00E0           ; *   函数说明:键盘缓冲处理函数                             *
 00E0           ; *   输入:    无                                           *
 00E0           ; *   输出:    无                                           *
 00E0           ; *   调用函数:_Key_Scan()                                  *
 00E0           ; ***********************************************************/
 00E0           ; void Add_Key_Code(void)
 00E0           ; {
 00E0                   .dbline 243
 00E0           ;     _Key_Scan();
 00E0 8FDF              xcall __Key_Scan
 00E2                   .dbline 245
 00E2           ;     
 00E2           ;       if ((s_cKeyNum == KEY_NULL) && (s_cLongKeyPressNum == KEY_NULL))
 00E2 80910A00          lds R24,_s_cKeyNum
 00E6 8F3F              cpi R24,255
 00E8 29F4              brne L16
 00EA           X8:
 00EA 80910900          lds R24,_s_cLongKeyPressNum
 00EE 8F3F              cpi R24,255
 00F0 09F4              brne L16
 00F2           X9:
 00F2                   .dbline 246
 00F2           ;       {
 00F2                   .dbline 247
 00F2           ;           return ;
 00F2 32C0              xjmp L15
 00F4           L16:
 00F4                   .dbline 250
 00F4           ;       }
 00F4           ;       
 00F4           ;       if ((s_cKeyBUFFHeadPoint == s_cKeyBUFFTailPoint) && (s_cKeyBUFFCounter != NULL))
 00F4 20900800          lds R2,_s_cKeyBUFFTailPoint
 00F8 30900700          lds R3,_s_cKeyBUFFHeadPoint
 00FC 3214              cp R3,R2
 00FE 29F4              brne L18
 0100           X10:
 0100 20900600          lds R2,_s_cKeyBUFFCounter
 0104 2220              tst R2
 0106 09F0              breq L18
 0108           X11:
 0108                   .dbline 251
 0108           ;       {
 0108                   .dbline 252
 0108           ;           return ;
 0108 27C0              xjmp L15
 010A           L18:
 010A                   .dbline 255
 010A           ;       }
 010A           ;       
 010A           ;       s_cKeyBUFF[s_cKeyBUFFTailPoint][0] = s_cKeyNum;
 010A 80E0              ldi R24,<_s_cKeyBUFF
 010C 90E0              ldi R25,>_s_cKeyBUFF
 010E E0910800          lds R30,_s_cKeyBUFFTailPoint
 0112 FF27              clr R31
 0114 EE0F              lsl R30
 0116 FF1F              rol R31
 0118 E80F              add R30,R24
 011A F91F              adc R31,R25
 011C 20900A00          lds R2,_s_cKeyNum
 0120 2082              std z+0,R2
 0122                   .dbline 256
 0122           ;       s_cKeyBUFF[s_cKeyBUFFTailPoint][1] = s_cLongKeyPressNum;
 0122 80E0              ldi R24,<_s_cKeyBUFF+1
 0124 90E0              ldi R25,>_s_cKeyBUFF+1
 0126 E0910800          lds R30,_s_cKeyBUFFTailPoint
 012A FF27              clr R31
 012C EE0F              lsl R30
 012E FF1F              rol R31
 0130 E80F              add R30,R24
 0132 F91F              adc R31,R25
 0134 20900900          lds R2,_s_cLongKeyPressNum
 0138 2082              std z+0,R2
 013A                   .dbline 258
 013A           ;       
 013A           ;       s_cKeyBUFFTailPoint ++;
 013A 80910800          lds R24,_s_cKeyBUFFTailPoint
 013E 8F5F              subi R24,255    ; addi 1
 0140 80930800          sts _s_cKeyBUFFTailPoint,R24
 0144                   .dbline 259
 0144           ;       if (s_cKeyBUFFTailPoint == KEY_BUFF_SIZE)
 0144 8830              cpi R24,8
 0146 19F4              brne L21
 0148           X12:
 0148                   .dbline 260
 0148           ;       {
 0148                   .dbline 261
 0148           ;           s_cKeyBUFFTailPoint = 0;
 0148 2224              clr R2
 014A 20920800          sts _s_cKeyBUFFTailPoint,R2
 014E                   .dbline 262
 014E           ;       }
 014E           L21:
 014E                   .dbline 263
 014E           ;       s_cKeyBUFFCounter ++;
 014E 80910600          lds R24,_s_cKeyBUFFCounter
 0152 8F5F              subi R24,255    ; addi 1
 0154 80930600          sts _s_cKeyBUFFCounter,R24
 0158                   .dbline -2
 0158           L15:
 0158                   .dbline 0 ; func end
 0158 0895              ret
 015A                   .dbend
 015A                   .dbfunc e Get_Key_Code _Get_Key_Code fc
                        .even
 015A           _Get_Key_Code::
 015A                   .dbline -1
 015A                   .dbline 276
 015A           ; }
 015A           ; 
 015A           ; /***********************************************************
 015A           ; *   函数说明:从键盘缓冲区中获得一个按键扫描码             *
 015A           ; *   输出:    返回操作是否成功TRUE / FALSE                 *
 015A           ; *   输入:    无                                           *
 015A           ; *   调用函数:Add_Key_Code()                               *
 015A           ; * -------------------------------------------------------- *
 015A           ; *   [说    明]                                             *
 015A           ; *             将按键扫描码放到专门的临时缓冲变量中         *
 015A           ; ***********************************************************/
 015A           ; unsigned char Get_Key_Code(void)
 015A           ; {
 015A                   .dbline 277
 015A           ;     g_cReturnKeyNum = KEY_NULL;
 015A 8FEF              ldi R24,255
 015C 80930000          sts _g_cReturnKeyNum,R24
 0160                   .dbline 278
 0160           ;     g_cReturnLongPressKeyNum = KEY_NULL;
 0160 80930100          sts _g_cReturnLongPressKeyNum,R24
 0164                   .dbline 284
 0164           ;       
 0164           ;       #ifdef _USE_KEY_MANUL_REFRESH
 0164           ;           Add_Key_Code();
 0164           ;       #endif
 0164           ;       
 0164           ;       if ((s_cKeyBUFFHeadPoint == s_cKeyBUFFTailPoint) && (s_cKeyBUFFCounter == NULL))
 0164 20900800          lds R2,_s_cKeyBUFFTailPoint
 0168 30900700          lds R3,_s_cKeyBUFFHeadPoint
 016C 3214              cp R3,R2
 016E 31F4              brne L24
 0170           X13:
 0170 20900600          lds R2,_s_cKeyBUFFCounter
 0174 2220              tst R2
 0176 11F4              brne L24
 0178           X14:
 0178                   .dbline 285
 0178           ;       {
 0178                   .dbline 286
 0178           ;           return FALSE;
 0178 0027              clr R16
 017A 28C0              xjmp L23
 017C           L24:
 017C                   .dbline 289
 017C           ;       }
 017C           ; 
 017C           ;     g_cReturnKeyNum = s_cKeyBUFF[s_cKeyBUFFHeadPoint][0];
 017C 80E0              ldi R24,<_s_cKeyBUFF
 017E 90E0              ldi R25,>_s_cKeyBUFF
 0180 E0910700          lds R30,_s_cKeyBUFFHeadPoint
 0184 FF27              clr R31
 0186 EE0F              lsl R30
 0188 FF1F              rol R31
 018A E80F              add R30,R24
 018C F91F              adc R31,R25
 018E 2080              ldd R2,z+0
 0190 20920000          sts _g_cReturnKeyNum,R2
 0194                   .dbline 290
 0194           ;       g_cReturnLongPressKeyNum = s_cKeyBUFF[s_cKeyBUFFHeadPoint][1];
 0194 80E0              ldi R24,<_s_cKeyBUFF+1
 0196 90E0              ldi R25,>_s_cKeyBUFF+1
 0198 E0910700          lds R30,_s_cKeyBUFFHeadPoint
 019C FF27              clr R31
 019E EE0F              lsl R30
 01A0 FF1F              rol R31
 01A2 E80F              add R30,R24
 01A4 F91F              adc R31,R25
 01A6 2080              ldd R2,z+0
 01A8 20920100          sts _g_cReturnLongPressKeyNum,R2
 01AC                   .dbline 292
 01AC           ;                       
 01AC           ;       s_cKeyBUFFCounter--;
 01AC 80910600          lds R24,_s_cKeyBUFFCounter
 01B0 8150              subi R24,1
 01B2 80930600          sts _s_cKeyBUFFCounter,R24
 01B6                   .dbline 293
 01B6           ;       s_cKeyBUFFHeadPoint++;
 01B6 80910700          lds R24,_s_cKeyBUFFHeadPoint
 01BA 8F5F              subi R24,255    ; addi 1
 01BC 80930700          sts _s_cKeyBUFFHeadPoint,R24
 01C0                   .dbline 294
 01C0           ;       if (s_cKeyBUFFHeadPoint == KEY_BUFF_SIZE)
 01C0 8830              cpi R24,8
 01C2 19F4              brne L27
 01C4           X15:
 01C4                   .dbline 295
 01C4           ;       {
 01C4                   .dbline 296
 01C4           ;           s_cKeyBUFFHeadPoint = 0;
 01C4 2224              clr R2
 01C6 20920700          sts _s_cKeyBUFFHeadPoint,R2
 01CA                   .dbline 297
 01CA           ;       }
 01CA           L27:
 01CA                   .dbline 299
 01CA           ;                       
 01CA           ;     return TRUE;
 01CA 01E0              ldi R16,1
 01CC                   .dbline -2
 01CC           L23:
 01CC                   .dbline 0 ; func end
 01CC 0895              ret
 01CE                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
 0000           _s_cKeyBUFF:
 0000                   .blkb 16
 0010                   .dbsym s s_cKeyBUFF _s_cKeyBUFF A[16:8:2]c
 0010           ; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -