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

📄 keyboard.lis

📁 单片机开发资料光盘-双龙-686M.zip
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 01AC           ;                                    {
 01AC                   .dbline 139
 01AC AA24              clr R10
 01AE 01C0              xjmp L51
 01B0           L48:
 01B0                   .dbline 139
 01B0           L49:
 01B0                   .dbline 139
 01B0 A394              inc R10
 01B2           L51:
 01B2                   .dbline 139
 01B2           ;                                        for(i = 0;shifted[i][0]!=sc && shifted[i][0]; i++);
 01B2 82E0              ldi R24,2
 01B4 8A9D              mul R24,R10
 01B6 F001              movw R30,R0
 01B8 80E0              ldi R24,<_shifted
 01BA 90E0              ldi R25,>_shifted
 01BC E80F              add R30,R24
 01BE F91F              adc R31,R25
 01C0 2490              lpm R2,Z
 01C2 3324              clr R3
 01C4 2C14              cp R2,R12
 01C6 11F0              breq L52
 01C8 2220              tst R2
 01CA 91F7              brne L48
 01CC           L52:
 01CC                   .dbline 140
 01CC           ;                      if (shifted[i][0] == sc)
 01CC 82E0              ldi R24,2
 01CE 8A9D              mul R24,R10
 01D0 F001              movw R30,R0
 01D2 80E0              ldi R24,<_shifted
 01D4 90E0              ldi R25,>_shifted
 01D6 E80F              add R30,R24
 01D8 F91F              adc R31,R25
 01DA E491              lpm R30,Z
 01DC EC15              cp R30,R12
 01DE 49F4              brne L53
 01E0                   .dbline 141
 01E0           ;                          {
 01E0                   .dbline 142
 01E0           ;                                                 put_kbbuff(shifted[i][1]);                                              
 01E0 82E0              ldi R24,2
 01E2 8A9D              mul R24,R10
 01E4 F001              movw R30,R0
 01E6 80E0              ldi R24,<_shifted+1
 01E8 90E0              ldi R25,>_shifted+1
 01EA E80F              add R30,R24
 01EC F91F              adc R31,R25
 01EE 0491              lpm R16,Z
 01F0 07DF              xcall _put_kbbuff
 01F2                   .dbline 143
 01F2           ;                                                }                                                               
 01F2           L53:
 01F2                   .dbline 144
 01F2           ;                                        } 
 01F2           L39:
 01F2                   .dbline 145
 01F2           ;                        }                       
 01F2                   .dbline 146
 01F2           ;               }               
 01F2                   .dbline -2
 01F2                   .dbline 147
 01F2           ;     }
 01F2           L19:
 01F2 0E940000          xcall pop_gset5x
 01F6                   .dbline 0 ; func end
 01F6 0895              ret
 01F8                   .dbsym r i 10 c
 01F8                   .dbsym r sc 12 c
 01F8                   .dbend
                        .area vector(rom, abs)
                        .org 8
 0008 0C94FC00          jmp _int1_isr
                        .area text(rom, con, rel)
 01F8                   .dbfile F:\李鹏飞\sl-avrad-m16\键盘演示程序\Keyboard.c
                        .area bss(ram, con, rel)
 0003                   .dbfile F:\李鹏飞\sl-avrad-m16\键盘演示程序\Keyboard.c
 0003           L58:
 0003                   .blkb 1
                        .area text(rom, con, rel)
 01F8                   .dbfile F:\李鹏飞\sl-avrad-m16\键盘演示程序\Keyboard.c
 01F8                   .dbfunc e int1_isr _int1_isr fV
 01F8                   .dbsym s data L58 c
                        .even
 01F8           _int1_isr::
 01F8 0E940000          xcall push_lset
 01FC 0E940000          xcall push_gset3x
 0200                   .dbline -1
 0200                   .dbline 151
 0200           ; #pragma interrupt_handler int1_isr:iv_INT1    
 0200           ; //键盘数据读取中断程序
 0200           ; void int1_isr(void)
 0200           ;    {
 0200                   .dbline 153
 0200           ;     static unsigned char data;        
 0200           ;     switch (bitcount)
 0200 A0904400          lds R10,_bitcount
 0204 BB24              clr R11
 0206 C501              movw R24,R10
 0208 8130              cpi R24,1
 020A E0E0              ldi R30,0
 020C 9E07              cpc R25,R30
 020E E9F0              breq L66
 0210 8230              cpi R24,2
 0212 E0E0              ldi R30,0
 0214 9E07              cpc R25,R30
 0216 99F0              breq L65
 0218 8130              cpi R24,1
 021A E0E0              ldi R30,0
 021C 9E07              cpc R25,R30
 021E 3CF1              brlt L59
 0220           L71:
 0220 C501              movw R24,R10
 0222 8B30              cpi R24,11
 0224 E0E0              ldi R30,0
 0226 9E07              cpc R25,R30
 0228 09F0              breq L62
 022A 21C0              xjmp L59
 022C           X4:
 022C                   .dbline 154
 022C           ;         {
 022C           L62:
 022C                   .dbline 155
 022C           ;          case 11:{
 022C                   .dbline 156
 022C           ;                   if ((PIN_KB&(1<<DATAPIN))!=0)
 022C 829B              sbis 0x10,2
 022E 01C0              rjmp L63
 0230                   .dbline 157
 0230           ;                                    return;
 0230 2EC0              xjmp L57
 0232           L63:
 0232                   .dbline 159
 0232           ;                           else                 
 0232           ;                                   bitcount--;
 0232 80914400          lds R24,_bitcount
 0236 8150              subi R24,1
 0238 80934400          sts _bitcount,R24
 023C                   .dbline 160
 023C           ;                       break;}
 023C 28C0              xjmp L60
 023E           L65:
 023E                   .dbline 161
 023E           ;          case 2:{
 023E                   .dbline 162
 023E           ;                               bitcount--;                        
 023E 80914400          lds R24,_bitcount
 0242 8150              subi R24,1
 0244 80934400          sts _bitcount,R24
 0248                   .dbline 163
 0248           ;                           break;}
 0248 22C0              xjmp L60
 024A           L66:
 024A                   .dbline 164
 024A           ;          case 1:{
 024A                   .dbline 165
 024A           ;                               bitcount--;      
 024A 80914400          lds R24,_bitcount
 024E 8150              subi R24,1
 0250 80934400          sts _bitcount,R24
 0254                   .dbline 166
 0254           ;                               if ((PIN_KB&(1<<DATAPIN))==0)
 0254 8299              sbic 0x10,2
 0256 04C0              rjmp L67
 0258                   .dbline 167
 0258           ;                                   {
 0258                   .dbline 168
 0258           ;                                        bitcount=11;
 0258 8BE0              ldi R24,11
 025A 80934400          sts _bitcount,R24
 025E                   .dbline 169
 025E           ;                                        return;
 025E 17C0              xjmp L57
 0260           L67:
 0260                   .dbline 172
 0260           ;                                       }
 0260           ;                               else
 0260           ;                                  {
 0260                   .dbline 173
 0260           ;                                   bitcount=11;
 0260 8BE0              ldi R24,11
 0262 80934400          sts _bitcount,R24
 0266                   .dbline 174
 0266           ;                           decode(data);
 0266 00910300          lds R16,L58
 026A 2DDF              xcall _decode
 026C                   .dbline 175
 026C           ;                                  }      
 026C                   .dbline 176
 026C           ;                       break;}
 026C 10C0              xjmp L60
 026E           L59:
 026E                   .dbline 177
 026E           ;          default:{
 026E                   .dbline 178
 026E           ;                       data = (data >> 1);
 026E 20900300          lds R2,L58
 0272 2694              lsr R2
 0274 20920300          sts L58,R2
 0278                   .dbline 179
 0278           ;                 if((PIN_KB&(1<<DATAPIN))!=0)
 0278 829B              sbis 0x10,2
 027A 04C0              rjmp L69
 027C                   .dbline 180
 027C           ;                     data|=0x80;
 027C 822D              mov R24,R2
 027E 8068              ori R24,128
 0280 80930300          sts L58,R24
 0284           L69:
 0284                   .dbline 181
 0284 80914400          lds R24,_bitcount
 0288 8150              subi R24,1
 028A 80934400          sts _bitcount,R24
 028E                   .dbline 182
 028E                   .dbline 183
 028E           L60:
 028E                   .dbline -2
 028E                   .dbline 184
 028E           ;                               bitcount--;
 028E           ;                   }           
 028E           ;         }                                             
 028E           ;     } 
 028E           L57:
 028E 0E940000          xcall pop_gset3x
 0292 0E940000          xcall pop_lset
 0296                   .dbline 0 ; func end
 0296 1895              reti
 0298                   .dbend
 0298                   .dbfunc e main _main fV
 0298           ;            key -> R10
                        .even
 0298           _main::
 0298                   .dbline -1
 0298                   .dbline 187
 0298           ; //PC键盘演示程序,SHIFT键和按键同时按下时为大写
 0298           ;   void main()
 0298           ;   {
 0298                   .dbline 190
 0298           ;   unsigned char key;
 0298           ;   
 0298           ;   uart_init();
 0298 E3DE              xcall _uart_init
 029A                   .dbline 191
 029A           ;   init_kb();
 029A 06DF              xcall _init_kb
 029C                   .dbline 192
 029C           ;   puts("双龙电子PC键盘演示程序:");
 029C 00E0              ldi R16,<L73
 029E 10E0              ldi R17,>L73
 02A0 ECDE              xcall _puts
 02A2                   .dbline 193
 02A2           ;   putchar(0x0d);
 02A2 0DE0              ldi R16,13
 02A4 E6DE              xcall _putchar
 02A6                   .dbline 194
 02A6           ;   putchar(0x0d);
 02A6 0DE0              ldi R16,13
 02A8 E4DE              xcall _putchar
 02AA 0DC0              xjmp L75
 02AC           L74:
 02AC                   .dbline 196
 02AC           ;   while(1)
 02AC           ;        {
 02AC                   .dbline 198
 02AC           ;         
 02AC           ;        key=get_char();
 02AC BDDE              xcall _get_char
 02AE A02E              mov R10,R16
 02B0                   .dbline 199
 02B0           ;        if (key!=0)
 02B0 0023              tst R16
 02B2 49F0              breq L77
 02B4                   .dbline 200
 02B4           ;             {
 02B4                   .dbline 201
 02B4           ;             if (key==0x0d)
 02B4 0D30              cpi R16,13
 02B6 29F4              brne L79
 02B8                   .dbline 202
 02B8           ;                 {
 02B8                   .dbline 203
 02B8           ;                 putchar('\n');
 02B8 0AE0              ldi R16,10
 02BA DBDE              xcall _putchar
 02BC                   .dbline 204
 02BC           ;                 putchar(key);
 02BC 0A2D              mov R16,R10
 02BE D9DE              xcall _putchar
 02C0                   .dbline 205
 02C0           ;                 }
 02C0 02C0              xjmp L80
 02C2           L79:
 02C2                   .dbline 207
 02C2           ;             else
 02C2           ;                 putchar(key);
 02C2 0A2D              mov R16,R10
 02C4 D6DE              xcall _putchar
 02C6           L80:
 02C6                   .dbline 208
 02C6           ;             }
 02C6           L77:
 02C6                   .dbline 209
 02C6           L75:
 02C6                   .dbline 195
 02C6 F2CF              xjmp L74
 02C8           X5:
 02C8                   .dbline -2
 02C8                   .dbline 210
 02C8           ;          }
 02C8           ;   }
 02C8           L72:
 02C8                   .dbline 0 ; func end
 02C8 0895              ret
 02CA                   .dbsym r key 10 c
 02CA                   .dbend
                        .area bss(ram, con, rel)
 0004                   .dbfile F:\李鹏飞\sl-avrad-m16\键盘演示程序\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
                        .area data(ram, con, rel)
 0002                   .dbfile F:\李鹏飞\sl-avrad-m16\键盘演示程序\Keyboard.c
 0002           L73:
 0002                   .blkb 24
                        .area idata
 0002 CBABC1FAB5E7D7D35043BCFCC5CCD1DD  .byte 203,171,193,250,181,231,215,211,'P,'C,188,252,197,204,209,221
 0012 CABEB3CCD0F23A00  .byte 202,190,179,204,208,242,58,0
                        .area data(ram, con, rel)
 001A                   .dbfile F:\李鹏飞\sl-avrad-m16\键盘演示程序\Keyboard.c

⌨️ 快捷键说明

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