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

📄 kb.lis

📁 ATmegal128的混合中断编程
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0050                   .dbline 35
 0050           ;                 output++;
 0050 8F5F              subi R24,255    ; addi 1
 0052 80930100          sts _output,R24
 0056                   .dbline 36
 0056           ;                }
 0056 03C0              xjmp L8
 0058           L7:
 0058                   .dbline 38
 0058           ;          else
 0058           ;            output=0;
 0058 2224              clr R2
 005A 20920100          sts _output,R2
 005E           L8:
 005E                   .dbline 39
 005E           ;          return temp;   
 005E                   .dbline -2
 005E           L4:
 005E                   .dbline 0 ; func end
 005E 0895              ret
 0060                   .dbsym r temp 16 c
 0060                   .dbend
 0060                   .dbfunc e init_kb _init_kb fV
                        .even
 0060           _init_kb::
 0060                   .dbline -1
 0060                   .dbline 43
 0060           ;         }          
 0060           ;   }
 0060           ; void init_kb(void)
 0060           ;     {
 0060                   .dbline 44
 0060           ;       EICRB=0x02; 
 0060 82E0              ldi R24,2
 0062 8ABF              out 0x3a,R24
 0064                   .dbline 45
 0064           ;     bitcount = 11;
 0064 8BE0              ldi R24,11
 0066 80934400          sts _bitcount,R24
 006A                   .dbline -2
 006A                   .dbline 46
 006A           ;     }
 006A           L9:
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\work\mega128\mix_exp\kb.c
 0000           L11:
 0000                   .blkb 1
 0001           L12:
 0001                   .blkb 1
 0002           L13:
 0002                   .blkb 1
                        .area text(rom, con, rel)
 006C                   .dbfile C:\work\mega128\mix_exp\kb.c
 006C                   .dbfunc e decode _decode fV
 006C                   .dbsym s shiftup L13 c
 006C                   .dbsym s up L12 c
 006C                   .dbsym s shift L11 c
 006C           ;              i -> R20
 006C           ;             sc -> R22
                        .even
 006C           _decode::
 006C 0E940000          xcall push_gset3
 0070 602F              mov R22,R16
 0072 2297              sbiw R28,2
 0074                   .dbline -1
 0074                   .dbline 48
 0074           ; void decode(unsigned char sc)
 0074           ;     {
 0074                   .dbline 51
 0074           ;       static unsigned char shift,up,shiftup;
 0074           ;         unsigned char i;
 0074           ;         if (sc==0xf0)
 0074 603F              cpi R22,240
 0076 21F4              brne L14
 0078                   .dbline 52
 0078           ;             {
 0078                   .dbline 53
 0078           ;                  up=1;
 0078 81E0              ldi R24,1
 007A 80930100          sts L12,R24
 007E                   .dbline 54
 007E           ;                  return;
 007E 9BC0              xjmp L10
 0080           L14:
 0080                   .dbline 56
 0080           ;                 }
 0080           ;         if (up==1)
 0080 80910100          lds R24,L12
 0084 8130              cpi R24,1
 0086 F1F4              brne L16
 0088                   .dbline 57
 0088           ;                 {
 0088                   .dbline 58
 0088           ;                  up=0;
 0088 2224              clr R2
 008A 20920100          sts L12,R2
 008E                   .dbline 59
 008E           ;                  if ((sc==0x12)|(sc==0x59)) shift=0;
 008E 6231              cpi R22,18
 0090 21F4              brne L20
 0092 81E0              ldi R24,1
 0094 90E0              ldi R25,0
 0096 5C01              movw R10,R24
 0098 02C0              xjmp L21
 009A           L20:
 009A AA24              clr R10
 009C BB24              clr R11
 009E           L21:
 009E 6935              cpi R22,89
 00A0 19F4              brne L22
 00A2 41E0              ldi R20,1
 00A4 50E0              ldi R21,0
 00A6 02C0              xjmp L23
 00A8           L22:
 00A8 4427              clr R20
 00AA 5527              clr R21
 00AC           L23:
 00AC 1501              movw R2,R10
 00AE 242A              or R2,R20
 00B0 352A              or R3,R21
 00B2 2220              tst R2
 00B4 19F4              brne X0
 00B6 3320              tst R3
 00B8 09F4              brne X3
 00BA 7DC0              xjmp L10
 00BC           X3:
 00BC           X0:
 00BC                   .dbline 59
 00BC 2224              clr R2
 00BE 20920000          sts L11,R2
 00C2                   .dbline 60
 00C2           ;                  return;
 00C2 79C0              xjmp L10
 00C4           L16:
 00C4                   .dbline 62
 00C4           ;                 }
 00C4           ;         if(sc==0x71)
 00C4 6137              cpi R22,113
 00C6 91F4              brne L24
 00C8                   .dbline 63
 00C8           ;            {
 00C8                   .dbline 64
 00C8           ;                 ocmj_write(0xf4);
 00C8 04EF              ldi R16,244
 00CA 0E940000          xcall _ocmj_write
 00CE                   .dbline 65
 00CE           ;                 hz_tran(1,1,"将要重新启动");
 00CE 80E0              ldi R24,<L26
 00D0 90E0              ldi R25,>L26
 00D2 8883              std y+0,R24
 00D4 9983              std y+1,R25
 00D6 21E0              ldi R18,1
 00D8 01E0              ldi R16,1
 00DA 0E940000          xcall _hz_tran
 00DE                   .dbline 66
 00DE           ;                 asm("wdr");
 00DE A895              wdr
 00E0                   .dbline 67
 00E0           ;           WDTCR=(1<<WDCE)|(1<<WDE);
 00E0 88E1              ldi R24,24
 00E2 81BD              out 0x21,R24
 00E4                   .dbline 68
 00E4           ;                 WDTCR|=(1<<WDP0)|(1<<WDP1)|(1<<WDP2);//大约2秒
 00E4 81B5              in R24,0x21
 00E6 8760              ori R24,7
 00E8 81BD              out 0x21,R24
 00EA           L27:
 00EA                   .dbline 70
 00EA           L28:
 00EA                   .dbline 69
 00EA           ;                 while(1)
 00EA FFCF              xjmp L27
 00EC           X1:
 00EC                   .dbline 72
 00EC           ;                 ;
 00EC           ;                 //delay_ms(3000);
 00EC           ;                }                 
 00EC           L24:
 00EC                   .dbline 73
 00EC           ;         switch (sc)
 00EC 462F              mov R20,R22
 00EE 5527              clr R21
 00F0 4231              cpi R20,18
 00F2 E0E0              ldi R30,0
 00F4 5E07              cpc R21,R30
 00F6 49F0              breq L33
 00F8 4231              cpi R20,18
 00FA E0E0              ldi R30,0
 00FC 5E07              cpc R21,R30
 00FE 7CF0              brlt L30
 0100           L53:
 0100 4935              cpi R20,89
 0102 E0E0              ldi R30,0
 0104 5E07              cpc R21,R30
 0106 31F0              breq L34
 0108 0AC0              xjmp L30
 010A           X2:
 010A                   .dbline 74
 010A           ;           {
 010A           L33:
 010A                   .dbline 75
 010A           ;                case 0x12:{
 010A                   .dbline 76
 010A           ;                                       shift=1;                
 010A 81E0              ldi R24,1
 010C 80930000          sts L11,R24
 0110                   .dbline 77
 0110           ;                                       shiftup=1;
 0110 80930200          sts L13,R24
 0114                   .dbline 78
 0114           ;                          }                       
 0114           L34:
 0114                   .dbline 79
 0114           ;                case 0x59:{
 0114                   .dbline 80
 0114           ;                                   shift=1;    
 0114 81E0              ldi R24,1
 0116 80930000          sts L11,R24
 011A                   .dbline 81
 011A           ;                                       shiftup=1;
 011A 80930200          sts L13,R24
 011E                   .dbline 82
 011E           ;                          }                       
 011E           L30:
 011E                   .dbline 83
 011E           ;                default:{
 011E                   .dbline 84
 011E           ;                         if (shift==0)
 011E 20900000          lds R2,L11
 0122 2220              tst R2
 0124 29F5              brne L35
 0126                   .dbline 85
 0126           ;                                        {
 0126                   .dbline 86
 0126 4427              clr R20
 0128 01C0              xjmp L40
 012A           L37:
 012A                   .dbline 86
 012A           L38:
 012A                   .dbline 86
 012A 4395              inc R20
 012C           L40:
 012C                   .dbline 86
 012C           ;                                        for(i = 0;unshifted[i][0]!=sc && unshifted[i][0]; i++);
 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 2490              lpm R2,Z
 013C 3324              clr R3
 013E 2616              cp R2,R22
 0140 11F0              breq L41
 0142 2220              tst R2
 0144 91F7              brne L37
 0146           L41:
 0146                   .dbline 87
 0146           ;                      if (unshifted[i][0] == sc)
 0146 82E0              ldi R24,2
 0148 849F              mul R24,R20
 014A F001              movw R30,R0
 014C 80E0              ldi R24,<_unshifted
 014E 90E0              ldi R25,>_unshifted
 0150 E80F              add R30,R24
 0152 F91F              adc R31,R25
 0154 E491              lpm R30,Z
 0156 E617              cp R30,R22
 0158 09F0              breq X4
 015A 2DC0              xjmp L36
 015C           X4:
 015C                   .dbline 88
 015C           ;                                                 put_kbbuff(unshifted[i][1]);   

⌨️ 快捷键说明

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