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

📄 key.lis

📁 AVR基本外设测试程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -