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

📄 key.lis

📁 AVR基本外设测试程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module key.c
                        .area data(ram, con, rel)
 0000           L2:
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001           L3:
 0001                   .blkb 1
                        .area idata
 0001 6F                .byte 111
                        .area data(ram, con, rel)
                        .area bss(ram, con, rel)
 0000           L4:
 0000                   .blkb 1
 0001           L5:
 0001                   .blkb 1
 0002           L6:
 0002                   .blkb 1
                        .area data(ram, con, rel)
 0002           L7:
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
                        .area text(rom, con, rel)
 0000                   .dbfile C:\avr3\key.c
 0000                   .dbfunc e key_t2 _key_t2 fc
 0000                   .dbsym s key_i L7 c
 0000                   .dbsym s NKEY_n L6 c
 0000                   .dbsym s YYK L5 c
 0000                   .dbsym s KZT L4 c
 0000                   .dbsym s PPK L3 c
 0000                   .dbsym s NK L2 c
 0000           ;              i -> R16
 0000           ;              z -> R18
 0000           ;          KEYIN -> R16
 0000           ;              a -> R20
 0000           ;              c -> R22
                        .even
 0000           _key_t2::
 0000 00D0              rcall push_gset2
 0002                   .dbline -1
 0002                   .dbline 3
 0002           ; #include"sga.h"  
 0002           ; unsigned char key_t2(void)
 0002           ; {
 0002                   .dbline 12
 0002           ;       static unsigned char   NK=0,
 0002           ;                                  PPK=111,
 0002           ;                                  KZT,
 0002           ;                                    YYK,
 0002           ;                                    NKEY_n,
 0002           ;                                  key_i=0;
 0002           ;                                                         
 0002           ;       unsigned char   a,c, KEYIN,z,i;
 0002           ;     z=0;
 0002 2227              clr R18
 0004                   .dbline 13
 0004           ;       DDRC|=0X3E;//0011 1110 PC1,PC2,PC3,PC4,PC5设为输出
 0004 84B3              in R24,0x14
 0006 8E63              ori R24,62
 0008 84BB              out 0x14,R24
 000A                   .dbline 14
 000A           ;       PC5_1;PC4_1;PC3_1;   //PC3,PC4,PC5输出为1
 000A AD9A              sbi 0x15,5
 000C                   .dbline 14
 000C AC9A              sbi 0x15,4
 000E                   .dbline 14
 000E AB9A              sbi 0x15,3
 0010                   .dbline 15
 0010           ;       NOP();NOP();NOP();NOP();NOP();NOP();
 0010 0000              nop
 0012                   .dbline 15
 0012 0000              nop
 0014                   .dbline 15
 0014 0000              nop
 0016                   .dbline 15
 0016 0000              nop
 0018                   .dbline 15
 0018 0000              nop
 001A                   .dbline 15
 001A 0000              nop
 001C                   .dbline 16
 001C           ;     switch(key_i)
 001C 00910200          lds R16,L7
 0020 1127              clr R17
 0022 0030              cpi R16,0
 0024 0107              cpc R16,R17
 0026 29F0              breq L11
 0028           X0:
 0028 0130              cpi R16,1
 002A E0E0              ldi R30,0
 002C 1E07              cpc R17,R30
 002E 21F0              breq L12
 0030 07C0              rjmp L8
 0032           X1:
 0032                   .dbline 17
 0032           ;       {
 0032           L11:
 0032                   .dbline 18
 0032           ;               case 0:PC2_1;PC1_0;  break;
 0032 AA9A              sbi 0x15,2
 0034                   .dbline 18
 0034 A898              cbi 0x15,0
 0036                   .dbline 18
 0036 04C0              rjmp L9
 0038           L12:
 0038                   .dbline 19
 0038           ;               case 1:PC2_0;PC1_1;  break; 
 0038 85B3              in R24,0x15
 003A 8C7F              andi R24,252
 003C 85BB              out 0x15,R24
 003E                   .dbline 19
 003E A99A              sbi 0x15,1
 0040                   .dbline 19
 0040           L8:
 0040           L9:
 0040                   .dbline 21
 0040           ;       }
 0040           ;       key_i++;
 0040 80910200          lds R24,L7
 0044 8F5F              subi R24,255    ; addi 1
 0046 80930200          sts L7,R24
 004A                   .dbline 22
 004A           ;       NOP();NOP();NOP();NOP();NOP();NOP();
 004A 0000              nop
 004C                   .dbline 22
 004C 0000              nop
 004E                   .dbline 22
 004E 0000              nop
 0050                   .dbline 22
 0050 0000              nop
 0052                   .dbline 22
 0052 0000              nop
 0054                   .dbline 22
 0054 0000              nop
 0056                   .dbline 23
 0056           ;       if(key_i==2)    key_i=0;
 0056 8230              cpi R24,2
 0058 19F4              brne L13
 005A                   .dbline 23
 005A 2224              clr R2
 005C 20920200          sts L7,R2
 0060           L13:
 0060                   .dbline 25
 0060           ;       
 0060           ;      DDRC&=0XC7;//1100 0111
 0060 84B3              in R24,0x14
 0062 877C              andi R24,199
 0064 84BB              out 0x14,R24
 0066                   .dbline 26
 0066           ;        i=PORTC;
 0066 05B3              in R16,0x15
 0068                   .dbline 27
 0068           ;        i=i&0x38;
 0068 0873              andi R16,56
 006A                   .dbline 28
 006A           ;            if(i==0x18)//PC3,PC4,PC5中有一个为0
 006A 0831              cpi R16,24
 006C 11F4              brne L15
 006E                   .dbline 29
 006E           ;       {
 006E                   .dbline 30
 006E           ;               a=3;
 006E 43E0              ldi R20,3
 0070                   .dbline 31
 0070           ;       }else
 0070 09C0              rjmp L16
 0072           L15:
 0072                   .dbline 32
 0072           ;            if(i==0x28)
 0072 0832              cpi R16,40
 0074 11F4              brne L17
 0076                   .dbline 33
 0076           ;       {
 0076                   .dbline 34
 0076           ;               a=4;
 0076 44E0              ldi R20,4
 0078                   .dbline 35
 0078           ;       }else
 0078 05C0              rjmp L18
 007A           L17:
 007A                   .dbline 36
 007A           ;               if(i==0x30)
 007A 0033              cpi R16,48
 007C 11F4              brne L19
 007E                   .dbline 37
 007E           ;       {
 007E                   .dbline 38
 007E           ;               a=5;
 007E 45E0              ldi R20,5
 0080                   .dbline 39
 0080           ;       }else            
 0080 01C0              rjmp L20
 0082           L19:
 0082                   .dbline 40
 0082           ;       {                
 0082                   .dbline 41
 0082           ;               a=0;
 0082 4427              clr R20
 0084                   .dbline 42
 0084           ;       }
 0084           L20:
 0084           L18:
 0084           L16:
 0084                   .dbline 44
 0084           ; 
 0084           ;       a=a*10+key_i;
 0084 8AE0              ldi R24,10
 0086 849F              mul R24,R20
 0088 402D              mov R20,R0
 008A 20900200          lds R2,L7
 008E 420D              add R20,R2
 0090                   .dbline 45
 0090           ;       if(a<20)
 0090 4431              cpi R20,20
 0092 D8F4              brsh L21
 0094                   .dbline 46
 0094           ;       {
 0094                   .dbline 47
 0094           ;               NKEY_n++;
 0094 80910200          lds R24,L6
 0098 8F5F              subi R24,255    ; addi 1
 009A 80930200          sts L6,R24
 009E                   .dbline 48
 009E           ;         if(NKEY_n==4)
 009E 8430              cpi R24,4
 00A0 09F0              breq X6
 00A2 80C0              rjmp L22
 00A4           X6:
 00A4                   .dbline 49
 00A4           ;         {
 00A4                   .dbline 51
 00A4           ; 
 00A4           ;             NKEY_n=0;   z=1;
 00A4 2224              clr R2
 00A6 20920200          sts L6,R2
 00AA                   .dbline 51
 00AA 21E0              ldi R18,1
 00AC                   .dbline 52
 00AC           ;             for(a=0;a!=14;a++)
 00AC 4427              clr R20
 00AE 09C0              rjmp L28
 00B0           L25:
 00B0                   .dbline 53
 00B0 80E0              ldi R24,<_KKEY_n
 00B2 90E0              ldi R25,>_KKEY_n
 00B4 E42F              mov R30,R20
 00B6 FF27              clr R31
 00B8 E80F              add R30,R24
 00BA F91F              adc R31,R25
 00BC 2224              clr R2
 00BE 2082              std z+0,R2
 00C0           L26:
 00C0                   .dbline 52
 00C0 4395              inc R20
 00C2           L28:
 00C2                   .dbline 52
 00C2 4E30              cpi R20,14
 00C4 A9F7              brne L25
 00C6                   .dbline 54
 00C6           ;             KKEY_n[a]=0;
 00C6           ;             KEYIN=0;             //返回空按钮键值
 00C6 0027              clr R16
 00C8                   .dbline 55
 00C8           ;         }
 00C8                   .dbline 56
 00C8           ;       }else //A>20
 00C8 6DC0              rjmp L22
 00CA           L21:
 00CA                   .dbline 57
 00CA           ;     {
 00CA                   .dbline 58
 00CA           ;         NKEY_n=0;
 00CA 2224              clr R2
 00CC 20920200          sts L6,R2
 00D0                   .dbline 59
 00D0           ;         switch(a)
 00D0 642F              mov R22,R20
 00D2 7727              clr R23
 00D4 6832              cpi R22,40
 00D6 E0E0              ldi R30,0
 00D8 7E07              cpc R23,R30
 00DA 69F1              breq L38
 00DC 6932              cpi R22,41
 00DE E0E0              ldi R30,0
 00E0 7E07              cpc R23,R30
 00E2 19F1              breq L36
 00E4 89E2              ldi R24,41
 00E6 90E0              ldi R25,0
 00E8 8617              cp R24,R22
 00EA 9707              cpc R25,R23
 00EC 4CF0              brlt L44
 00EE           L43:
 00EE 6E31              cpi R22,30
 00F0 E0E0              ldi R30,0
 00F2 7E07              cpc R23,R30
 00F4 A1F0              breq L34
 00F6 6F31              cpi R22,31
 00F8 E0E0              ldi R30,0
 00FA 7E07              cpc R23,R30
 00FC 51F0              breq L32
 00FE 2CC0              rjmp L29
 0100           L44:
 0100 6233              cpi R22,50
 0102 E0E0              ldi R30,0
 0104 7E07              cpc R23,R30
 0106 19F1              breq L41
 0108 6333              cpi R22,51
 010A E0E0              ldi R30,0
 010C 7E07              cpc R23,R30
 010E C9F0              breq L39
 0110 23C0              rjmp L29
 0112           X2:
 0112                   .dbline 60
 0112           ;         {
 0112           L32:
 0112                   .dbline 62
 0112           ;             
 0112           ;             case 31:KKEY_n[3]++;break;  //UP          4
 0112 80910300          lds R24,_KKEY_n+3
 0116 8F5F              subi R24,255    ; addi 1
 0118 80930300          sts _KKEY_n+3,R24
 011C                   .dbline 62
 011C 1DC0              rjmp L30
 011E           L34:
 011E                   .dbline 63
 011E           ;             case 30:KKEY_n[8]++;break;  //KS3         9 
 011E 80910800          lds R24,_KKEY_n+8
 0122 8F5F              subi R24,255    ; addi 1
 0124 80930800          sts _KKEY_n+8,R24
 0128                   .dbline 63
 0128 17C0              rjmp L30
 012A           L36:
 012A                   .dbline 65
 012A           ;                       
 012A           ;             case 41:KKEY_n[1]++;break; // ADD         2
 012A 80910100          lds R24,_KKEY_n+1
 012E 8F5F              subi R24,255    ; addi 1
 0130 80930100          sts _KKEY_n+1,R24
 0134                   .dbline 65
 0134 11C0              rjmp L30
 0136           L38:
 0136                   .dbline 66
 0136           ;             case 40:KKEY_n[0]++;break;  //BEGIN     1
 0136 80910000          lds R24,_KKEY_n
 013A 8F5F              subi R24,255    ; addi 1
 013C 80930000          sts _KKEY_n,R24
 0140                   .dbline 66
 0140 0BC0              rjmp L30
 0142           L39:
 0142                   .dbline 68
 0142           ; 
 0142           ;                   case 51:KKEY_n[12]++;break;  // X6      13
 0142 80910C00          lds R24,_KKEY_n+12
 0146 8F5F              subi R24,255    ; addi 1
 0148 80930C00          sts _KKEY_n+12,R24
 014C                   .dbline 68
 014C 05C0              rjmp L30
 014E           L41:
 014E                   .dbline 69
 014E           ;             case 50:KKEY_n[6]++;break;         // MUSIC  
 014E 80910600          lds R24,_KKEY_n+6
 0152 8F5F              subi R24,255    ; addi 1
 0154 80930600          sts _KKEY_n+6,R24
 0158                   .dbline 69
 0158           L29:
 0158           L30:
 0158                   .dbline 72
 0158           ;  
 0158           ;         }
 0158           ;         for(a=0;a!=14;a++)
 0158 4427              clr R20
 015A 1EC0              rjmp L48
 015C           L45:
 015C                   .dbline 73
 015C           ;         {
 015C                   .dbline 74
 015C           ;             if(KKEY_n[a]==4)
 015C 80E0              ldi R24,<_KKEY_n
 015E 90E0              ldi R25,>_KKEY_n
 0160 E42F              mov R30,R20
 0162 FF27              clr R31
 0164 E80F              add R30,R24
 0166 F91F              adc R31,R25
 0168 8081              ldd R24,z+0
 016A 8430              cpi R24,4
 016C A1F4              brne L49
 016E                   .dbline 75
 016E           ;             {

⌨️ 快捷键说明

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