📄 key.lst
字号:
__start:
__text_start:
0013 E5CF LDI R28,0x5F
0014 E0D4 LDI R29,4
0015 BFCD OUT 0x3D,R28
0016 BFDE OUT 0x3E,R29
0017 51C0 SUBI R28,0x10
0018 40D0 SBCI R29,0
0019 EA0A LDI R16,0xAA
001A 8308 STD Y+0,R16
001B 2400 CLR R0
001C E6E0 LDI R30,0x60
001D E0F0 LDI R31,0
001E E010 LDI R17,0
001F 36E0 CPI R30,0x60
0020 07F1 CPC R31,R17
0021 F011 BEQ 0x0024
0022 9201 ST R0,Z+
0023 CFFB RJMP 0x001F
0024 8300 STD Z+0,R16
0025 E2E6 LDI R30,0x26
0026 E0F0 LDI R31,0
0027 E6A0 LDI R26,0x60
0028 E0B0 LDI R27,0
0029 E010 LDI R17,0
002A 32E6 CPI R30,0x26
002B 07F1 CPC R31,R17
002C F021 BEQ 0x0031
002D 95C8 LPM
002E 9631 ADIW R30,1
002F 920D ST R0,X+
0030 CFF9 RJMP 0x002A
0031 D014 RCALL _main
_exit:
0032 CFFF RJMP _exit
_Delay:
a --> R20
b --> R22
x --> R16
0033 D04A RCALL push_gset2
FILE: D:\avr\key\key.c
(0001)
(0002) #include <iom8v.h>
(0003) void Delay(int x)
(0004) {
(0005) unsigned int a, b;
(0006) for (a = 100; a>0; a--)
0034 E644 LDI R20,0x64
0035 E050 LDI R21,0
0036 C00A RJMP 0x0041
(0007) for (b = 1000; b>0; b--);
0037 EE68 LDI R22,0xE8
0038 E073 LDI R23,3
0039 C002 RJMP 0x003C
003A 5061 SUBI R22,1
003B 4070 SBCI R23,0
003C 3060 CPI R22,0
003D 0767 CPC R22,R23
003E F7D9 BNE 0x003A
003F 5041 SUBI R20,1
0040 4050 SBCI R21,0
0041 3040 CPI R20,0
0042 0745 CPC R20,R21
0043 F799 BNE 0x0037
0044 D031 RCALL pop_gset2
0045 9508 RET
(0008) }
(0009) void main()
(0010) {
(0011) unsigned int i,j,ACC;
(0012) //ACC=0X000;
(0013) DDRC=0XFE;
_main:
j --> Y+1
i --> R20
ACC --> R22
0046 EF8E LDI R24,0xFE
0047 BB84 OUT 0x14,R24
(0014) PORTC=0XFF;
0048 EF8F LDI R24,0xFF
0049 BB85 OUT 0x15,R24
(0015) DDRB=0XFF;
004A BB87 OUT 0x17,R24
(0016) PORTB=0XFF;
004B BB88 OUT 0x18,R24
(0017) DDRD=0XFF;
004C BB81 OUT 0x11,R24
(0018) PORTD=0X00;
004D 2422 CLR R2
004E BA22 OUT 0x12,R2
004F C024 RJMP 0x0074
(0019) while (1)
(0020) {
(0021) //PORTB=0x00;
(0022) PORTC&=0B11111101;
0050 B385 IN R24,0x15
0051 7F8D ANDI R24,0xFD
0052 BB85 OUT 0x15,R24
(0023)
(0024) //Delay(1);
(0025) PORTC|=0B00000010;
0053 9AA9 SBI 0x15,1
(0026) for(i=9;i>0;i--)
0054 E049 LDI R20,0x9
0055 E050 LDI R21,0
0056 C00E RJMP 0x0065
(0027) {
(0028) ACC=ACC<<1;
0057 0F66 LSL R22
0058 1F77 ROL R23
(0029) PORTC&=0B11111011;
0059 B385 IN R24,0x15
005A 7F8B ANDI R24,0xFB
005B BB85 OUT 0x15,R24
(0030) ACC|=(PINC&01);
005C B383 IN R24,0x13
005D 2799 CLR R25
005E 7081 ANDI R24,1
005F 7090 ANDI R25,0
0060 2B68 OR R22,R24
0061 2B79 OR R23,R25
(0031) PORTC|=0B00000100;
0062 9AAA SBI 0x15,2
0063 5041 SUBI R20,1
0064 4050 SBCI R21,0
0065 3040 CPI R20,0
0066 0745 CPC R20,R21
0067 F779 BNE 0x0057
(0032) }
(0033) // PORTC=0xfB;
(0034) ACC= ACC&0x1ff;
0068 7071 ANDI R23,1
(0035) if(ACC==0xff)
0069 3F6F CPI R22,0xFF
006A E0E0 LDI R30,0
006B 077E CPC R23,R30
006C F419 BNE 0x0070
(0036) {PORTB=0X00;
006D 2422 CLR R2
006E BA28 OUT 0x18,R2
(0037) }
006F C001 RJMP 0x0071
(0038) else
(0039) PORTB=ACC;
0070 BB68 OUT 0x18,R22
(0040) // PORTC=0xff;
(0041) Delay(250);
FILE: <library>
0071 EF0A LDI R16,0xFA
0072 E010 LDI R17,0
0073 DFBF RCALL _Delay
0074 CFDB RJMP 0x0050
0075 9508 RET
pop_gset2:
0076 E0E2 LDI R30,2
0077 C00C RJMP pop
push_gset5:
0078 92FA ST R15,-Y
0079 92EA ST R14,-Y
push_gset4:
007A 92DA ST R13,-Y
007B 92CA ST R12,-Y
push_gset3:
007C 92BA ST R11,-Y
007D 92AA ST R10,-Y
push_gset2:
007E 937A ST R23,-Y
007F 936A ST R22,-Y
push_gset1:
0080 935A ST R21,-Y
0081 934A ST R20,-Y
0082 9508 RET
pop_gset1:
0083 E0E1 LDI R30,1
pop:
0084 9149 LD R20,Y+
0085 9159 LD R21,Y+
0086 FDE0 SBRC R30,0
0087 9508 RET
0088 9169 LD R22,Y+
0089 9179 LD R23,Y+
008A FDE1 SBRC R30,1
008B 9508 RET
008C 90A9 LD R10,Y+
008D 90B9 LD R11,Y+
008E FDE2 SBRC R30,2
008F 9508 RET
0090 90C9 LD R12,Y+
0091 90D9 LD R13,Y+
0092 FDE3 SBRC R30,3
0093 9508 RET
0094 90E9 LD R14,Y+
0095 90F9 LD R15,Y+
0096 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -