📄 int_key.lst
字号:
00D9 E042 LDI R20,2
00DA C006 RJMP 0x00E1
(0085) else if((~PINB)&0x80)
00DB B226 IN R2,0x16
00DC 2433 CLR R3
00DD 9420 COM R2
00DE 9430 COM R3
00DF FC27 SBRC R2,7
(0086) key_buf=3;
00E0 E043 LDI R20,3
(0087) DDRB=0xf0;
00E1 EF80 LDI R24,0xF0
00E2 BB87 OUT 0x17,R24
(0088) PORTB=0x0f;
00E3 E08F LDI R24,0xF
00E4 BB88 OUT 0x18,R24
(0089) delay100us(10);
00E5 E00A LDI R16,0xA
00E6 DF6D RCALL _delay100us
(0090) if((~PINB)&0x01)
00E7 B226 IN R2,0x16
00E8 2433 CLR R3
00E9 9420 COM R2
00EA 9430 COM R3
00EB FE20 SBRS R2,0
00EC C001 RJMP 0x00EE
(0091) key_buf+=0;
00ED C011 RJMP 0x00FF
(0092) else if((~PINB)&0x02)
00EE B226 IN R2,0x16
00EF 2433 CLR R3
00F0 9420 COM R2
00F1 9430 COM R3
00F2 FE21 SBRS R2,1
00F3 C002 RJMP 0x00F6
(0093) key_buf+=4;
00F4 5F4C SUBI R20,0xFC
00F5 C009 RJMP 0x00FF
(0094) else if((~PINB)&0x04)
00F6 B226 IN R2,0x16
00F7 2433 CLR R3
00F8 9420 COM R2
00F9 9430 COM R3
00FA FE22 SBRS R2,2
00FB C002 RJMP 0x00FE
(0095) key_buf+=8;
00FC 5F48 SUBI R20,0xF8
00FD C001 RJMP 0x00FF
(0096) else
(0097) key_buf=16;
00FE E140 LDI R20,0x10
(0098) tmpi=PINB;
00FF B366 IN R22,0x16
(0099) if((key_buf!=16)&&(key_buf!=10)&&(key_buf!=11))
0100 3140 CPI R20,0x10
0101 F101 BEQ 0x0122
0102 304A CPI R20,0xA
0103 F0F1 BEQ 0x0122
0104 304B CPI R20,0xB
0105 F0E1 BEQ 0x0122
(0100) {
(0101) for(i=3;i!=0;i--)
0106 E083 LDI R24,3
0107 2EA8 MOV R10,R24
0108 C00F RJMP 0x0118
(0102) {
(0103) seg7_led_buff[i]=seg7_led_buff[i-1];//移位显示
0109 E58F LDI R24,0x5F
010A E090 LDI R25,0
010B 2DEA MOV R30,R10
010C 27FF CLR R31
010D 0FE8 ADD R30,R24
010E 1FF9 ADC R31,R25
010F 8020 LDD R2,Z+0
0110 E680 LDI R24,0x60
0111 E090 LDI R25,0
0112 2DEA MOV R30,R10
0113 27FF CLR R31
0114 0FE8 ADD R30,R24
0115 1FF9 ADC R31,R25
0116 8220 STD Z+0,R2
0117 94AA DEC R10
0118 20AA TST R10
0119 F779 BNE 0x0109
(0104) }
(0105) seg7_led_buff[0]=key_buf;
011A 93400060 STS seg7_led_buff,R20
(0106) tmpi=PINB;
011C B366 IN R22,0x16
(0107) while((~PINB)&0x07)//按键释放检测,如不释放就一直循环
011D B386 IN R24,0x16
011E 9580 COM R24
011F 7087 ANDI R24,7
0120 F7E1 BNE 0x011D
(0108) ;
(0109) }
0121 C005 RJMP 0x0127
(0110) else if(key_buf==10)
0122 304A CPI R20,0xA
0123 F409 BNE 0x0125
(0111) ;
0124 C002 RJMP 0x0127
(0112) else if(key_buf==11)
0125 304B CPI R20,0xB
0126 F401 BNE 0x0127
(0113) ;
(0114) DDRB=0x0f;
0127 E08F LDI R24,0xF
0128 BB87 OUT 0x17,R24
(0115) PORTB=0xf0;
0129 EF80 LDI R24,0xF0
012A BB88 OUT 0x18,R24
(0116) } //end of #2
(0117) } //end of #1
(0118) GICR=0x40;//中断复位
012B E480 LDI R24,0x40
012C BF8B OUT 0x3B,R24
012D 940E014B CALL pop_gset3
012F 940E0184 CALL pop_lset
0131 9518 RETI
(0119) }
(0120)
(0121) void main(void)
(0122) {
(0123) DDRB=0x0f;//PB3 out
_main:
0132 E08F LDI R24,0xF
0133 BB87 OUT 0x17,R24
(0124) PORTB&=0xF8;
0134 B388 IN R24,0x18
0135 7F88 ANDI R24,0xF8
0136 BB88 OUT 0x18,R24
(0125) PORTB|=0xF0;//PORTB置1111x000
0137 B388 IN R24,0x18
0138 6F80 ORI R24,0xF0
0139 BB88 OUT 0x18,R24
(0126) DDRD&=0xfb;
013A B381 IN R24,0x11
013B 7F8B ANDI R24,0xFB
013C BB81 OUT 0x11,R24
(0127) PORTD|=(~0xfb);
013D B382 IN R24,0x12
013E 6084 ORI R24,4
013F BB82 OUT 0x12,R24
(0128) MCUCR&=(~0x03);
0140 B785 IN R24,0x35
0141 7F8C ANDI R24,0xFC
0142 BF85 OUT 0x35,R24
(0129) GICR=0x40;//使能中断INT0
0143 E480 LDI R24,0x40
0144 BF8B OUT 0x3B,R24
(0130) SEI();
0145 9478 BSET 7
(0131) seg7_led_init();
0146 DF57 RCALL _seg7_led_init
0147 C001 RJMP 0x0149
(0132) while(1)
(0133) {
(0134) seg7_led_update();//数码管扫描
FILE: <library>
0148 DF18 RCALL _seg7_led_update
0149 CFFE RJMP 0x0148
014A 9508 RET
pop_gset3:
014B E0E4 LDI R30,4
014C 940C015A JMP pop
push_gset5:
014E 92FA ST R15,-Y
014F 92EA ST R14,-Y
push_gset4:
0150 92DA ST R13,-Y
0151 92CA ST R12,-Y
push_gset3:
0152 92BA ST R11,-Y
0153 92AA ST R10,-Y
push_gset2:
0154 937A ST R23,-Y
0155 936A ST R22,-Y
push_gset1:
0156 935A ST R21,-Y
0157 934A ST R20,-Y
0158 9508 RET
pop_gset1:
0159 E0E1 LDI R30,1
pop:
015A 9149 LD R20,Y+
015B 9159 LD R21,Y+
015C FDE0 SBRC R30,0
015D 9508 RET
015E 9169 LD R22,Y+
015F 9179 LD R23,Y+
0160 FDE1 SBRC R30,1
0161 9508 RET
0162 90A9 LD R10,Y+
0163 90B9 LD R11,Y+
0164 FDE2 SBRC R30,2
0165 9508 RET
0166 90C9 LD R12,Y+
0167 90D9 LD R13,Y+
0168 FDE3 SBRC R30,3
0169 9508 RET
016A 90E9 LD R14,Y+
016B 90F9 LD R15,Y+
016C 9508 RET
push_lset:
016D 93FA ST R31,-Y
016E 93EA ST R30,-Y
016F 93BA ST R27,-Y
0170 93AA ST R26,-Y
0171 939A ST R25,-Y
0172 938A ST R24,-Y
0173 933A ST R19,-Y
0174 932A ST R18,-Y
0175 931A ST R17,-Y
0176 930A ST R16,-Y
0177 929A ST R9,-Y
0178 928A ST R8,-Y
0179 927A ST R7,-Y
017A 926A ST R6,-Y
017B 925A ST R5,-Y
017C 924A ST R4,-Y
017D 923A ST R3,-Y
017E 922A ST R2,-Y
017F 921A ST R1,-Y
0180 920A ST R0,-Y
0181 B60F IN R0,0x3F
0182 920A ST R0,-Y
0183 9508 RET
pop_lset:
0184 9009 LD R0,Y+
0185 BE0F OUT 0x3F,R0
0186 9009 LD R0,Y+
0187 9019 LD R1,Y+
0188 9029 LD R2,Y+
0189 9039 LD R3,Y+
018A 9049 LD R4,Y+
018B 9059 LD R5,Y+
018C 9069 LD R6,Y+
018D 9079 LD R7,Y+
018E 9089 LD R8,Y+
018F 9099 LD R9,Y+
0190 9109 LD R16,Y+
0191 9119 LD R17,Y+
0192 9129 LD R18,Y+
0193 9139 LD R19,Y+
0194 9189 LD R24,Y+
0195 9199 LD R25,Y+
0196 91A9 LD R26,Y+
0197 91B9 LD R27,Y+
0198 91E9 LD R30,Y+
0199 91F9 LD R31,Y+
019A 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -