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

📄 key.lis

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 LIS
字号:
                        .module key.c
                        .area vector(rom, abs)
                        .org 40
 0028 0C940000          jmp _Read_Keybroad
                        .area data(ram, con, rel)
 0000           L2:
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
                        .area text(rom, con, rel)
 0000                   .dbfile E:\software\MP3程序\Keyboard\key.c
 0000                   .dbfunc e Read_Keybroad _Read_Keybroad fV
 0000                   .dbsym s push L2 c
                        .even
 0000           _Read_Keybroad::
 0000 2A92              st -y,R2
 0002 0A93              st -y,R16
 0004 1A93              st -y,R17
 0006 8A93              st -y,R24
 0008 9A93              st -y,R25
 000A EA93              st -y,R30
 000C 2FB6              in R2,0x3f
 000E 2A92              st -y,R2
 0010                   .dbline -1
 0010                   .dbline 17
 0010           ; #include <iom64v.h>
 0010           ; #include <macros.h>
 0010           ; #include "key.h"
 0010           ; #define  uchar unsigned char
 0010           ; #define  uint  unsigned int
 0010           ; 
 0010           ; #define  key1   BIT(4)
 0010           ; #define  key2         BIT(5)
 0010           ; #define  key3   BIT(6)
 0010           ; #define  key4   BIT(7)
 0010           ; 
 0010           ; uchar keybuf;
 0010           ; 
 0010           ; #pragma interrupt_handler Read_Keybroad:11
 0010           ; /******************************************************************************/
 0010           ; void Read_Keybroad(void)
 0010           ; {
 0010                   .dbline 19
 0010           ;  static uchar push = 0;
 0010           ;  TCCR2 = 0X00;
 0010 2224              clr R2
 0012 25BC              out 0x25,R2
 0014                   .dbline 20
 0014           ;  DDRF  &= 0x0f;
 0014 80916100          lds R24,97
 0018 8F70              andi R24,15
 001A 80936100          sts 97,R24
 001E                   .dbline 21
 001E           ;  PORTF |= 0xf0;
 001E 80916200          lds R24,98
 0022 806F              ori R24,240
 0024 80936200          sts 98,R24
 0028                   .dbline 22
 0028           ;  NOP();
 0028 0000              nop
 002A                   .dbline 23
 002A           ;  NOP();
 002A 0000              nop
 002C                   .dbline 25
 002C           ; // Print_str("I,am herer\r\n");
 002C           ;  if((PINF & 0xf0) == 0xf0){
 002C 80B1              in R24,0x0
 002E 807F              andi R24,240
 0030 803F              cpi R24,240
 0032 09F0              breq X2
 0034 4EC0              xjmp L3
 0036           X2:
 0036                   .dbline 25
 0036                   .dbline 26
 0036           ;                                                  DDRF |= 0x80; 
 0036 80916100          lds R24,97
 003A 8068              ori R24,128
 003C 80936100          sts 97,R24
 0040                   .dbline 27
 0040           ;                                                  PORTF &= 0x7f; //输出0
 0040 80916200          lds R24,98
 0044 8F77              andi R24,127
 0046 80936200          sts 98,R24
 004A                   .dbline 28
 004A           ;                                                  NOP();
 004A 0000              nop
 004C                   .dbline 29
 004C           ;                                                  NOP();                                          
 004C 0000              nop
 004E                   .dbline 30
 004E           ;                                                  if((PINF & 0x70) == 0x70){//这里表示S2、S3、S7没有按下
 004E 80B1              in R24,0x0
 0050 8077              andi R24,112
 0052 8037              cpi R24,112
 0054 29F4              brne L5
 0056                   .dbline 30
 0056                   .dbline 31
 0056           ;                                                                                                        push = 0;
 0056 20920000          sts L2,R2
 005A                   .dbline 32
 005A           ;                                                                                                        TCCR2 = 0X05;
 005A 85E0              ldi R24,5
 005C 85BD              out 0x25,R24
 005E                   .dbline 33
 005E           ;                                                                                                        return;
 005E 70C0              xjmp L1
 0060           L5:
 0060                   .dbline 35
 0060           ;                                                                                                       }
 0060           ;                                                 if(push){//键没有释放  
 0060 20900000          lds R2,L2
 0064 2220              tst R2
 0066 19F0              breq L7
 0068                   .dbline 35
 0068                   .dbline 36
 0068           ;                                                           TCCR2 = 0X05;                                                 
 0068 85E0              ldi R24,5
 006A 85BD              out 0x25,R24
 006C                   .dbline 37
 006C           ;                                                               return;
 006C 69C0              xjmp L1
 006E           L7:
 006E                   .dbline 39
 006E           ;                                                                  }
 006E           ;                            switch(PINF & 0x70)
 006E 00B1              in R16,0x0
 0070 1127              clr R17
 0072 0077              andi R16,112
 0074 1070              andi R17,0
 0076 0035              cpi R16,80
 0078 E0E0              ldi R30,0
 007A 1E07              cpc R17,R30
 007C B1F0              breq L13
 007E 80E5              ldi R24,80
 0080 90E0              ldi R25,0
 0082 8017              cp R24,R16
 0084 9107              cpc R25,R17
 0086 2CF0              brlt L16
 0088           L15:
 0088 0033              cpi R16,48
 008A E0E0              ldi R30,0
 008C 1E07              cpc R17,R30
 008E A1F0              breq L14
 0090 1AC0              xjmp L9
 0092           L16:
 0092 0036              cpi R16,96
 0094 E0E0              ldi R30,0
 0096 1E07              cpc R17,R30
 0098 09F0              breq L12
 009A 15C0              xjmp L9
 009C           X0:
 009C                   .dbline 40
 009C           ;                                              {
 009C           L12:
 009C                   .dbline 41
 009C           ;                                                                case 0b01100000: keybuf = UP;   push=1; break;//s1
 009C 84E0              ldi R24,4
 009E 80930000          sts _keybuf,R24
 00A2                   .dbline 41
 00A2 81E0              ldi R24,1
 00A4 80930000          sts L2,R24
 00A8                   .dbline 41
 00A8 11C0              xjmp L10
 00AA           L13:
 00AA                   .dbline 42
 00AA           ;                                                                                        case 0b01010000: keybuf = DOWN; push=1; break;//s6
 00AA 85E0              ldi R24,5
 00AC 80930000          sts _keybuf,R24
 00B0                   .dbline 42
 00B0 81E0              ldi R24,1
 00B2 80930000          sts L2,R24
 00B6                   .dbline 42
 00B6 0AC0              xjmp L10
 00B8           L14:
 00B8                   .dbline 43
 00B8           ;                                                                                        case 0b00110000: keybuf = LIFT; push=1; break;//s6
 00B8 86E0              ldi R24,6
 00BA 80930000          sts _keybuf,R24
 00BE                   .dbline 43
 00BE 81E0              ldi R24,1
 00C0 80930000          sts L2,R24
 00C4                   .dbline 43
 00C4 03C0              xjmp L10
 00C6           L9:
 00C6                   .dbline 44
 00C6           ;                                                                                        default : KEYBUF_NULL;
 00C6 2224              clr R2
 00C8 20920000          sts _keybuf,R2
 00CC                   .dbline 44
 00CC                   .dbline 45
 00CC           ;                                                                                    }
 00CC           L10:
 00CC                   .dbline 46
 00CC           ;                                                 TCCR2 = 0X05;
 00CC 85E0              ldi R24,5
 00CE 85BD              out 0x25,R24
 00D0                   .dbline 47
 00D0           ;                                                 return;
 00D0 37C0              xjmp L1
 00D2           L3:
 00D2                   .dbline 49
 00D2           ;                                                }// if((PINF & 0xf0) == 0xf0)
 00D2           ;  if(push){TCCR2 = 0X05;return;}//键没有释放
 00D2 20900000          lds R2,L2
 00D6 2220              tst R2
 00D8 19F0              breq L17
 00DA                   .dbline 49
 00DA                   .dbline 49
 00DA 85E0              ldi R24,5
 00DC 85BD              out 0x25,R24
 00DE                   .dbline 49
 00DE 30C0              xjmp L1
 00E0           L17:
 00E0                   .dbline 50
 00E0           ;  switch(PINF & 0x70)
 00E0 00B1              in R16,0x0
 00E2 1127              clr R17
 00E4 0077              andi R16,112
 00E6 1070              andi R17,0
 00E8 0035              cpi R16,80
 00EA E0E0              ldi R30,0
 00EC 1E07              cpc R17,R30
 00EE B1F0              breq L23
 00F0 80E5              ldi R24,80
 00F2 90E0              ldi R25,0
 00F4 8017              cp R24,R16
 00F6 9107              cpc R25,R17
 00F8 2CF0              brlt L26
 00FA           L25:
 00FA 0033              cpi R16,48
 00FC E0E0              ldi R30,0
 00FE 1E07              cpc R17,R30
 0100 99F0              breq L24
 0102 19C0              xjmp L19
 0104           L26:
 0104 0036              cpi R16,96
 0106 E0E0              ldi R30,0
 0108 1E07              cpc R17,R30
 010A 09F0              breq L22
 010C 14C0              xjmp L19
 010E           X1:
 010E                   .dbline 51
 010E           ;        {
 010E           L22:
 010E                   .dbline 52
 010E           ;           case 0b01100000: keybuf = RIFT;     push=1;   break;//s4
 010E 83E0              ldi R24,3
 0110 80930000          sts _keybuf,R24
 0114                   .dbline 52
 0114 81E0              ldi R24,1
 0116 80930000          sts L2,R24
 011A                   .dbline 52
 011A 10C0              xjmp L20
 011C           L23:
 011C                   .dbline 53
 011C           ;               case 0b01010000: keybuf = ESC;  push=1;   break;//s5
 011C 81E0              ldi R24,1
 011E 80930000          sts _keybuf,R24
 0122                   .dbline 53
 0122 80930000          sts L2,R24
 0126                   .dbline 53
 0126 0AC0              xjmp L20
 0128           L24:
 0128                   .dbline 54
 0128           ;               case 0b00110000: keybuf = ENTER;push=1;   break;//s8
 0128 82E0              ldi R24,2
 012A 80930000          sts _keybuf,R24
 012E                   .dbline 54
 012E 81E0              ldi R24,1
 0130 80930000          sts L2,R24
 0134                   .dbline 54
 0134 03C0              xjmp L20
 0136           L19:
 0136                   .dbline 55
 0136           ;               default : KEYBUF_NULL;                          
 0136 2224              clr R2
 0138 20920000          sts _keybuf,R2
 013C                   .dbline 55
 013C                   .dbline 56
 013C           ;          }
 013C           L20:
 013C                   .dbline 57
 013C           ;  TCCR2 = 0X05;
 013C 85E0              ldi R24,5
 013E 85BD              out 0x25,R24
 0140                   .dbline 58
 0140           ;  return;
 0140                   .dbline -2
 0140           L1:
 0140 2990              ld R2,y+
 0142 2FBE              out 0x3f,R2
 0144 E991              ld R30,y+
 0146 9991              ld R25,y+
 0148 8991              ld R24,y+
 014A 1991              ld R17,y+
 014C 0991              ld R16,y+
 014E 2990              ld R2,y+
 0150                   .dbline 0 ; func end
 0150 1895              reti
 0152                   .dbend
 0152                   .dbfunc e key_init _key_init fV
                        .even
 0152           _key_init::
 0152                   .dbline -1
 0152                   .dbline 62
 0152           ; }
 0152           ; 
 0152           ; void key_init(void)
 0152           ; {
 0152                   .dbline 63
 0152           ;     TCCR2 = 0x00; //stop
 0152 2224              clr R2
 0154 25BC              out 0x25,R2
 0156                   .dbline 64
 0156           ;       TCNT2 = 0x00; //set count
 0156 24BC              out 0x24,R2
 0158                   .dbline 65
 0158           ;       TIMSK |= 1<<TOIE2;
 0158 87B7              in R24,0x37
 015A 8064              ori R24,64
 015C 87BF              out 0x37,R24
 015E                   .dbline 66
 015E           ;       TCCR2 = 0x05; //stop
 015E 85E0              ldi R24,5
 0160 85BD              out 0x25,R24
 0162                   .dbline 67
 0162           ;       SEI();
 0162 7894              sei
 0164                   .dbline -2
 0164           L27:
 0164                   .dbline 0 ; func end
 0164 0895              ret
 0166                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\software\MP3程序\Keyboard\key.c
 0000           _keybuf::
 0000                   .blkb 1
 0001                   .dbsym e keybuf _keybuf c

⌨️ 快捷键说明

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