📄 kb.lis
字号:
0060 L8:
0060 .dbline 33
; return temp;
0060 1127 clr R17
0062 .dbline -2
0062 L4:
0062 .dbline 0 ; func end
0062 0895 ret
0064 .dbsym r temp 16 c
0064 .dbfunc s init_kb _init_kb fI
.even
0064 _init_kb::
0064 .dbline -1
0064 .dbline 37
; }
; }
; void init_kb(void)
; {
0064 .dbline 38
; EICR=0x02;
0064 82E0 ldi R24,2
0066 8ABF out 0x3a,R24
0068 .dbline 39
; bitcount = 11;
0068 8BE0 ldi R24,11
006A 80934400 sts _bitcount,R24
006E .dbline -2
006E .dbline 40
; }
006E L9:
006E .dbline 0 ; func end
006E 0895 ret
.area bss(ram, con, rel)
0000 .dbfile D:\ICC-AVR\Pc_At\kb.c
0000 L11:
0000 .blkb 1
0001 L12:
0001 .blkb 1
0002 L13:
0002 .blkb 1
.area text(rom, con, rel)
0070 .dbfile D:\ICC-AVR\Pc_At\kb.c
0070 .dbfunc s decode _decode fI
0070 .dbsym s shiftup L13 c
0070 .dbsym s up L12 c
0070 .dbsym s shift L11 c
; i -> R20
; sc -> R22
.even
0070 _decode::
0070 0E940000 xcall push_gset3
0074 602F mov R22,R16
0076 2297 sbiw R28,2
0078 .dbline -1
0078 .dbline 42
; void decode(unsigned char sc)
; {
0078 .dbline 45
; static unsigned char shift,up,shiftup;
; unsigned char i;
; if (sc==0xf0)
0078 603F cpi R22,240
007A 21F4 brne L14
007C .dbline 46
; {
007C .dbline 47
; up=1;
007C 81E0 ldi R24,1
007E 80930100 sts L12,R24
0082 .dbline 48
; return;
0082 C1C0 xjmp L10
0084 L14:
0084 .dbline 50
; }
; if (up==1)
0084 80910100 lds R24,L12
0088 8130 cpi R24,1
008A 01F5 brne L16
008C .dbline 51
; {
008C .dbline 52
; up=0;
008C 2224 clr R2
008E 20920100 sts L12,R2
0092 .dbline 53
; 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 xjmp 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 xjmp 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 A1C0 xjmp L10
00C4 X2:
00C4 X1:
00C4 .dbline 53
00C4 2224 clr R2
00C6 20920000 sts L11,R2
00CA .dbline 54
; return;
00CA 9DC0 xjmp L10
00CC L16:
00CC .dbline 56
; }
; if(sc==0x71)
00CC 6137 cpi R22,113
00CE A9F4 brne L24
00D0 .dbline 57
; {
00D0 .dbline 58
; ocmj_write(0xf4);
00D0 04EF ldi R16,244
00D2 10E0 ldi R17,0
00D4 0E940000 xcall _ocmj_write
00D8 .dbline 59
; hz_tran(1,1,"将要重新启动");
00D8 80E0 ldi R24,<L26
00DA 90E0 ldi R25,>L26
00DC 8883 std y+0,R24
00DE 9983 std y+1,R25
00E0 21E0 ldi R18,1
00E2 30E0 ldi R19,0
00E4 01E0 ldi R16,1
00E6 10E0 ldi R17,0
00E8 0E940000 xcall _hz_tran
00EC .dbline 60
; asm("wdr");
00EC A895 wdr
00EE .dbline 61
; WDTCR = 0x0F;
00EE 8FE0 ldi R24,15
00F0 81BD out 0x21,R24
00F2 .dbline 62
; delay_ms(3000);
00F2 08EB ldi R16,3000
00F4 1BE0 ldi R17,11
00F6 0E940000 xcall _delay_ms
00FA .dbline 63
; }
00FA L24:
00FA .dbline 64
; switch (sc)
00FA 462F mov R20,R22
00FC 5527 clr R21
00FE 4231 cpi R20,18
0100 E0E0 ldi R30,0
0102 5E07 cpc R21,R30
0104 49F0 breq L30
0106 4231 cpi R20,18
0108 E0E0 ldi R30,0
010A 5E07 cpc R21,R30
010C 7CF0 brlt L27
010E L50:
010E 4935 cpi R20,89
0110 E0E0 ldi R30,0
0112 5E07 cpc R21,R30
0114 31F0 breq L31
0116 0AC0 xjmp L27
0118 X0:
0118 .dbline 65
; {
0118 L30:
0118 .dbline 66
; case 0x12:{
0118 .dbline 67
; shift=1;
0118 81E0 ldi R24,1
011A 80930000 sts L11,R24
011E .dbline 68
; shiftup=1;
011E 80930200 sts L13,R24
0122 .dbline 69
; }
0122 L31:
0122 .dbline 70
; case 0x59:{
0122 .dbline 71
; shift=1;
0122 81E0 ldi R24,1
0124 80930000 sts L11,R24
0128 .dbline 72
; shiftup=1;
0128 80930200 sts L13,R24
012C .dbline 73
; }
012C L27:
012C .dbline 74
; default:{
012C .dbline 75
; if (shift==0)
012C 20900000 lds R2,L11
0130 2220 tst R2
0132 09F0 breq X3
0134 35C0 xjmp L32
0136 X3:
0136 .dbline 76
; {
0136 .dbline 77
0136 4427 clr R20
0138 01C0 xjmp L37
013A L34:
013A .dbline 77
013A L35:
013A .dbline 77
013A 4395 inc R20
013C L37:
013C .dbline 77
; for(i = 0;unshifted[i][0]!=sc && unshifted[i][0]; i++);
013C 80E0 ldi R24,<_unshifted
013E 90E0 ldi R25,>_unshifted
0140 242E mov R2,R20
0142 3324 clr R3
0144 220C lsl R2
0146 331C rol R3
0148 280E add R2,R24
014A 391E adc R3,R25
014C E22D mov R30,R2
014E F32D mov R31,R3
0150 C895 lpm
0152 202C mov R2,R0
0154 3324 clr R3
0156 462E mov R4,R22
0158 5524 clr R5
015A 2414 cp R2,R4
015C 3504 cpc R3,R5
015E 21F0 breq L38
0160 2220 tst R2
0162 59F7 brne L34
0164 3320 tst R3
0166 49F7 brne L34
0168 L38:
0168 .dbline 78
; if (unshifted[i][0] == sc)
0168 80E0 ldi R24,<_unshifted
016A 90E0 ldi R25,>_unshifted
016C 242E mov R2,R20
016E 3324 clr R3
0170 220C lsl R2
0172 331C rol R3
0174 280E add R2,R24
0176 391E adc R3,R25
0178 E22D mov R30,R2
017A F32D mov R31,R3
017C C895 lpm
017E 0616 cp R0,R22
0180 09F0 breq X4
0182 41C0 xjmp L33
0184 X4:
0184 .dbline 79
; put_kbbuff(unshifted[i][1]);
0184 80E0 ldi R24,<_unshifted+1
0186 90E0 ldi R25,>_unshifted+1
0188 242E mov R2,R20
018A 3324 clr R3
018C 220C lsl R2
018E 331C rol R3
0190 280E add R2,R24
0192 391E adc R3,R25
0194 E22D mov R30,R2
0196 F32D mov R31,R3
0198 C895 lpm
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -