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

📄 ps2key.lis

📁 键盘的控制的运用
💻 LIS
字号:
                        .module PS2KEY.C
                        .area text(rom, con, rel)
 0000                   .dbfile E:\zh\avr\8515板\PS2KEY~1\PS2KEY.C
 0000                   .dbfunc e data _data fV
 0000           ;            num -> R16
                        .even
 0000           _data::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; //ps2 keyboard
 0000           ; //clk=pd2,dat=pb3
 0000           ; #include<io8515v.h>
 0000           ; #include<macros.h>
 0000           ; #define uchar unsigned char
 0000           ; #define uint  unsigned int
 0000           ; unsigned char KeyCode;          //键盘键值
 0000           ; void data()
 0000           ; {
 0000                   .dbline 11
 0000           ;  uchar num;                     //位数
 0000           ;  DDRD=0X00;
 0000 2224              clr R2
 0002 21BA              out 0x11,R2
 0004           L2:
 0004                   .dbline 12
 0004           L3:
 0004                   .dbline 12
 0004           ;  while((PIND|0XFB)==0XFF);      // 等待键盘把时钟第一次拉低
 0004 80B3              in R24,0x10
 0006 8B6F              ori R24,251
 0008 8F3F              cpi R24,255
 000A E1F3              breq L2
 000C                   .dbline 13
 000C           ;  for(num=8;num!=0;num--)        // 把起始位算入
 000C 08E0              ldi R16,8
 000E 18C0              rjmp L8
 0010           L5:
 0010                   .dbline 14
 0010           ;    {DDRD=0X00;
 0010                   .dbline 14
 0010 2224              clr R2
 0012 21BA              out 0x11,R2
 0014           L9:
 0014                   .dbline 15
 0014           L10:
 0014                   .dbline 15
 0014           ;     while((PIND|0XFB)!=0XFF);   // 等待一个有效的下跳沿
 0014 80B3              in R24,0x10
 0016 8B6F              ori R24,251
 0018 8F3F              cpi R24,255
 001A E1F7              brne L9
 001C           L12:
 001C                   .dbline 16
 001C           L13:
 001C                   .dbline 16
 001C           ;       while((PIND|0XFB)==0XFF);
 001C 80B3              in R24,0x10
 001E 8B6F              ori R24,251
 0020 8F3F              cpi R24,255
 0022 E1F3              breq L12
 0024                   .dbline 17
 0024           ;     KeyCode>>=1;                // 按照PS2格式,数据低位在前
 0024 20900000          lds R2,_KeyCode
 0028 2694              lsr R2
 002A 20920000          sts _KeyCode,R2
 002E                   .dbline 18
 002E           ;     if((PINB|0XF7)==0XFF)
 002E 86B3              in R24,0x16
 0030 876F              ori R24,247
 0032 8F3F              cpi R24,255
 0034 21F4              brne L15
 0036                   .dbline 19
 0036           ;     {
 0036                   .dbline 20
 0036           ;       KeyCode|=0x80;          // 得到有效的数据位
 0036 822D              mov R24,R2
 0038 8068              ori R24,128
 003A 80930000          sts _KeyCode,R24
 003E                   .dbline 21
 003E           ;     }
 003E           L15:
 003E                   .dbline 22
 003E           L6:
 003E                   .dbline 13
 003E 0A95              dec R16
 0040           L8:
 0040                   .dbline 13
 0040 0023              tst R16
 0042 31F7              brne L5
 0044                   .dbline 23
 0044           ;   }
 0044           ;   DDRD=0X00; 
 0044 2224              clr R2
 0046 21BA              out 0x11,R2
 0048           L17:
 0048                   .dbline 24
 0048           L18:
 0048                   .dbline 24
 0048           ;   while((PIND|0XFB)!=0XFF);   
 0048 80B3              in R24,0x10
 004A 8B6F              ori R24,251
 004C 8F3F              cpi R24,255
 004E E1F7              brne L17
 0050           L20:
 0050                   .dbline 25
 0050           L21:
 0050                   .dbline 25
 0050           ;   while((PIND|0XFB)==0XFF);  
 0050 80B3              in R24,0x10
 0052 8B6F              ori R24,251
 0054 8F3F              cpi R24,255
 0056 E1F3              breq L20
 0058           L23:
 0058                   .dbline 26
 0058           L24:
 0058                   .dbline 26
 0058           ;   while((PIND|0XFB)!=0XFF);   
 0058 80B3              in R24,0x10
 005A 8B6F              ori R24,251
 005C 8F3F              cpi R24,255
 005E E1F7              brne L23
 0060           L26:
 0060                   .dbline 27
 0060           L27:
 0060                   .dbline 27
 0060           ;   while((PIND|0XFB)==0XFF);
 0060 80B3              in R24,0x10
 0062 8B6F              ori R24,251
 0064 8F3F              cpi R24,255
 0066 E1F3              breq L26
 0068           L29:
 0068                   .dbline 28
 0068           L30:
 0068                   .dbline 28
 0068           ;   while((PIND|0XFB)!=0XFF);
 0068 80B3              in R24,0x10
 006A 8B6F              ori R24,251
 006C 8F3F              cpi R24,255
 006E E1F7              brne L29
 0070                   .dbline -2
 0070           L1:
 0070                   .dbline 0 ; func end
 0070 0895              ret
 0072                   .dbsym r num 16 c
 0072                   .dbend
 0072                   .dbfunc e m8515_init _m8515_init fV
                        .even
 0072           _m8515_init::
 0072                   .dbline -1
 0072                   .dbline 31
 0072           ; }
 0072           ; void m8515_init()
 0072           ; {
 0072                   .dbline 32
 0072           ;  DDRA=0XFF;
 0072 8FEF              ldi R24,255
 0074 8ABB              out 0x1a,R24
 0076                   .dbline 33
 0076           ;  PORTA=0X00;
 0076 2224              clr R2
 0078 2BBA              out 0x1b,R2
 007A                   .dbline 34
 007A           ;  DDRB=0X00;
 007A 27BA              out 0x17,R2
 007C                   .dbline 35
 007C           ;  PORTB=0XFF;
 007C 88BB              out 0x18,R24
 007E                   .dbline 36
 007E           ;  DDRC=0X00;
 007E 24BA              out 0x14,R2
 0080                   .dbline 37
 0080           ;  PORTC=0XFF;
 0080 85BB              out 0x15,R24
 0082                   .dbline 38
 0082           ;  DDRD=0X04;  //clk=1
 0082 84E0              ldi R24,4
 0084 81BB              out 0x11,R24
 0086                   .dbline 39
 0086           ;  PORTD=0XFF;
 0086 8FEF              ldi R24,255
 0088 82BB              out 0x12,R24
 008A                   .dbline -2
 008A           L32:
 008A                   .dbline 0 ; func end
 008A 0895              ret
 008C                   .dbend
 008C                   .dbfunc e main _main fV
                        .even
 008C           _main::
 008C                   .dbline -1
 008C                   .dbline 42
 008C           ; }
 008C           ; void main()
 008C           ; {
 008C                   .dbline 43
 008C           ;  m8515_init();
 008C F2DF              rcall _m8515_init
 008E 09C0              rjmp L35
 0090           L34:
 0090                   .dbline 45
 0090           ;  while(1)
 0090           ;   { 
 0090                   .dbline 46
 0090           ;    data();
 0090 B7DF              rcall _data
 0092                   .dbline 47
 0092           ;    if(KeyCode==0xe0) 
 0092 80910000          lds R24,_KeyCode
 0096 803E              cpi R24,224
 0098 09F4              brne L37
 009A                   .dbline 48
 009A           ;    {data();}
 009A                   .dbline 48
 009A B2DF              rcall _data
 009C                   .dbline 48
 009C           L37:
 009C                   .dbline 49
 009C 20900000          lds R2,_KeyCode
 00A0 2BBA              out 0x1b,R2
 00A2                   .dbline 50
 00A2           L35:
 00A2                   .dbline 44
 00A2 F6CF              rjmp L34
 00A4           X0:
 00A4                   .dbline -2
 00A4           L33:
 00A4                   .dbline 0 ; func end
 00A4 0895              ret
 00A6                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\zh\avr\8515板\PS2KEY~1\PS2KEY.C
 0000           _KeyCode::
 0000                   .blkb 1
 0001                   .dbsym e KeyCode _KeyCode c

⌨️ 快捷键说明

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