📄 keyscan.lis
字号:
00F0 .dbline 89
00F0 ; if(KeyNow!=KeyCode)
00F0 20900100 lds R2,_KeyCode
00F4 30900300 lds R3,_KeyNow
00F8 3214 cp R3,R2
00FA 39F0 breq L20
00FC .dbline 90
00FC ; {
00FC .dbline 91
00FC ; KeyCode=KeyNow;
00FC 232C mov R2,R3
00FE 20920100 sts _KeyCode,R2
0102 .dbline 92
0102 ; KeyCnt=0;
0102 2224 clr R2
0104 20920000 sts _KeyCnt,R2
0108 .dbline 93
0108 ; }
0108 12C0 xjmp L21
010A L20:
010A .dbline 95
010A ; else
010A ; { //起滤波作用,修改这里的数字可以调整按键的灵敏度
010A .dbline 96
010A ; KeyCnt++;
010A 80910000 lds R24,_KeyCnt
010E 8F5F subi R24,255 ; addi 1
0110 80930000 sts _KeyCnt,R24
0114 .dbline 97
0114 ; if(KeyCnt>5)
0114 85E0 ldi R24,5
0116 20900000 lds R2,_KeyCnt
011A 8215 cp R24,R2
011C 40F4 brsh L22
011E .dbline 98
011E ; {
011E .dbline 99
011E ; KeyCnt=0;
011E 2224 clr R2
0120 20920000 sts _KeyCnt,R2
0124 .dbline 100
0124 ; set_bit(flag1,fkeyreq);
0124 80910900 lds R24,_flag1
0128 8160 ori R24,1
012A 80930900 sts _flag1,R24
012E .dbline 101
012E ; }
012E L22:
012E .dbline 102
012E ; }
012E L21:
012E .dbline 103
012E ; }
012E L18:
012E .dbline 104
012E ; if(get_bit(flag1,fkeyreq))
012E 20900900 lds R2,_flag1
0132 20FE sbrs R2,0
0134 1BC0 rjmp L24
0136 .dbline 105
0136 ; {
0136 .dbline 106
0136 ; clr_bit(flag1,fkeyreq);
0136 822D mov R24,R2
0138 8E7F andi R24,254
013A 80930900 sts _flag1,R24
013E .dbline 107
013E ; if(KeyCode!=KeyOld)
013E 20900200 lds R2,_KeyOld
0142 30900100 lds R3,_KeyCode
0146 3214 cp R3,R2
0148 61F0 breq L26
014A .dbline 108
014A ; {
014A .dbline 110
014A ; //无连键
014A ; if(!(get_bit(flag1,fkeyhid)))
014A 82FD sbrc R24,2
014C 0FC0 rjmp L27
014E .dbline 111
014E ; {
014E .dbline 112
014E ; set_bit(flag1,fkeyhid); //有按键时,设置按键屏蔽,屏蔽掉其它按键
014E 8460 ori R24,4
0150 80930900 sts _flag1,R24
0154 .dbline 113
0154 ; KeyOld=KeyCode;
0154 232C mov R2,R3
0156 20920200 sts _KeyOld,R2
015A .dbline 114
015A ; set_bit(flag1,fkeyeff);
015A 8260 ori R24,2
015C 80930900 sts _flag1,R24
0160 .dbline 115
0160 ; }
0160 .dbline 117
0160 ; //keyccnt=40;
0160 ; }
0160 05C0 xjmp L27
0162 L26:
0162 .dbline 119
0162 ; else
0162 ; {
0162 .dbline 121
0162 ; //有连键现象
0162 ; set_bit(flag1,fkeyhid);
0162 80910900 lds R24,_flag1
0166 8460 ori R24,4
0168 80930900 sts _flag1,R24
016C .dbline 132
016C ; /*if((KeyCode==3)||(KeyCode==4)) //这里的数字对应有连键现象的键值
016C ; {
016C ; keyccnt--;
016C ; if(keyccnt==0)
016C ; {
016C ; keyccnt=6;
016C ; set_bit(flag1,fkeyeff);
016C ; set_bit(flag1,fkeysucc);
016C ; }
016C ; }*/
016C ; }
016C L27:
016C .dbline 133
016C ; }
016C L24:
016C .dbline 134
016C 20900300 lds R2,_KeyNow
0170 2220 tst R2
0172 29F4 brne L30
0174 .dbline 135
0174 80910900 lds R24,_flag1
0178 8B7F andi R24,251
017A 80930900 sts _flag1,R24
017E L30:
017E .dbline -2
017E L15:
017E 0E940000 xcall pop_gset3x
0182 .dbline 0 ; func end
0182 0895 ret
0184 .dbsym r temp 10 c
0184 .dbend
0184 .dbfunc e Key_Pr _Key_Pr fV
.even
0184 _Key_Pr::
0184 0E940000 xcall push_gset3x
0188 2397 sbiw R28,3
018A .dbline -1
018A .dbline 147
018A ; if(!KeyNow) //没有任何按键时,清除按键屏蔽
018A ; clr_bit(flag1,fkeyhid);
018A ; }
018A ; //**************************************//
018A ; // 函数名称:void Key_Pr()
018A ; // 输--入:KeyCode
018A ; // 输--出:data_buffer[0]
018A ; // 功--能:按键处理
018A ; // 影响标志:
018A ; // 创--建:
018A ; // 修--改:
018A ; //**************************************//
018A ; void Key_Pr(void)
018A ; {
018A .dbline 148
018A ; if(get_bit(flag1,fkeyeff))
018A 20900900 lds R2,_flag1
018E 21FE sbrs R2,1
0190 3EC1 rjmp L33
0192 .dbline 149
0192 ; {
0192 .dbline 150
0192 ; fBuzzring|=(1<<fbuzzeff)|(1<<fbuzzring);
0192 80910000 lds R24,_fBuzzring
0196 8360 ori R24,3
0198 80930000 sts _fBuzzring,R24
019C .dbline 151
019C ; BuzzringCnt=2;
019C 82E0 ldi R24,2
019E 80930000 sts _BuzzringCnt,R24
01A2 .dbline 152
01A2 ; clr_bit(flag1,fkeyeff);
01A2 822D mov R24,R2
01A4 8D7F andi R24,253
01A6 80930900 sts _flag1,R24
01AA .dbline 153
01AA ; set_bit(flag1,finputeff);
01AA 8061 ori R24,16
01AC 80930900 sts _flag1,R24
01B0 .dbline 154
01B0 ; if(KeyOld==10)
01B0 80910200 lds R24,_KeyOld
01B4 8A30 cpi R24,10
01B6 19F4 brne L35
01B8 .dbline 155
01B8 ; KeyOld=0;
01B8 2224 clr R2
01BA 20920200 sts _KeyOld,R2
01BE L35:
01BE .dbline 159
01BE ; //******************
01BE ; //**各按键功能处理
01BE ; //******************
01BE ; switch(KeyOld)
01BE A0900200 lds R10,_KeyOld
01C2 BB24 clr R11
01C4 AA20 tst R10
01C6 19F4 brne X2
01C8 BB20 tst R11
01CA 09F4 brne X6
01CC 20C1 xjmp L38
01CE X6:
01CE X2:
01CE C501 movw R24,R10
01D0 8130 cpi R24,1
01D2 E0E0 ldi R30,0
01D4 9E07 cpc R25,R30
01D6 09F4 brne X7
01D8 33C0 xjmp L40
01DA X7:
01DA 8230 cpi R24,2
01DC E0E0 ldi R30,0
01DE 9E07 cpc R25,R30
01E0 09F4 brne X8
01E2 59C0 xjmp L44
01E4 X8:
01E4 8330 cpi R24,3
01E6 E0E0 ldi R30,0
01E8 9E07 cpc R25,R30
01EA 09F4 brne X9
01EC 6AC0 xjmp L46
01EE X9:
01EE 8430 cpi R24,4
01F0 E0E0 ldi R30,0
01F2 9E07 cpc R25,R30
01F4 09F4 brne X10
01F6 88C0 xjmp L50
01F8 X10:
01F8 8530 cpi R24,5
01FA E0E0 ldi R30,0
01FC 9E07 cpc R25,R30
01FE 09F4 brne X11
0200 99C0 xjmp L52
0202 X11:
0202 8630 cpi R24,6
0204 E0E0 ldi R30,0
0206 9E07 cpc R25,R30
0208 09F4 brne X12
020A AAC0 xjmp L53
020C X12:
020C 8730 cpi R24,7
020E E0E0 ldi R30,0
0210 9E07 cpc R25,R30
0212 09F4 brne X13
0214 FCC0 xjmp L38
0216 X13:
0216 8830 cpi R24,8
0218 E0E0 ldi R30,0
021A 9E07 cpc R25,R30
021C 09F4 brne X14
021E B6C0 xjmp L56
0220 X14:
0220 8930 cpi R24,9
0222 E0E0 ldi R30,0
0224 9E07 cpc R25,R30
0226 09F4 brne X15
0228 F2C0 xjmp L38
022A X15:
022A 8B30 cpi R24,11
022C E0E0 ldi R30,0
022E 9E07 cpc R25,R30
0230 09F4 brne X16
0232 C2C0 xjmp L60
0234 X16:
0234 8C30 cpi R24,12
0236 E0E0 ldi R30,0
0238 9E07 cpc R25,R30
023A 09F4 brne X17
023C D3C0 xjmp L62
023E X17:
023E E7C0 xjmp L38
0240 X3:
0240 .dbline 160
0240 ; {
0240 L40:
0240 .dbline 162
0240 ; case 1: //confirm键
0240 ; {
0240 .dbline 163
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -