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

📄 keyboard.lis

📁 PS2_KEYBOARD for AVR
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00A2 90E0              ldi R25,0
 00A4 5C01              movw R10,R24
 00A6 02C0              rjmp L21
 00A8           L20:
 00A8 AA24              clr R10
 00AA BB24              clr R11
 00AC           L21:
 00AC 6935              cpi R22,89
 00AE 19F4              brne L22
 00B0 41E0              ldi R20,1
 00B2 50E0              ldi R21,0
 00B4 02C0              rjmp L23
 00B6           L22:
 00B6 4427              clr R20
 00B8 5527              clr R21
 00BA           L23:
 00BA 1501              movw R2,R10
 00BC 242A              or R2,R20
 00BE 352A              or R3,R21
 00C0 2220              tst R2
 00C2 19F4              brne X0
 00C4 3320              tst R3
 00C6 09F4              brne X2
 00C8 69C0              rjmp L10
 00CA           X2:
 00CA           X0:
 00CA                   .dbline 64
 00CA 2224              clr R2
 00CC 20920000          sts L11,R2
 00D0                   .dbline 65
 00D0           ;                  return;
 00D0 65C0              rjmp L10
 00D2           L16:
 00D2                   .dbline 67
 00D2           ;                 }      
 00D2           ;         switch (sc)
 00D2 462F              mov R20,R22
 00D4 5527              clr R21
 00D6 4231              cpi R20,18
 00D8 E0E0              ldi R30,0
 00DA 5E07              cpc R21,R30
 00DC 49F0              breq L27
 00DE 4231              cpi R20,18
 00E0 E0E0              ldi R30,0
 00E2 5E07              cpc R21,R30
 00E4 7CF0              brlt L24
 00E6           L47:
 00E6 4935              cpi R20,89
 00E8 E0E0              ldi R30,0
 00EA 5E07              cpc R21,R30
 00EC 31F0              breq L28
 00EE 0AC0              rjmp L24
 00F0           X1:
 00F0                   .dbline 68
 00F0           ;           {
 00F0           L27:
 00F0                   .dbline 69
 00F0           ;                case 0x12:{
 00F0                   .dbline 70
 00F0           ;                                       shift=1;                
 00F0 81E0              ldi R24,1
 00F2 80930000          sts L11,R24
 00F6                   .dbline 71
 00F6           ;                                       shiftup=1;
 00F6 80930200          sts L13,R24
 00FA                   .dbline 72
 00FA           ;                          }                       
 00FA           L28:
 00FA                   .dbline 73
 00FA           ;                case 0x59:{
 00FA                   .dbline 74
 00FA           ;                                   shift=1;    
 00FA 81E0              ldi R24,1
 00FC 80930000          sts L11,R24
 0100                   .dbline 75
 0100           ;                                       shiftup=1;
 0100 80930200          sts L13,R24
 0104                   .dbline 76
 0104           ;                          }                       
 0104           L24:
 0104                   .dbline 77
 0104           ;                default:{
 0104                   .dbline 78
 0104           ;                         if (shift==0)
 0104 20900000          lds R2,L11
 0108 2220              tst R2
 010A 29F5              brne L29
 010C                   .dbline 79
 010C           ;                                        {
 010C                   .dbline 80
 010C 4427              clr R20
 010E 01C0              rjmp L34
 0110           L31:
 0110                   .dbline 80
 0110           L32:
 0110                   .dbline 80
 0110 4395              inc R20
 0112           L34:
 0112                   .dbline 80
 0112           ;                                        for(i = 0;unshifted[i][0]!=sc && unshifted[i][0]; i++);
 0112 82E0              ldi R24,2
 0114 849F              mul R24,R20
 0116 F001              movw R30,R0
 0118 80E0              ldi R24,<_unshifted
 011A 90E0              ldi R25,>_unshifted
 011C E80F              add R30,R24
 011E F91F              adc R31,R25
 0120 2490              lpm R2,Z
 0122 3324              clr R3
 0124 2616              cp R2,R22
 0126 11F0              breq L35
 0128 2220              tst R2
 012A 91F7              brne L31
 012C           L35:
 012C                   .dbline 81
 012C           ;                      if (unshifted[i][0] == sc)
 012C 82E0              ldi R24,2
 012E 849F              mul R24,R20
 0130 F001              movw R30,R0
 0132 80E0              ldi R24,<_unshifted
 0134 90E0              ldi R25,>_unshifted
 0136 E80F              add R30,R24
 0138 F91F              adc R31,R25
 013A E491              lpm R30,Z
 013C E617              cp R30,R22
 013E 09F0              breq X3
 0140 2DC0              rjmp L30
 0142           X3:
 0142                   .dbline 82
 0142           ;                                                 put_kbbuff(unshifted[i][1]);   
 0142 82E0              ldi R24,2
 0144 849F              mul R24,R20
 0146 F001              movw R30,R0
 0148 80E0              ldi R24,<_unshifted+1
 014A 90E0              ldi R25,>_unshifted+1
 014C E80F              add R30,R24
 014E F91F              adc R31,R25
 0150 0491              lpm R16,Z
 0152 56DF              rcall _put_kbbuff
 0154                   .dbline 83
 0154           ;                                        }
 0154 23C0              rjmp L30
 0156           L29:
 0156                   .dbline 85
 0156           ;                                 else
 0156           ;                                    {
 0156                   .dbline 86
 0156 4427              clr R20
 0158 01C0              rjmp L42
 015A           L39:
 015A                   .dbline 86
 015A           L40:
 015A                   .dbline 86
 015A 4395              inc R20
 015C           L42:
 015C                   .dbline 86
 015C           ;                                        for(i = 0;shifted[i][0]!=sc && shifted[i][0]; i++);
 015C 82E0              ldi R24,2
 015E 849F              mul R24,R20
 0160 F001              movw R30,R0
 0162 80E0              ldi R24,<_shifted
 0164 90E0              ldi R25,>_shifted
 0166 E80F              add R30,R24
 0168 F91F              adc R31,R25
 016A 2490              lpm R2,Z
 016C 3324              clr R3
 016E 2616              cp R2,R22
 0170 11F0              breq L43
 0172 2220              tst R2
 0174 91F7              brne L39
 0176           L43:
 0176                   .dbline 87
 0176           ;                      if (shifted[i][0] == sc)
 0176 82E0              ldi R24,2
 0178 849F              mul R24,R20
 017A F001              movw R30,R0
 017C 80E0              ldi R24,<_shifted
 017E 90E0              ldi R25,>_shifted
 0180 E80F              add R30,R24
 0182 F91F              adc R31,R25
 0184 E491              lpm R30,Z
 0186 E617              cp R30,R22
 0188 49F4              brne L44
 018A                   .dbline 88
 018A           ;                          {
 018A                   .dbline 89
 018A           ;                                                 put_kbbuff(shifted[i][1]);                                              
 018A 82E0              ldi R24,2
 018C 849F              mul R24,R20
 018E F001              movw R30,R0
 0190 80E0              ldi R24,<_shifted+1
 0192 90E0              ldi R25,>_shifted+1
 0194 E80F              add R30,R24
 0196 F91F              adc R31,R25
 0198 0491              lpm R16,Z
 019A 32DF              rcall _put_kbbuff
 019C                   .dbline 90
 019C           ;                                                }                                                               
 019C           L44:
 019C                   .dbline 91
 019C           ;                                        } 
 019C           L30:
 019C                   .dbline 92
 019C           ;                        }                       
 019C                   .dbline 93
 019C           ;               }               
 019C                   .dbline -2
 019C                   .dbline 94
 019C           ;     }
 019C           L10:
 019C 00D0              rcall pop_gset3
 019E                   .dbline 0 ; func end
 019E 0895              ret
 01A0                   .dbsym r i 20 c
 01A0                   .dbsym r sc 22 c
 01A0                   .dbend
                        .area vector(rom, abs)
                        .org 4
 0004 D0C0              rjmp _int1_isr
                        .area text(rom, con, rel)
 01A0                   .dbfile C:\mega8\PS2_KEYBOARD\keyboard.c
                        .area bss(ram, con, rel)
 0003                   .dbfile C:\mega8\PS2_KEYBOARD\keyboard.c
 0003           L49:
 0003                   .blkb 1
                        .area text(rom, con, rel)
 01A0                   .dbfile C:\mega8\PS2_KEYBOARD\keyboard.c
 01A0                   .dbfunc e int1_isr _int1_isr fV
 01A0                   .dbsym s data L49 c
                        .even
 01A0           _int1_isr::
 01A0 00D0              rcall push_lset
 01A2 00D0              rcall push_gset1
 01A4                   .dbline -1
 01A4                   .dbline 97
 01A4           ; #pragma interrupt_handler int1_isr:iv_INT1
 01A4           ; void int1_isr(void)
 01A4           ;    {
 01A4                   .dbline 99
 01A4           ;     static unsigned char data;        
 01A4           ;     switch (bitcount)
 01A4 40914400          lds R20,_bitcount
 01A8 5527              clr R21
 01AA 4130              cpi R20,1
 01AC E0E0              ldi R30,0
 01AE 5E07              cpc R21,R30
 01B0 E1F0              breq L57
 01B2 4230              cpi R20,2
 01B4 E0E0              ldi R30,0
 01B6 5E07              cpc R21,R30
 01B8 91F0              breq L56
 01BA 4130              cpi R20,1
 01BC E0E0              ldi R30,0
 01BE 5E07              cpc R21,R30
 01C0 34F1              brlt L50
 01C2           L62:
 01C2 4B30              cpi R20,11
 01C4 E0E0              ldi R30,0
 01C6 5E07              cpc R21,R30
 01C8 09F0              breq L53
 01CA 21C0              rjmp L50
 01CC           X4:
 01CC                   .dbline 100
 01CC           ;         {
 01CC           L53:
 01CC                   .dbline 101
 01CC           ;          case 11:{
 01CC                   .dbline 102
 01CC           ;                   if ((PIN_KB&(1<<DATAPIN))!=0)
 01CC 829B              sbis 0x10,2
 01CE 01C0              rjmp L54
 01D0                   .dbline 103
 01D0           ;                                    return;
 01D0 2EC0              rjmp L48
 01D2           L54:
 01D2                   .dbline 105
 01D2           ;                           else                 
 01D2           ;                                   bitcount--;
 01D2 80914400          lds R24,_bitcount
 01D6 8150              subi R24,1
 01D8 80934400          sts _bitcount,R24
 01DC                   .dbline 106
 01DC           ;                       break;}
 01DC 28C0              rjmp L51
 01DE           L56:
 01DE                   .dbline 107
 01DE           ;          case 2:{
 01DE                   .dbline 108
 01DE           ;                               bitcount--;                        
 01DE 80914400          lds R24,_bitcount
 01E2 8150              subi R24,1
 01E4 80934400          sts _bitcount,R24
 01E8                   .dbline 109
 01E8           ;                           break;}
 01E8 22C0              rjmp L51
 01EA           L57:
 01EA                   .dbline 110
 01EA           ;          case 1:{
 01EA                   .dbline 111
 01EA           ;                               bitcount--;      
 01EA 80914400          lds R24,_bitcount
 01EE 8150              subi R24,1
 01F0 80934400          sts _bitcount,R24
 01F4                   .dbline 112
 01F4           ;                               if ((PIN_KB&(1<<DATAPIN))==0)
 01F4 8299              sbic 0x10,2
 01F6 04C0              rjmp L58
 01F8                   .dbline 113
 01F8           ;                                   {
 01F8                   .dbline 114
 01F8           ;                                        bitcount=11;
 01F8 8BE0              ldi R24,11
 01FA 80934400          sts _bitcount,R24
 01FE                   .dbline 115
 01FE           ;                                        return;
 01FE 17C0              rjmp L48
 0200           L58:
 0200                   .dbline 118
 0200           ;                                       }
 0200           ;                               else
 0200           ;                                  {
 0200                   .dbline 119
 0200           ;                                   bitcount=11;
 0200 8BE0              ldi R24,11
 0202 80934400          sts _bitcount,R24
 0206                   .dbline 120
 0206           ;                           decode(data);
 0206 00910300          lds R16,L49
 020A 39DF              rcall _decode
 020C                   .dbline 121
 020C           ;                                  }      
 020C                   .dbline 122
 020C           ;                       break;}
 020C 10C0              rjmp L51
 020E           L50:
 020E                   .dbline 123
 020E           ;          default:{
 020E                   .dbline 124
 020E           ;                       data = (data >> 1);
 020E 20900300          lds R2,L49
 0212 2694              lsr R2
 0214 20920300          sts L49,R2
 0218                   .dbline 125
 0218           ;                 if((PIN_KB&(1<<DATAPIN))!=0)
 0218 829B              sbis 0x10,2
 021A 04C0              rjmp L60
 021C                   .dbline 126
 021C           ;                     data|=0x80;
 021C 822D              mov R24,R2
 021E 8068              ori R24,128
 0220 80930300          sts L49,R24
 0224           L60:
 0224                   .dbline 127
 0224 80914400          lds R24,_bitcount
 0228 8150              subi R24,1
 022A 80934400          sts _bitcount,R24
 022E                   .dbline 128
 022E                   .dbline 129
 022E           L51:
 022E                   .dbline -2
 022E                   .dbline 130
 022E           ;                               bitcount--;
 022E           ;                   }           
 022E           ;         }                                             
 022E           ;     } 
 022E           L48:
 022E 00D0              rcall pop_gset1
 0230 00D0              rcall pop_lset
 0232                   .dbline 0 ; func end
 0232 1895              reti
 0234                   .dbend
                        .area bss(ram, con, rel)
 0004                   .dbfile C:\mega8\PS2_KEYBOARD\keyboard.c
 0004           _kb_buffer::
 0004                   .blkb 64
 0044                   .dbsym e kb_buffer _kb_buffer A[64:64]c
 0044           _bitcount::
 0044                   .blkb 1
 0045                   .dbsym e bitcount _bitcount c

⌨️ 快捷键说明

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