?? 矩陣式按鍵.lis
字號:
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 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 + -