?? kbc.lis
字號:
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_8515\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_8515\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 + -