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

📄 矩阵式按键.lis

📁 ICC mega8例子
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00A2                   .dbline 96
 00A2           ;  delay_us(1);
 00A2 01E0              ldi R16,1
 00A4 10E0              ldi R17,0
 00A6 BCDF              rcall _delay_us
 00A8                   .dbline 97
 00A8           ;  key0=PIND;
 00A8 A0B2              in R10,0x10
 00AA                   .dbline 98
 00AA           ;  key0=~(key0^0xf0);
 00AA 80EF              ldi R24,240
 00AC 90E0              ldi R25,0
 00AE 2A2C              mov R2,R10
 00B0 3324              clr R3
 00B2 2826              eor R2,R24
 00B4 3926              eor R3,R25
 00B6 2094              com R2
 00B8 3094              com R3
 00BA A22C              mov R10,R2
 00BC                   .dbline 99
 00BC           ;  if (key0==0) return -1;
 00BC 2220              tst R2
 00BE 11F4              brne L9
 00C0           X1:
 00C0                   .dbline 99
 00C0 0FEF              ldi R16,255
 00C2 5EC0              rjmp L8
 00C4           L9:
 00C4                   .dbline 101
 00C4           ;  //----------------------扫行
 00C4           ;  delay_us(500);//延时消抖
 00C4 04EF              ldi R16,500
 00C6 11E0              ldi R17,1
 00C8 ABDF              rcall _delay_us
 00CA                   .dbline 102
 00CA           ;  key0=PIND;
 00CA A0B2              in R10,0x10
 00CC                   .dbline 103
 00CC           ;  key0=~(key0^0xf0);
 00CC 80EF              ldi R24,240
 00CE 90E0              ldi R25,0
 00D0 2A2C              mov R2,R10
 00D2 3324              clr R3
 00D4 2826              eor R2,R24
 00D6 3926              eor R3,R25
 00D8 2094              com R2
 00DA 3094              com R3
 00DC A22C              mov R10,R2
 00DE                   .dbline 104
 00DE           ;  if (key0==0) return -1;
 00DE 2220              tst R2
 00E0 11F4              brne L11
 00E2           X2:
 00E2                   .dbline 104
 00E2 0FEF              ldi R16,255
 00E4 4DC0              rjmp L8
 00E6           L11:
 00E6                   .dbline 105
 00E6           ;  switch ((key0))
 00E6 6A2D              mov R22,R10
 00E8 7727              clr R23
 00EA 6130              cpi R22,1
 00EC E0E0              ldi R30,0
 00EE 7E07              cpc R23,R30
 00F0 69F0              breq L16
 00F2           X3:
 00F2 6230              cpi R22,2
 00F4 E0E0              ldi R30,0
 00F6 7E07              cpc R23,R30
 00F8 59F0              breq L17
 00FA           X4:
 00FA 6430              cpi R22,4
 00FC E0E0              ldi R30,0
 00FE 7E07              cpc R23,R30
 0100 49F0              breq L18
 0102           X5:
 0102 6830              cpi R22,8
 0104 E0E0              ldi R30,0
 0106 7E07              cpc R23,R30
 0108 39F0              breq L19
 010A           X6:
 010A 07C0              rjmp L13
 010C           L16:
 010C                   .dbline 107
 010C           ;  {
 010C           ;   case (0x01):k=0;break;
 010C 4427              clr R20
 010E                   .dbline 107
 010E 05C0              rjmp L14
 0110           L17:
 0110                   .dbline 108
 0110           ;   case (0x02):k=4;break;
 0110 44E0              ldi R20,4
 0112                   .dbline 108
 0112 03C0              rjmp L14
 0114           L18:
 0114                   .dbline 109
 0114           ;   case (0x04):k=8;break;
 0114 48E0              ldi R20,8
 0116                   .dbline 109
 0116 01C0              rjmp L14
 0118           L19:
 0118                   .dbline 110
 0118           ;   case (0x08):k=12;break;
 0118 4CE0              ldi R20,12
 011A                   .dbline 110
 011A           L13:
 011A           L14:
 011A                   .dbline 113
 011A           ;  }
 011A           ;  //---------------------扫列
 011A           ;  DDRD=0x0f;
 011A 8FE0              ldi R24,15
 011C 81BB              out 0x11,R24
 011E                   .dbline 114
 011E           ;  PORTD=0xf0;
 011E 80EF              ldi R24,240
 0120 82BB              out 0x12,R24
 0122                   .dbline 115
 0122           ;  delay_us(1);
 0122 01E0              ldi R16,1
 0124 10E0              ldi R17,0
 0126 7CDF              rcall _delay_us
 0128                   .dbline 116
 0128           ;  key0=PIND;
 0128 A0B2              in R10,0x10
 012A                   .dbline 117
 012A           ;  key0=~(key0^0x0f);
 012A 8FE0              ldi R24,15
 012C 2A2C              mov R2,R10
 012E 2826              eor R2,R24
 0130 2094              com R2
 0132 A22C              mov R10,R2
 0134                   .dbline 118
 0134           ;  if (0==key0) return -1;
 0134 2220              tst R2
 0136 11F4              brne L20
 0138           X7:
 0138                   .dbline 118
 0138 0FEF              ldi R16,255
 013A 22C0              rjmp L8
 013C           L20:
 013C                   .dbline 119
 013C           ;  switch ((key0>>4))
 013C 6A2D              mov R22,R10
 013E 7727              clr R23
 0140 7595              asr R23
 0142 6795              ror R22
 0144 7595              asr R23
 0146 6795              ror R22
 0148 7595              asr R23
 014A 6795              ror R22
 014C 7595              asr R23
 014E 6795              ror R22
 0150 6130              cpi R22,1
 0152 E0E0              ldi R30,0
 0154 7E07              cpc R23,R30
 0156 69F0              breq L25
 0158           X8:
 0158 6230              cpi R22,2
 015A E0E0              ldi R30,0
 015C 7E07              cpc R23,R30
 015E 51F0              breq L26
 0160           X9:
 0160 6430              cpi R22,4
 0162 E0E0              ldi R30,0
 0164 7E07              cpc R23,R30
 0166 41F0              breq L27
 0168           X10:
 0168 6830              cpi R22,8
 016A E0E0              ldi R30,0
 016C 7E07              cpc R23,R30
 016E 31F0              breq L28
 0170           X11:
 0170 06C0              rjmp L22
 0172           L25:
 0172                   .dbline 121
 0172           ;  {
 0172           ;   case 1:k+=0;break;
 0172                   .dbline 121
 0172 05C0              rjmp L23
 0174           L26:
 0174                   .dbline 122
 0174           ;   case 2:k+=1;break;
 0174 4395              inc R20
 0176                   .dbline 122
 0176 03C0              rjmp L23
 0178           L27:
 0178                   .dbline 123
 0178           ;   case 4:k+=2;break;
 0178 4E5F              subi R20,254    ; addi 2
 017A                   .dbline 123
 017A 01C0              rjmp L23
 017C           L28:
 017C                   .dbline 124
 017C           ;   case 8:k+=3;break;
 017C 4D5F              subi R20,253    ; addi 3
 017E                   .dbline 124
 017E           L22:
 017E           L23:
 017E                   .dbline 131
 017E           ;  }
 017E           ;  /*while(0!=key0)//等待按起
 017E           ;  {
 017E           ;   key0=pinKEY;
 017E           ;   key0=~(key0^0x0f);
 017E           ;  }*/
 017E           ;  return k;
 017E 042F              mov R16,R20
 0180                   .dbline -2
 0180           L8:
 0180                   .dbline 0 ; func end
 0180 00C0              rjmp pop_xgsetF00C
 0182                   .dbsym r k 20 c
 0182                   .dbsym r key0 10 c
 0182                   .dbend
 0182                   .dbfunc e main _main fV
 0182           ;              i -> R12
 0182           ;              j -> R10
                        .even
 0182           _main::
 0182                   .dbline -1
 0182                   .dbline 136
 0182           ; }
 0182           ; //********************************
 0182           ; 
 0182           ; void main()
 0182           ; {
 0182                   .dbline 137
 0182           ;  char i,j=0;
 0182 AA24              clr R10
 0184                   .dbline 138
 0184           ;  port_init();
 0184 3DDF              rcall _port_init
 0186                   .dbline 139
 0186           ;  init_devices();
 0186 44DF              rcall _init_devices
 0188 07C0              rjmp L31
 018A           L30:
 018A                   .dbline 142
 018A           ;  
 018A           ;  while(1)
 018A           ;  {
 018A                   .dbline 144
 018A           ;  
 018A           ;   if((i=key_vetrix())!=-1)
 018A 85DF              rcall _key_vetrix
 018C C02E              mov R12,R16
 018E 0F3F              cpi R16,255
 0190 09F0              breq L33
 0192           X12:
 0192                   .dbline 145
 0192           ;    j=i;
 0192 AC2C              mov R10,R12
 0194           L33:
 0194                   .dbline 146
 0194           ;   show_2_digit(j);
 0194 0A2D              mov R16,R10
 0196 4CDF              rcall _show_2_digit
 0198                   .dbline 147
 0198           ;  }
 0198           L31:
 0198                   .dbline 141
 0198 F8CF              rjmp L30
 019A           X13:
 019A                   .dbline -2
 019A           L29:
 019A                   .dbline 0 ; func end
 019A 0895              ret
 019C                   .dbsym r i 12 c
 019C                   .dbsym r j 10 c
 019C                   .dbend
 019C           ; }

⌨️ 快捷键说明

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