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

📄 kbc.lis

📁 单片机pc8535开发程序 (利用iccavr等开发工具开发)
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0056 03C0              rjmp L8
 0058                 L7:
 0058                   .dbline 35
                       ;        else
                       ;          output=0;
 0058 2224              clr R2
 005A 20920100          sts _output,R2
 005E                 L8:
 005E                   .dbline 36
                       ;        return temp;   
 005E                   .dbline -2
 005E                 L4:
 005E                   .dbline 0 ; func end
 005E 0895              ret
 0060                   .dbsym r temp 16 c
 0060                   .dbfunc s init_kb _init_kb fI
                         .even
 0060                 _init_kb::
 0060                   .dbline -1
 0060                   .dbline 41
                       ;       }      
                       ;   }
                       ; //为运行读取PC键盘程序进行初始化  
                       ; void init_kb(void)
                       ;     {
 0060                   .dbline 42
                       ;      MCUCR=0x02;//设置8515的INT0为下降沿触发中断 
 0060 82E0              ldi R24,2
 0062 85BF              out 0x35,R24
 0064                   .dbline 43
                       ;      GIMSK|=(1<<INT0);//使能INT0中断
 0064 8BB7              in R24,0x3b
 0066 8064              ori R24,64
 0068 8BBF              out 0x3b,R24
 006A                   .dbline 44
                       ;      SEI(); //开中断
 006A 7894              sei
 006C                   .dbline 45
                       ;      bitcount = 11;
 006C 8BE0              ldi R24,11
 006E 80934400          sts _bitcount,R24
 0072                   .dbline -2
 0072                   .dbline 46
                       ;     }
 0072                 L9:
 0072                   .dbline 0 ; func end
 0072 0895              ret
                         .area bss(ram, con, rel)
 0000                   .dbfile D:\ICC-AVR\examples.sl\pc_8535\kbc.c
 0000                 L11:
 0000                   .blkb 1
 0001                 L12:
 0001                   .blkb 1
 0002                 L13:
 0002                   .blkb 1
                         .area text(rom, con, rel)
 0074                   .dbfile D:\ICC-AVR\examples.sl\pc_8535\kbc.c
 0074                   .dbfunc s decode _decode fI
 0074                   .dbsym s shiftup L13 c
 0074                   .dbsym s up L12 c
 0074                   .dbsym s shift L11 c
                       ;              i -> R20
                       ;             sc -> R22
                         .even
 0074                 _decode::
 0074 00D0              rcall push_gset3
 0076 602F              mov R22,R16
 0078                   .dbline -1
 0078                   .dbline 49
                       ; //对PC键盘的扫描码进行解码  
                       ; void decode(unsigned char sc)
                       ;     {
 0078                   .dbline 52
                       ;       static unsigned char shift,up,shiftup;
                       ;       unsigned char i;
                       ;       if (sc==0xf0)//按键释放
 0078 603F              cpi R22,240
 007A 21F4              brne L14
 007C                   .dbline 53
                       ;           {
 007C                   .dbline 54
                       ;            up=1;
 007C 81E0              ldi R24,1
 007E 80930100          sts L12,R24
 0082                   .dbline 55
                       ;            return;
 0082 AAC0              rjmp L10
 0084                 L14:
 0084                   .dbline 57
                       ;           }
                       ;       if (up==1)//SHIF键开关
 0084 80910100          lds R24,L12
 0088 8130              cpi R24,1
 008A 01F5              brne L16
 008C                   .dbline 58
                       ;           {
 008C                   .dbline 59
                       ;            up=0;
 008C 2224              clr R2
 008E 20920100          sts L12,R2
 0092                   .dbline 60
                       ;            if ((sc==0x12)|(sc==0x59)) shift=0;
 0092 6231              cpi R22,18
 0094 29F4              brne L20
 0096 81E0              ldi R24,1
 0098 90E0              ldi R25,0
 009A A82E              mov R10,R24
 009C B92E              mov R11,R25
 009E 02C0              rjmp L21
 00A0                 L20:
 00A0 AA24              clr R10
 00A2 BB24              clr R11
 00A4                 L21:
 00A4 6935              cpi R22,89
 00A6 19F4              brne L22
 00A8 41E0              ldi R20,1
 00AA 50E0              ldi R21,0
 00AC 02C0              rjmp L23
 00AE                 L22:
 00AE 4427              clr R20
 00B0 5527              clr R21
 00B2                 L23:
 00B2 2A2C              mov R2,R10
 00B4 3B2C              mov R3,R11
 00B6 242A              or R2,R20
 00B8 352A              or R3,R21
 00BA 2220              tst R2
 00BC 19F4              brne X1
 00BE 3320              tst R3
 00C0 09F4              brne X2
 00C2 8AC0              rjmp L10
 00C4                 X2:
 00C4                 X1:
 00C4                   .dbline 60
 00C4 2224              clr R2
 00C6 20920000          sts L11,R2
 00CA                   .dbline 61
                       ;            return;
 00CA 86C0              rjmp L10
 00CC                 L16:
 00CC                   .dbline 63
                       ;           }        
                       ;       switch (sc)
 00CC 462F              mov R20,R22
 00CE 5527              clr R21
 00D0 4231              cpi R20,18
 00D2 E0E0              ldi R30,0
 00D4 5E07              cpc R21,R30
 00D6 49F0              breq L27
 00D8 4231              cpi R20,18
 00DA E0E0              ldi R30,0
 00DC 5E07              cpc R21,R30
 00DE 7CF0              brlt L24
 00E0                 L47:
 00E0 4935              cpi R20,89
 00E2 E0E0              ldi R30,0
 00E4 5E07              cpc R21,R30
 00E6 31F0              breq L28
 00E8 0AC0              rjmp L24
 00EA                 X0:
 00EA                   .dbline 64
                       ;         {
 00EA                 L27:
 00EA                   .dbline 65
                       ;          case 0x12:{//检测左SHIF键
 00EA                   .dbline 66
                       ;                     shift=1;        
 00EA 81E0              ldi R24,1
 00EC 80930000          sts L11,R24
 00F0                   .dbline 67
                       ;                     shiftup=1;
 00F0 80930200          sts L13,R24
 00F4                   .dbline 68
                       ;                    }                   
 00F4                 L28:
 00F4                   .dbline 69
                       ;          case 0x59:{//检测右SHIF键
 00F4                   .dbline 70
                       ;                     shift=1;    
 00F4 81E0              ldi R24,1
 00F6 80930000          sts L11,R24
 00FA                   .dbline 71
                       ;                     shiftup=1;
 00FA 80930200          sts L13,R24
 00FE                   .dbline 72
                       ;                    }                   
 00FE                 L24:
 00FE                   .dbline 73
                       ;          default:{
 00FE                   .dbline 74
                       ;                   if (shift==0)
 00FE 20900000          lds R2,L11
 0102 2220              tst R2
 0104 09F0              breq X3
 0106 35C0              rjmp L29
 0108                 X3:
 0108                   .dbline 75
                       ;                      {
 0108                   .dbline 76
 0108 4427              clr R20
 010A 01C0              rjmp L34
 010C                 L31:
 010C                   .dbline 76
 010C                 L32:
 010C                   .dbline 76
 010C 4395              inc R20
 010E                 L34:
 010E                   .dbline 76
                       ;                      for(i = 0;unshifted[i][0]!=sc && unshifted[i][0]; i++);
 010E 80E0              ldi R24,<_unshifted
 0110 90E0              ldi R25,>_unshifted
 0112 242E              mov R2,R20
 0114 3324              clr R3
 0116 220C              lsl R2
 0118 331C              rol R3
 011A 280E              add R2,R24
 011C 391E              adc R3,R25
 011E E22D              mov R30,R2
 0120 F32D              mov R31,R3
 0122 C895              lpm
 0124 202C              mov R2,R0
 0126 3324              clr R3
 0128 462E              mov R4,R22
 012A 5524              clr R5
 012C 2414              cp R2,R4
 012E 3504              cpc R3,R5
 0130 21F0              breq L35
 0132 2220              tst R2
 0134 59F7              brne L31
 0136 3320              tst R3
 0138 49F7              brne L31
 013A                 L35:
 013A                   .dbline 77
                       ;                      if (unshifted[i][0] == sc)
 013A 80E0              ldi R24,<_unshifted
 013C 90E0              ldi R25,>_unshifted
 013E 242E              mov R2,R20
 0140 3324              clr R3
 0142 220C              lsl R2
 0144 331C              rol R3
 0146 280E              add R2,R24
 0148 391E              adc R3,R25
 014A E22D              mov R30,R2
 014C F32D              mov R31,R3
 014E C895              lpm
 0150 0616              cp R0,R22
 0152 09F0              breq X4
 0154 41C0              rjmp L30
 0156                 X4:
 0156                   .dbline 78
                       ;                           put_kbbuff(unshifted[i][1]);   
 0156 80E0              ldi R24,<_unshifted+1
 0158 90E0              ldi R25,>_unshifted+1
 015A 242E              mov R2,R20
 015C 3324              clr R3
 015E 220C              lsl R2
 0160 331C              rol R3
 0162 280E              add R2,R24
 0164 391E              adc R3,R25
 0166 E22D              mov R30,R2
 0168 F32D              mov R31,R3

⌨️ 快捷键说明

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