📄 key.lis
字号:
016E .dbline 76
016E ; KEYIN=a+1; z=1;
016E 042F mov R16,R20
0170 0F5F subi R16,255 ; addi 1
0172 .dbline 76
0172 21E0 ldi R18,1
0174 .dbline 77
0174 ; NKEY_n=0;
0174 2224 clr R2
0176 20920200 sts L6,R2
017A .dbline 78
017A 6627 clr R22
017C 09C0 rjmp L54
017E L51:
017E .dbline 78
017E 80E0 ldi R24,<_KKEY_n
0180 90E0 ldi R25,>_KKEY_n
0182 E62F mov R30,R22
0184 FF27 clr R31
0186 E80F add R30,R24
0188 F91F adc R31,R25
018A 2224 clr R2
018C 2082 std z+0,R2
018E L52:
018E .dbline 78
018E 6395 inc R22
0190 L54:
0190 .dbline 78
0190 ; for(c=0;c!=14;c++) KKEY_n[c]=0;
0190 6E30 cpi R22,14
0192 A9F7 brne L51
0194 .dbline 79
0194 ; break;
0194 03C0 rjmp L47
0196 L49:
0196 .dbline 81
0196 L46:
0196 .dbline 72
0196 4395 inc R20
0198 L48:
0198 .dbline 72
0198 4E30 cpi R20,14
019A 01F7 brne L45
019C L47:
019C .dbline 82
019C ; }
019C ; }
019C ; if(a==14) return(0); //有按钮,但还没有获得有效按钮
019C 4E30 cpi R20,14
019E 11F4 brne L55
01A0 .dbline 82
01A0 0027 clr R16
01A2 CAC0 rjmp L1
01A4 L55:
01A4 .dbline 83
01A4 ; }
01A4 L22:
01A4 .dbline 85
01A4 ;
01A4 ; if(z==0) return(0);
01A4 2223 tst R18
01A6 11F4 brne L57
01A8 .dbline 85
01A8 0027 clr R16
01AA C6C0 rjmp L1
01AC L57:
01AC .dbline 88
01AC ;
01AC ;
01AC ; if(KEYIN==0) //没有按键时的处理
01AC 0023 tst R16
01AE 61F5 brne L59
01B0 .dbline 89
01B0 ; {
01B0 .dbline 91
01B0 ;
01B0 ; if((++NK)>2)
01B0 80910000 lds R24,L2
01B4 8F5F subi R24,255 ; addi 1
01B6 282E mov R2,R24
01B8 20920000 sts L2,R2
01BC 82E0 ldi R24,2
01BE 8215 cp R24,R2
01C0 08F5 brsh L61
01C2 .dbline 92
01C2 ; {
01C2 .dbline 93
01C2 ; NK=30; //强制赋值为20;以防止不断累加溢出
01C2 8EE1 ldi R24,30
01C4 80930000 sts L2,R24
01C8 .dbline 94
01C8 ; KEY=0;
01C8 2224 clr R2
01CA 20920000 sts _KEY,R2
01CE .dbline 97
01CE ; // YYK=0;
01CE ; // if(XIE_BEGIN==1) SENG=JIANG=1; //没有按键,停止升降
01CE ; switch(PPK)
01CE 20910100 lds R18,L3
01D2 3327 clr R19
01D4 2530 cpi R18,5
01D6 E0E0 ldi R30,0
01D8 3E07 cpc R19,R30
01DA 09F0 breq L66
01DC 0DC0 rjmp L63
01DE X3:
01DE .dbline 98
01DE ; {
01DE L66:
01DE .dbline 100
01DE ; case SET:
01DE ; KEY=PPK;
01DE 20900100 lds R2,L3
01E2 20920000 sts _KEY,R2
01E6 .dbline 101
01E6 ; PPK=111;
01E6 8FE6 ldi R24,111
01E8 80930100 sts L3,R24
01EC .dbline 102
01EC ; if(YYK<16)
01EC 80910100 lds R24,L5
01F0 8031 cpi R24,16
01F2 28F4 brsh L64
01F4 .dbline 103
01F4 ; return(1);//若连击时间小于2s则认为是单击
01F4 01E0 ldi R16,1
01F6 A0C0 rjmp L1
01F8 X4:
01F8 .dbline 104
01F8 ; break;
01F8 L63:
01F8 .dbline 105
01F8 ; default:PPK=111;
01F8 8FE6 ldi R24,111
01FA 80930100 sts L3,R24
01FE .dbline 106
01FE ; }
01FE L64:
01FE .dbline 107
01FE ; YYK=0;
01FE 2224 clr R2
0200 20920100 sts L5,R2
0204 .dbline 108
0204 ; }
0204 L61:
0204 .dbline 109
0204 ; return(0);
0204 0027 clr R16
0206 98C0 rjmp L1
0208 L59:
0208 .dbline 111
0208 ; }
0208 ; NK=0;
0208 2224 clr R2
020A 20920000 sts L2,R2
020E .dbline 113
020E ;
020E ; if(PPK!=KEYIN)
020E 20900100 lds R2,L3
0212 2016 cp R2,R16
0214 51F0 breq L69
0216 .dbline 114
0216 ; {
0216 .dbline 115
0216 ; PPK=KEYIN;
0216 00930100 sts L3,R16
021A .dbline 116
021A ; YYK=0;
021A 2224 clr R2
021C 20920100 sts L5,R2
0220 .dbline 117
0220 ; KZT=1;
0220 81E0 ldi R24,1
0222 80930000 sts L4,R24
0226 .dbline 118
0226 ; return(0);
0226 0027 clr R16
0228 87C0 rjmp L1
022A L69:
022A .dbline 120
022A ; }
022A ; if(YYK==200) return(0); //连续按住ok状态,不进行下面处理
022A 80910100 lds R24,L5
022E 883C cpi R24,200
0230 11F4 brne L71
0232 .dbline 120
0232 0027 clr R16
0234 81C0 rjmp L1
0236 L71:
0236 .dbline 121
0236 ; ++YYK;
0236 80910100 lds R24,L5
023A 8F5F subi R24,255 ; addi 1
023C 80930100 sts L5,R24
0240 .dbline 122
0240 ; switch(KZT)
0240 00910000 lds R16,L4
0244 1127 clr R17
0246 0130 cpi R16,1
0248 E0E0 ldi R30,0
024A 1E07 cpc R17,R30
024C 59F0 breq L76
024E 0230 cpi R16,2
0250 E0E0 ldi R30,0
0252 1E07 cpc R17,R30
0254 09F4 brne X7
0256 48C0 rjmp L89
0258 X7:
0258 0330 cpi R16,3
025A E0E0 ldi R30,0
025C 1E07 cpc R17,R30
025E 09F4 brne X8
0260 5BC0 rjmp L93
0262 X8:
0262 69C0 rjmp L73
0264 X5:
0264 .dbline 123
0264 ; {
0264 L76:
0264 .dbline 124
0264 ; case 1: if((PPK==SET && YYK>26))
0264 80910100 lds R24,L3
0268 8530 cpi R24,5
026A 71F4 brne L77
026C 8AE1 ldi R24,26
026E 20900100 lds R2,L5
0272 8215 cp R24,R2
0274 48F4 brsh L77
0276 .dbline 125
0276 ; {
0276 .dbline 126
0276 ; YYK=200;
0276 88EC ldi R24,200
0278 80930100 sts L5,R24
027C .dbline 127
027C ; KEY=PPK;
027C 20900100 lds R2,L3
0280 20920000 sts _KEY,R2
0284 .dbline 128
0284 ; return(2);
0284 02E0 ldi R16,2
0286 58C0 rjmp L1
0288 L77:
0288 .dbline 131
0288 ; }
0288 ;
0288 ; if ( PPK==BEGIN || PPK==END )//PPK==CLEAR ||
0288 80910100 lds R24,L3
028C 8130 cpi R24,1
028E 11F0 breq L81
0290 8230 cpi R24,2
0292 69F4 brne L79
0294 L81:
0294 .dbline 132
0294 ; {
0294 .dbline 133
0294 ; if(YYK!=1) return(0);
0294 80910100 lds R24,L5
0298 8130 cpi R24,1
029A 11F0 breq L82
029C .dbline 133
029C 0027 clr R16
029E 4CC0 rjmp L1
02A0 L82:
02A0 .dbline 134
02A0 ; NOP();
02A0 0000 nop
02A2 .dbline 135
02A2 ; KEY=PPK;
02A2 20900100 lds R2,L3
02A6 20920000 sts _KEY,R2
02AA .dbline 136
02AA ; return(1);
02AA 01E0 ldi R16,1
02AC 45C0 rjmp L1
02AE L79:
02AE .dbline 139
02AE ; }
02AE ; /// ///
02AE ; if(PPK==ADD || PPK==SUB ) // +.-
02AE 80910100 lds R24,L3
02B2 8330 cpi R24,3
02B4 11F0 breq L86
02B6 8430 cpi R24,4
02B8 A9F4 brne L84
02BA L86:
02BA .dbline 140
02BA ; {
02BA .dbline 141
02BA ; KEY=PPK;
02BA 20900100 lds R2,L3
02BE 20920000 sts _KEY,R2
02C2 .dbline 142
02C2 ; KZT=2; YYK=0;
02C2 82E0 ldi R24,2
02C4 80930000 sts L4,R24
02C8 .dbline 142
02C8 2224 clr R2
02CA 20920100 sts L5,R2
02CE .dbline 143
02CE ; if(CHW==0) BIT_80|=0x80;//a.BEEP1=1;
02CE 20900000 lds R2,_CHW
02D2 2220 tst R2
02D4 29F4 brne L87
02D6 .dbline 143
02D6 80910000 lds R24,_BIT_80
02DA 8068 ori R24,128
02DC 80930000 sts _BIT_80,R24
02E0 L87:
02E0 .dbline 144
02E0 ; return(1);
02E0 01E0 ldi R16,1
02E2 2AC0 rjmp L1
02E4 L84:
02E4 .dbline 146
02E4 ; }
02E4 ; return(0);
02E4 0027 clr R16
02E6 28C0 rjmp L1
02E8 L89:
02E8 .dbline 147
02E8 ; case 2: if(YYK!=20 && (PPK==ADD || PPK==SUB ))
02E8 80910100 lds R24,L5
02EC 8431 cpi R24,20
02EE 41F0 breq L90
02F0 80910100 lds R24,L3
02F4 8330 cpi R24,3
02F6 11F0 breq L92
02F8 8430 cpi R24,4
02FA 11F4 brne L90
02FC L92:
02FC .dbline 148
02FC ; return(0);
02FC 0027 clr R16
02FE 1CC0 rjmp L1
0300 L90:
0300 .dbline 149
0300 ; YYK=0;
0300 2224 clr R2
0302 20920100 sts L5,R2
0306 .dbline 150
0306 ; KEY=PPK;
0306 20900100 lds R2,L3
030A 20920000 sts _KEY,R2
030E .dbline 151
030E ; KZT=3;
030E 83E0 ldi R24,3
0310 80930000 sts L4,R24
0314 .dbline 152
0314 ; return(1);
0314 01E0 ldi R16,1
0316 10C0 rjmp L1
0318 L93:
0318 .dbline 153
0318 ; case 3: if (YYK!=10) return(0);
0318 80910100 lds R24,L5
031C 8A30 cpi R24,10
031E 11F0 breq L94
0320 .dbline 153
0320 0027 clr R16
0322 0AC0 rjmp L1
0324 L94:
0324 .dbline 154
0324 ; YYK=0;
0324 2224 clr R2
0326 20920100 sts L5,R2
032A .dbline 155
032A ; KEY=PPK;
032A 20900100 lds R2,L3
032E 20920000 sts _KEY,R2
0332 .dbline 156
0332 ; return(1);
0332 01E0 ldi R16,1
0334 01C0 rjmp L1
0336 L73:
0336 .dbline 158
0336 ; }
0336 ; return 255;
0336 0FEF ldi R16,255
0338 .dbline -2
0338 L1:
0338 00D0 rcall pop_gset2
033A .dbline 0 ; func end
033A 0895 ret
033C .dbsym r i 16 c
033C .dbsym r z 18 c
033C .dbsym r KEYIN 16 c
033C .dbsym r a 20 c
033C .dbsym r c 22 c
033C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -