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

📄 keyboard.lis

📁 PS2_KEYBOARD for AVR
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module keyboard.c
                        .area lit(rom, con, rel)
 0000           _unshifted::
 0000 0D09              .byte 13,9
 0002 0E60              .byte 14,96
 0004 1571              .byte 21,'q
 0006 1631              .byte 22,49
 0008 1A7A              .byte 26,'z
 000A 1B73              .byte 27,'s
 000C 1C61              .byte 28,'a
 000E 1D77              .byte 29,'w
 0010 1E32              .byte 30,50
 0012 2163              .byte 33,'c
 0014 2278              .byte 34,'x
 0016 2364              .byte 35,'d
 0018 2465              .byte 36,'e
 001A 2534              .byte 37,52
 001C 2633              .byte 38,51
 001E 2920              .byte 41,32
 0020 2A76              .byte 42,'v
 0022 2B66              .byte 43,'f
 0024 2C74              .byte 44,'t
 0026 2D72              .byte 45,'r
 0028 2E35              .byte 46,53
 002A 316E              .byte 49,'n
 002C 3262              .byte 50,'b
 002E 3368              .byte 51,'h
 0030 3467              .byte 52,'g
 0032 3579              .byte 53,'y
 0034 3636              .byte 54,54
 0036 392C              .byte 57,44
 0038 3A6D              .byte 58,'m
 003A 3B6A              .byte 59,'j
 003C 3C75              .byte 60,'u
 003E 3D37              .byte 61,55
 0040 3E38              .byte 62,56
 0042 412C              .byte 'A,44
 0044 426B              .byte 'B,'k
 0046 4369              .byte 'C,'i
 0048 446F              .byte 'D,'o
 004A 4530              .byte 'E,48
 004C 4639              .byte 'F,57
 004E 492E              .byte 'I,46
 0050 4A2F              .byte 'J,47
 0052 4B6C              .byte 'K,'l
 0054 4C3B              .byte 'L,59
 0056 4D70              .byte 'M,'p
 0058 4E2D              .byte 'N,45
 005A 5227              .byte 'R,39
 005C 545B              .byte 'T,91
 005E 553D              .byte 'U,61
 0060 5A0D              .byte 'Z,13
 0062 5B5D              .byte 91,93
 0064 5D5C              .byte 93,92
 0066 613C              .byte 'a,60
 0068 6608              .byte 'f,8
 006A 6931              .byte 'i,49
 006C 6B34              .byte 'k,52
 006E 6C37              .byte 'l,55
 0070 7030              .byte 'p,48
 0072 712C              .byte 'q,44
 0074 7232              .byte 'r,50
 0076 7335              .byte 's,53
 0078 7436              .byte 't,54
 007A 7538              .byte 'u,56
 007C 792B              .byte 'y,43
 007E 7A33              .byte 'z,51
 0080 7B2D              .byte 123,45
 0082 7C2A              .byte 124,42
 0084 7D39              .byte 125,57
 0086 0000              .byte 0,0
 0088                   .dbfile C:\mega8\PS2_KEYBOARD/scancodes.h
 0088                   .dbsym e unshifted _unshifted A[136:68:2]c
 0088           _shifted::
 0088 0D09              .byte 13,9
 008A 0E7E              .byte 14,126
 008C 1551              .byte 21,'Q
 008E 1621              .byte 22,33
 0090 1A5A              .byte 26,'Z
 0092 1B53              .byte 27,'S
 0094 1C41              .byte 28,'A
 0096 1D57              .byte 29,'W
 0098 1E40              .byte 30,64
 009A 2143              .byte 33,'C
 009C 2258              .byte 34,'X
 009E 2344              .byte 35,'D
 00A0 2445              .byte 36,'E
 00A2 2524              .byte 37,36
 00A4 2623              .byte 38,35
 00A6 2920              .byte 41,32
 00A8 2A56              .byte 42,'V
 00AA 2B46              .byte 43,'F
 00AC 2C54              .byte 44,'T
 00AE 2D52              .byte 45,'R
 00B0 2E25              .byte 46,37
 00B2 314E              .byte 49,'N
 00B4 3242              .byte 50,'B
 00B6 3348              .byte 51,'H
 00B8 3447              .byte 52,'G
 00BA 3559              .byte 53,'Y
 00BC 365E              .byte 54,94
 00BE 394C              .byte 57,'L
 00C0 3A4D              .byte 58,'M
 00C2 3B4A              .byte 59,'J
 00C4 3C55              .byte 60,'U
 00C6 3D26              .byte 61,38
 00C8 3E2A              .byte 62,42
 00CA 413C              .byte 'A,60
 00CC 424B              .byte 'B,'K
 00CE 4349              .byte 'C,'I
 00D0 444F              .byte 'D,'O
 00D2 4529              .byte 'E,41
 00D4 4628              .byte 'F,40
 00D6 493E              .byte 'I,62
 00D8 4A3F              .byte 'J,63
 00DA 4B4C              .byte 'K,'L
 00DC 4C3A              .byte 'L,58
 00DE 4D50              .byte 'M,'P
 00E0 4E5F              .byte 'N,95
 00E2 5222              .byte 'R,34
 00E4 547B              .byte 'T,123
 00E6 552B              .byte 'U,43
 00E8 5A0D              .byte 'Z,13
 00EA 5B7D              .byte 91,125
 00EC 5D7C              .byte 93,124
 00EE 613E              .byte 'a,62
 00F0 6608              .byte 'f,8
 00F2 6931              .byte 'i,49
 00F4 6B34              .byte 'k,52
 00F6 6C37              .byte 'l,55
 00F8 7030              .byte 'p,48
 00FA 712C              .byte 'q,44
 00FC 7232              .byte 'r,50
 00FE 7335              .byte 's,53
 0100 7436              .byte 't,54
 0102 7538              .byte 'u,56
 0104 792B              .byte 'y,43
 0106 7A33              .byte 'z,51
 0108 7B2D              .byte 123,45
 010A 7C2A              .byte 124,42
 010C 7D39              .byte 125,57
 010E 0000              .byte 0,0
 0110                   .dbsym e shifted _shifted A[136:68:2]c
                        .area data(ram, con, rel)
 0000                   .dbfile C:\mega8\PS2_KEYBOARD/scancodes.h
 0000           _input::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile C:\mega8\PS2_KEYBOARD/scancodes.h
 0001                   .dbfile C:\mega8\PS2_KEYBOARD\keyboard.c
 0001                   .dbsym e input _input c
 0001           _output::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile C:\mega8\PS2_KEYBOARD\keyboard.c
 0002                   .dbsym e output _output c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\mega8\PS2_KEYBOARD\keyboard.c
 0000                   .dbfunc e put_kbbuff _put_kbbuff fV
 0000           ;              c -> R16
                        .even
 0000           _put_kbbuff::
 0000                   .dbline -1
 0000                   .dbline 19
 0000           ; /******************************************/
 0000           ; /*           广州天河双龙电子公司         */
 0000           ; /*           http://www.sl.com.cn         */
 0000           ; /*              PS2键盘驱动程序           */
 0000           ; /*            作者:ntzwq@wx88.net         */
 0000           ; /*               2002年5月11日            */
 0000           ; /*  目标MCU:MEGA8   晶振:外部(EXT) 8MHZ   */
 0000           ; /******************************************/
 0000           ; #include <iom8v.h>
 0000           ; #include "pindefs.h"
 0000           ; #include "scancodes.h"
 0000           ; #include <macros.h>
 0000           ; #define BUFF_SIZE 64
 0000           ; unsigned char bitcount;  
 0000           ; unsigned char kb_buffer[BUFF_SIZE];
 0000           ; unsigned char input=0;
 0000           ; unsigned char output=0;
 0000           ; void put_kbbuff(unsigned char c)
 0000           ;  {
 0000                   .dbline 20
 0000           ;   kb_buffer[input]=c;
 0000 80E0              ldi R24,<_kb_buffer
 0002 90E0              ldi R25,>_kb_buffer
 0004 E0910000          lds R30,_input
 0008 FF27              clr R31
 000A E80F              add R30,R24
 000C F91F              adc R31,R25
 000E 0083              std z+0,R16
 0010                   .dbline 21
 0010           ;   if (input<(BUFF_SIZE-1))
 0010 80910000          lds R24,_input
 0014 8F33              cpi R24,63
 0016 20F4              brsh L2
 0018                   .dbline 22
 0018           ;      input++; 
 0018 8F5F              subi R24,255    ; addi 1
 001A 80930000          sts _input,R24
 001E 03C0              rjmp L3
 0020           L2:
 0020                   .dbline 24
 0020 2224              clr R2
 0022 20920000          sts _input,R2
 0026           L3:
 0026                   .dbline -2
 0026                   .dbline 25
 0026           ;   else
 0026           ;      input=0;  
 0026           ;  }
 0026           L1:
 0026                   .dbline 0 ; func end
 0026 0895              ret
 0028                   .dbsym r c 16 c
 0028                   .dbend
 0028                   .dbfunc e getchar _getchar fc
 0028           ;           temp -> R16
                        .even
 0028           _getchar::
 0028                   .dbline -1
 0028                   .dbline 27
 0028           ; unsigned char getchar(void)
 0028           ;   {
 0028                   .dbline 29
 0028           ;    unsigned char temp;
 0028           ;    if(output==input)
 0028 20900000          lds R2,_input
 002C 30900100          lds R3,_output
 0030 3214              cp R3,R2
 0032 11F4              brne L5
 0034                   .dbline 30
 0034           ;        return 0;
 0034 0027              clr R16
 0036 13C0              rjmp L4
 0038           L5:
 0038                   .dbline 32
 0038           ;    else
 0038           ;       {
 0038                   .dbline 33
 0038           ;          temp=kb_buffer[output];
 0038 80E0              ldi R24,<_kb_buffer
 003A 90E0              ldi R25,>_kb_buffer
 003C E0910100          lds R30,_output
 0040 FF27              clr R31
 0042 E80F              add R30,R24
 0044 F91F              adc R31,R25
 0046 0081              ldd R16,z+0
 0048                   .dbline 34
 0048           ;          if(output<(BUFF_SIZE-1))
 0048 80910100          lds R24,_output
 004C 8F33              cpi R24,63
 004E 20F4              brsh L7
 0050                   .dbline 35
 0050           ;            {
 0050                   .dbline 36
 0050           ;                 output++;
 0050 8F5F              subi R24,255    ; addi 1
 0052 80930100          sts _output,R24
 0056                   .dbline 37
 0056           ;                }
 0056 03C0              rjmp L8
 0058           L7:
 0058                   .dbline 39
 0058           ;          else
 0058           ;            output=0;
 0058 2224              clr R2
 005A 20920100          sts _output,R2
 005E           L8:
 005E                   .dbline 40
 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 44
 0060           ;         }          
 0060           ;   }
 0060           ; void init_kb(void)
 0060           ;     {
 0060                   .dbline 45
 0060           ;        PIN_DIR&=~((1<<CLOCK)|(1<<DATAPIN));
 0060 81B3              in R24,0x11
 0062 837F              andi R24,243
 0064 81BB              out 0x11,R24
 0066                   .dbline 46
 0066           ;        PORT_KB|=(1<<CLOCK)|(1<<DATAPIN);
 0066 82B3              in R24,0x12
 0068 8C60              ori R24,12
 006A 82BB              out 0x12,R24
 006C                   .dbline 47
 006C           ;        MCUCR = 0x08;  
 006C 88E0              ldi R24,8
 006E 85BF              out 0x35,R24
 0070                   .dbline 48
 0070           ;      GICR  = 0x80;
 0070 80E8              ldi R24,128
 0072 8BBF              out 0x3b,R24
 0074                   .dbline 49
 0074           ;      SEI();
 0074 7894              sei
 0076                   .dbline 50
 0076           ;      bitcount = 11;
 0076 8BE0              ldi R24,11
 0078 80934400          sts _bitcount,R24
 007C                   .dbline -2
 007C                   .dbline 51
 007C           ;     }
 007C           L9:
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\mega8\PS2_KEYBOARD\keyboard.c
 0000           L11:
 0000                   .blkb 1
 0001           L12:
 0001                   .blkb 1
 0002           L13:
 0002                   .blkb 1
                        .area text(rom, con, rel)
 007E                   .dbfile C:\mega8\PS2_KEYBOARD\keyboard.c
 007E                   .dbfunc e decode _decode fV
 007E                   .dbsym s shiftup L13 c
 007E                   .dbsym s up L12 c
 007E                   .dbsym s shift L11 c
 007E           ;              i -> R20
 007E           ;             sc -> R22
                        .even
 007E           _decode::
 007E 00D0              rcall push_gset3
 0080 602F              mov R22,R16
 0082                   .dbline -1
 0082                   .dbline 53
 0082           ; void decode(unsigned char sc)
 0082           ;     {
 0082                   .dbline 56
 0082           ;       static unsigned char shift,up,shiftup;
 0082           ;         unsigned char i;
 0082           ;         if (sc==0xf0)
 0082 603F              cpi R22,240
 0084 21F4              brne L14
 0086                   .dbline 57
 0086           ;             {
 0086                   .dbline 58
 0086           ;                  up=1;
 0086 81E0              ldi R24,1
 0088 80930100          sts L12,R24
 008C                   .dbline 59
 008C           ;                  return;
 008C 87C0              rjmp L10
 008E           L14:
 008E                   .dbline 61
 008E           ;                 }
 008E           ;         if (up==1)
 008E 80910100          lds R24,L12
 0092 8130              cpi R24,1
 0094 F1F4              brne L16
 0096                   .dbline 62
 0096           ;                 {
 0096                   .dbline 63
 0096           ;                  up=0;
 0096 2224              clr R2
 0098 20920100          sts L12,R2
 009C                   .dbline 64
 009C           ;                  if ((sc==0x12)|(sc==0x59)) shift=0;
 009C 6231              cpi R22,18
 009E 21F4              brne L20
 00A0 81E0              ldi R24,1

⌨️ 快捷键说明

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