📄 mykey.lis
字号:
00DC 0E940000 xcall lsl8
00E0 202E mov R2,R16
00E2 2094 com R2
00E4 28BA out 0x18,R2
00E6 .dbline 49
00E6 ; PORTA&=~BIT(4);
00E6 DC98 cbi 0x1b,4
00E8 .dbline 50
00E8 ; delay(1);
00E8 01E0 ldi R16,1
00EA 10E0 ldi R17,0
00EC 89DF xcall _delay
00EE .dbline -2
00EE L10:
00EE .dbline 0 ; func end
00EE 6991 ld R22,y+
00F0 4991 ld R20,y+
00F2 0895 ret
00F4 .dbsym r k 22 c
00F4 .dbsym r j 20 c
00F4 .dbend
00F4 .dbfunc e key_press _key_press fc
00F4 ; j -> R16
.even
00F4 _key_press::
00F4 .dbline -1
00F4 .dbline 54
00F4 ; }
00F4 ;
00F4 ; uchar key_press()
00F4 ; {
00F4 .dbline 56
00F4 ; uchar j;
00F4 ; DDRD|=0X0F;
00F4 81B3 in R24,0x11
00F6 8F60 ori R24,15
00F8 81BB out 0x11,R24
00FA .dbline 57
00FA ; PORTD|=0X0F;
00FA 82B3 in R24,0x12
00FC 8F60 ori R24,15
00FE 82BB out 0x12,R24
0100 .dbline 59
0100 ;
0100 ; DDRD&=0XF0;
0100 81B3 in R24,0x11
0102 807F andi R24,240
0104 81BB out 0x11,R24
0106 .dbline 61
0106 ;
0106 ; j=PIND;
0106 00B3 in R16,0x10
0108 .dbline 62
0108 ; j=j&0X0F;//00001111
0108 0F70 andi R16,15
010A .dbline 63
010A ; if(j==0X0F)
010A 0F30 cpi R16,15
010C 11F4 brne L30
010E X8:
010E .dbline 64
010E ; {
010E .dbline 65
010E ; return 0;
010E 0027 clr R16
0110 01C0 xjmp L29
0112 L30:
0112 .dbline 68
0112 ; }
0112 ; else
0112 ; {
0112 .dbline 69
0112 ; return 1;
0112 01E0 ldi R16,1
0114 .dbline -2
0114 L29:
0114 .dbline 0 ; func end
0114 0895 ret
0116 .dbsym r j 16 c
0116 .dbend
0116 .dbfunc e key_scan _key_scan fc
0116 ; key -> R20
.even
0116 _key_scan::
0116 0E940000 xcall push_xgsetF000
011A .dbline -1
011A .dbline 75
011A ; }
011A ;
011A ; }
011A ;
011A ; uchar key_scan()
011A ; {
011A .dbline 77
011A ; uchar key;
011A ; delay(10);
011A 0AE0 ldi R16,10
011C 10E0 ldi R17,0
011E 70DF xcall _delay
0120 .dbline 78
0120 ; if(key_press())
0120 E9DF xcall _key_press
0122 0023 tst R16
0124 11F1 breq L33
0126 X9:
0126 .dbline 79
0126 ; {
0126 .dbline 80
0126 ; key=PIND;
0126 40B3 in R20,0x10
0128 .dbline 81
0128 ; key&=0X0F;
0128 4F70 andi R20,15
012A .dbline 82
012A ; switch(key)
012A 642F mov R22,R20
012C 7727 clr R23
012E 6730 cpi R22,7
0130 E0E0 ldi R30,0
0132 7E07 cpc R23,R30
0134 99F0 breq L41
0136 X10:
0136 6B30 cpi R22,11
0138 E0E0 ldi R30,0
013A 7E07 cpc R23,R30
013C 69F0 breq L40
013E X11:
013E 6D30 cpi R22,13
0140 E0E0 ldi R30,0
0142 7E07 cpc R23,R30
0144 39F0 breq L39
0146 X12:
0146 6E30 cpi R22,14
0148 E0E0 ldi R30,0
014A 7E07 cpc R23,R30
014C 09F0 breq L38
014E X13:
014E 08C0 xjmp L35
0150 L38:
0150 .dbline 85
0150 ; {
0150 ; case 0X0E:
0150 ; key=1;
0150 41E0 ldi R20,1
0152 .dbline 86
0152 ; break;
0152 07C0 xjmp L43
0154 L39:
0154 .dbline 88
0154 ; case 0X0D:
0154 ; key=2;
0154 42E0 ldi R20,2
0156 .dbline 89
0156 ; break;
0156 05C0 xjmp L43
0158 L40:
0158 .dbline 91
0158 ; case 0X0B:
0158 ; key=3;
0158 43E0 ldi R20,3
015A .dbline 92
015A ; break;
015A 03C0 xjmp L43
015C L41:
015C .dbline 94
015C ; case 0X07:
015C ; key=4;
015C 44E0 ldi R20,4
015E .dbline 95
015E ; break;
015E 01C0 xjmp L43
0160 L35:
0160 .dbline 97
0160 ; default:
0160 ; key=16;
0160 40E1 ldi R20,16
0162 .dbline 98
0162 ; }
0162 L42:
0162 .dbline 99
0162 ; while(key_press());
0162 L43:
0162 .dbline 99
0162 C8DF xcall _key_press
0164 0023 tst R16
0166 E9F7 brne L42
0168 X14:
0168 .dbline 100
0168 ; }
0168 01C0 xjmp L34
016A L33:
016A .dbline 102
016A ; else
016A ; {
016A .dbline 103
016A ; key=16;
016A 40E1 ldi R20,16
016C .dbline 104
016C ; }
016C L34:
016C .dbline 105
016C ; return key;
016C 042F mov R16,R20
016E .dbline -2
016E L32:
016E .dbline 0 ; func end
016E 0C940000 xjmp pop_xgsetF000
0172 .dbsym r key 20 c
0172 .dbend
0172 .dbfunc e main _main fV
0172 ; l -> R20
0172 ; i -> R10
.even
0172 _main::
0172 .dbline -1
0172 .dbline 108
0172 ; }
0172 ; void main()
0172 ; {
0172 .dbline 110
0172 ; uchar i,l;
0172 ; DDRA=0X18;//0001 1000
0172 88E1 ldi R24,24
0174 8ABB out 0x1a,R24
0176 .dbline 111
0176 ; DDRB=0XFF;
0176 8FEF ldi R24,255
0178 87BB out 0x17,R24
017A 09C0 xjmp L47
017C L46:
017C .dbline 113
017C ; while(1)
017C ; {
017C .dbline 114
017C ; i=key_press();
017C BBDF xcall _key_press
017E A02E mov R10,R16
0180 .dbline 115
0180 ; if(i)
0180 0023 tst R16
0182 29F0 breq L49
0184 X15:
0184 .dbline 116
0184 ; {
0184 .dbline 117
0184 ; l=key_scan();
0184 C8DF xcall _key_scan
0186 402F mov R20,R16
0188 .dbline 118
0188 ; show(l-1,0);
0188 2227 clr R18
018A 0150 subi R16,1
018C 4EDF xcall _show
018E .dbline 119
018E ; }
018E L49:
018E .dbline 120
018E ; }
018E L47:
018E .dbline 112
018E F6CF xjmp L46
0190 X16:
0190 .dbline -2
0190 L45:
0190 .dbline 0 ; func end
0190 0895 ret
0192 .dbsym r l 20 c
0192 .dbsym r i 10 c
0192 .dbend
0192 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -