📄 kb.lis
字号:
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 + -