📄 usb.lss
字号:
usb.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000b7c 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000060 00800060 00000b7c 00000c10 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000005c 008000c0 008000c0 00000c70 2**0
ALLOC
3 .noinit 00000000 0080011c 0080011c 00000c70 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000c70 2**0
CONTENTS
5 .debug_aranges 00000014 00000000 00000000 00000c70 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 000003f2 00000000 00000000 00000c84 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 00000e59 00000000 00000000 00001076 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 00000228 00000000 00000000 00001ecf 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 00000a7c 00000000 00000000 000020f7 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_str 00000790 00000000 00000000 00002b73 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54
4: 0c 94 55 05 jmp 0xaaa
8: 0c 94 45 00 jmp 0x8a
c: 0c 94 45 00 jmp 0x8a
10: 0c 94 45 00 jmp 0x8a
14: 0c 94 45 00 jmp 0x8a
18: 0c 94 45 00 jmp 0x8a
1c: 0c 94 45 00 jmp 0x8a
20: 0c 94 45 00 jmp 0x8a
24: 0c 94 45 00 jmp 0x8a
28: 0c 94 45 00 jmp 0x8a
2c: 0c 94 45 00 jmp 0x8a
30: 0c 94 45 00 jmp 0x8a
34: 0c 94 45 00 jmp 0x8a
38: 0c 94 45 00 jmp 0x8a
3c: 0c 94 45 00 jmp 0x8a
40: 0c 94 45 00 jmp 0x8a
44: 0c 94 45 00 jmp 0x8a
48: 0c 94 45 00 jmp 0x8a
4c: 0c 94 45 00 jmp 0x8a
50: 0c 94 45 00 jmp 0x8a
00000054 <__ctors_end>:
54: 11 24 eor r1, r1
56: 1f be out 0x3f, r1 ; 63
58: cf e5 ldi r28, 0x5F ; 95
5a: d4 e0 ldi r29, 0x04 ; 4
5c: de bf out 0x3e, r29 ; 62
5e: cd bf out 0x3d, r28 ; 61
00000060 <__do_copy_data>:
60: 10 e0 ldi r17, 0x00 ; 0
62: a0 e6 ldi r26, 0x60 ; 96
64: b0 e0 ldi r27, 0x00 ; 0
66: ec e7 ldi r30, 0x7C ; 124
68: fb e0 ldi r31, 0x0B ; 11
6a: 02 c0 rjmp .+4 ; 0x70
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: a0 3c cpi r26, 0xC0 ; 192
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c
00000076 <__do_clear_bss>:
76: 11 e0 ldi r17, 0x01 ; 1
78: a0 ec ldi r26, 0xC0 ; 192
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: ac 31 cpi r26, 0x1C ; 28
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e
86: 0c 94 91 05 jmp 0xb22
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0
0000008e <delay1>:
...
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
a2: 08 95 ret
000000a4 <outportb>:
}
/*void put_c(unsigned char c) //发送采用查询方式
{
while( !(UCSRA & (1<<UDRE)) );
UDR=c;
}*/
//this part from Epphal.c
void outportb(unsigned char Addr,unsigned char Data)
{
a4: 1f 93 push r17
a6: 16 2f mov r17, r22
PORTB |=(1<<D12_ALE); //SET ALE H
a8: c3 9a sbi 0x18, 3 ; 24
DDRA=0xff;
aa: 9f ef ldi r25, 0xFF ; 255
ac: 9a bb out 0x1a, r25 ; 26
PORTA=Addr; //load address
ae: 8b bb out 0x1b, r24 ; 27
delay1();
b0: 0e 94 47 00 call 0x8e
PORTB &=~(1<<D12_ALE); //RESET ALE L
b4: c3 98 cbi 0x18, 3 ; 24
PORTA=Data;
b6: 1b bb out 0x1b, r17 ; 27
PORTB &=~(1<<D12_WR); //Enalbe write
b8: c1 98 cbi 0x18, 1 ; 24
delay1(); //waite some time
ba: 0e 94 47 00 call 0x8e
delay1();
be: 0e 94 47 00 call 0x8e
PORTB |=(1<<D12_WR);
c2: c1 9a sbi 0x18, 1 ; 24
c4: 1f 91 pop r17
c6: 08 95 ret
000000c8 <inportb>:
}
unsigned char inportb(unsigned char Addr)
{
c8: 1f 93 push r17
unsigned char rt;
PORTB |=(1<<D12_ALE); //SET ALE H
ca: c3 9a sbi 0x18, 3 ; 24
DDRA=0xff ;
cc: 1f ef ldi r17, 0xFF ; 255
ce: 1a bb out 0x1a, r17 ; 26
PORTA=Addr; //load address
d0: 8b bb out 0x1b, r24 ; 27
delay1();
d2: 0e 94 47 00 call 0x8e
PORTB &=~(1<<D12_ALE); //RESET ALE L
d6: c3 98 cbi 0x18, 3 ; 24
DDRA=0x00;
d8: 1a ba out 0x1a, r1 ; 26
PORTA=0xff; //
da: 1b bb out 0x1b, r17 ; 27
PORTB &=~(1<<D12_RD);
dc: c2 98 cbi 0x18, 2 ; 24
delay1();
de: 0e 94 47 00 call 0x8e
rt=PINA;
e2: 89 b3 in r24, 0x19 ; 25
PORTB |=(1<<D12_RD);
e4: c2 9a sbi 0x18, 2 ; 24
return rt;
}
e6: 99 27 eor r25, r25
e8: 1f 91 pop r17
ea: 08 95 ret
000000ec <D12_SetAddressEnable>:
//this part from D12CI.C
/*设置/使能地址命令:D0H*/
void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
{
ec: 1f 93 push r17
ee: cf 93 push r28
f0: c8 2f mov r28, r24
f2: 16 2f mov r17, r22
if(bEPPflags.bits.in_isr == 0)
f4: 80 91 c0 00 lds r24, 0x00C0
f8: 84 fd sbrc r24, 4
fa: 01 c0 rjmp .+2 ; 0xfe
DISABLE;//EA=0
fc: f8 94 cli
outportb(D12_COMMAND, 0xD0);
fe: 60 ed ldi r22, 0xD0 ; 208
100: 83 e0 ldi r24, 0x03 ; 3
102: 0e 94 52 00 call 0xa4
if(bEnable)
106: 11 11 cpse r17, r1
bAddress |= 0x80;
108: c0 68 ori r28, 0x80 ; 128
outportb(D12_DATA, bAddress);
10a: 6c 2f mov r22, r28
10c: 82 e0 ldi r24, 0x02 ; 2
10e: 0e 94 52 00 call 0xa4
if(bEPPflags.bits.in_isr == 0)
112: 80 91 c0 00 lds r24, 0x00C0
116: 84 fd sbrc r24, 4
118: 01 c0 rjmp .+2 ; 0x11c
ENABLE;//EA=1
11a: 78 94 sei
11c: cf 91 pop r28
11e: 1f 91 pop r17
120: 08 95 ret
00000122 <D12_SetEndpointEnable>:
}
/*设置端点使能命令:D8H*/
void D12_SetEndpointEnable(unsigned char bEnable)
{
122: cf 93 push r28
124: c8 2f mov r28, r24
if(bEPPflags.bits.in_isr == 0)
126: 80 91 c0 00 lds r24, 0x00C0
12a: 84 fd sbrc r24, 4
12c: 01 c0 rjmp .+2 ; 0x130
DISABLE;
12e: f8 94 cli
outportb(D12_COMMAND, 0xD8);
130: 68 ed ldi r22, 0xD8 ; 216
132: 83 e0 ldi r24, 0x03 ; 3
134: 0e 94 52 00 call 0xa4
if(bEnable)
138: cc 23 and r28, r28
13a: 11 f0 breq .+4 ; 0x140
outportb(D12_DATA, 1);
13c: 61 e0 ldi r22, 0x01 ; 1
13e: 01 c0 rjmp .+2 ; 0x142
else
outportb(D12_DATA, 0);
140: 6c 2f mov r22, r28
142: 82 e0 ldi r24, 0x02 ; 2
144: 0e 94 52 00 call 0xa4
if(bEPPflags.bits.in_isr == 0)
148: 80 91 c0 00 lds r24, 0x00C0
14c: 84 fd sbrc r24, 4
14e: 01 c0 rjmp .+2 ; 0x152
ENABLE;
150: 78 94 sei
152: cf 91 pop r28
154: 08 95 ret
00000156 <D12_SetMode>:
}
/*设置模式命令:F3H*/
void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
{
156: 1f 93 push r17
158: cf 93 push r28
15a: c8 2f mov r28, r24
15c: 16 2f mov r17, r22
if(bEPPflags.bits.in_isr == 0)
15e: 80 91 c0 00 lds r24, 0x00C0
162: 84 fd sbrc r24, 4
164: 01 c0 rjmp .+2 ; 0x168
DISABLE;
166: f8 94 cli
outportb(D12_COMMAND, 0xF3);
168: 63 ef ldi r22, 0xF3 ; 243
16a: 83 e0 ldi r24, 0x03 ; 3
16c: 0e 94 52 00 call 0xa4
outportb(D12_DATA, bConfig);
170: 6c 2f mov r22, r28
172: 82 e0 ldi r24, 0x02 ; 2
174: 0e 94 52 00 call 0xa4
outportb(D12_DATA, bClkDiv);
178: 61 2f mov r22, r17
17a: 82 e0 ldi r24, 0x02 ; 2
17c: 0e 94 52 00 call 0xa4
if(bEPPflags.bits.in_isr == 0)
180: 80 91 c0 00 lds r24, 0x00C0
184: 84 fd sbrc r24, 4
186: 01 c0 rjmp .+2 ; 0x18a
ENABLE;
188: 78 94 sei
18a: cf 91 pop r28
18c: 1f 91 pop r17
18e: 08 95 ret
00000190 <D12_SetDMA>:
}
/*设置DMA命令:FBH*/
void D12_SetDMA(unsigned char bMode)
{
190: cf 93 push r28
192: c8 2f mov r28, r24
if(bEPPflags.bits.in_isr == 0)
194: 80 91 c0 00 lds r24, 0x00C0
198: 84 fd sbrc r24, 4
19a: 01 c0 rjmp .+2 ; 0x19e
DISABLE;
19c: f8 94 cli
outportb(D12_COMMAND, 0xFB);
19e: 6b ef ldi r22, 0xFB ; 251
1a0: 83 e0 ldi r24, 0x03 ; 3
1a2: 0e 94 52 00 call 0xa4
outportb(D12_DATA, bMode);
1a6: 6c 2f mov r22, r28
1a8: 82 e0 ldi r24, 0x02 ; 2
1aa: 0e 94 52 00 call 0xa4
if(bEPPflags.bits.in_isr == 0)
1ae: 80 91 c0 00 lds r24, 0x00C0
1b2: 84 fd sbrc r24, 4
1b4: 01 c0 rjmp .+2 ; 0x1b8
ENABLE;
1b6: 78 94 sei
1b8: cf 91 pop r28
1ba: 08 95 ret
000001bc <D12_ReadInterruptRegister>:
}
/*读中断寄存器命令:F4H*/
unsigned short D12_ReadInterruptRegister(void)
{
1bc: 1f 93 push r17
unsigned char b1;
unsigned int j;
outportb(D12_COMMAND, 0xF4);
1be: 64 ef ldi r22, 0xF4 ; 244
1c0: 83 e0 ldi r24, 0x03 ; 3
1c2: 0e 94 52 00 call 0xa4
b1 = inportb(D12_DATA);
1c6: 82 e0 ldi r24, 0x02 ; 2
1c8: 0e 94 64 00 call 0xc8
1cc: 18 2f mov r17, r24
j = inportb(D12_DATA);
1ce: 82 e0 ldi r24, 0x02 ; 2
1d0: 0e 94 64 00 call 0xc8
1d4: 99 27 eor r25, r25
j <<= 8;
1d6: 98 2f mov r25, r24
1d8: 88 27 eor r24, r24
j += b1;
return j;
}
1da: 81 0f add r24, r17
1dc: 91 1d adc r25, r1
1de: 1f 91 pop r17
1e0: 08 95 ret
000001e2 <D12_SelectEndpoint>:
/*选择端点命令:00~05H*/
unsigned char D12_SelectEndpoint(unsigned char bEndp)
{
1e2: 68 2f mov r22, r24
unsigned char c;
if(bEPPflags.bits.in_isr == 0)
1e4: 80 91 c0 00 lds r24, 0x00C0
1e8: 84 fd sbrc r24, 4
1ea: 01 c0 rjmp .+2 ; 0x1ee
DISABLE;
1ec: f8 94 cli
outportb(D12_COMMAND, bEndp);
1ee: 83 e0 ldi r24, 0x03 ; 3
1f0: 0e 94 52 00 call 0xa4
c = inportb(D12_DATA);
1f4: 82 e0 ldi r24, 0x02 ; 2
1f6: 0e 94 64 00 call 0xc8
1fa: 98 2f mov r25, r24
if(bEPPflags.bits.in_isr == 0)
1fc: 80 91 c0 00 lds r24, 0x00C0
200: 84 fd sbrc r24, 4
202: 01 c0 rjmp .+2 ; 0x206
ENABLE;
204: 78 94 sei
return c;
}
206: 89 2f mov r24, r25
208: 99 27 eor r25, r25
20a: 08 95 ret
0000020c <D12_ReadLastTransactionStatus>:
/*读最后处理状态寄存器命令:40~45H*/
unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
{
outportb(D12_COMMAND, 0x40 + bEndp);
20c: 80 5c subi r24, 0xC0 ; 192
20e: 68 2f mov r22, r24
210: 83 e0 ldi r24, 0x03 ; 3
212: 0e 94 52 00 call 0xa4
return inportb(D12_DATA);
216: 82 e0 ldi r24, 0x02 ; 2
218: 0e 94 64 00 call 0xc8
}
21c: 99 27 eor r25, r25
21e: 08 95 ret
00000220 <D12_SetEndpointStatus>:
/*设置端点状态命令:40~45H*/
void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
{
220: cf 93 push r28
222: 98 2f mov r25, r24
224: c6 2f mov r28, r22
if(bEPPflags.bits.in_isr == 0)
226: 80 91 c0 00 lds r24, 0x00C0
22a: 84 fd sbrc r24, 4
22c: 01 c0 rjmp .+2 ; 0x230
DISABLE;
22e: f8 94 cli
outportb(D12_COMMAND, 0x40 + bEndp);
230: 90 5c subi r25, 0xC0 ; 192
232: 69 2f mov r22, r25
234: 83 e0 ldi r24, 0x03 ; 3
236: 0e 94 52 00 call 0xa4
outportb(D12_DATA, bStalled);
23a: 6c 2f mov r22, r28
23c: 82 e0 ldi r24, 0x02 ; 2
23e: 0e 94 52 00 call 0xa4
if(bEPPflags.bits.in_isr == 0)
242: 80 91 c0 00 lds r24, 0x00C0
246: 84 fd sbrc r24, 4
248: 01 c0 rjmp .+2 ; 0x24c
ENABLE;
24a: 78 94 sei
24c: cf 91 pop r28
24e: 08 95 ret
00000250 <D12_SetEndpointStatusIsr>:
}
/*设置端点状态命令:40~45H,专用于中断函数中*/
void D12_SetEndpointStatusIsr(unsigned char bEndp, unsigned char bStalled)
{
250: cf 93 push r28
252: 98 2f mov r25, r24
254: c6 2f mov r28, r22
if(bEPPflags.bits.in_isr == 0)
256: 80 91 c0 00 lds r24, 0x00C0
25a: 84 fd sbrc r24, 4
25c: 01 c0 rjmp .+2 ; 0x260
DISABLE;
25e: f8 94 cli
outportb(D12_COMMAND, 0x40 + bEndp);
260: 90 5c subi r25, 0xC0 ; 192
262: 69 2f mov r22, r25
264: 83 e0 ldi r24, 0x03 ; 3
266: 0e 94 52 00 call 0xa4
outportb(D12_DATA, bStalled);
26a: 6c 2f mov r22, r28
26c: 82 e0 ldi r24, 0x02 ; 2
26e: 0e 94 52 00 call 0xa4
if(bEPPflags.bits.in_isr == 0)
272: 80 91 c0 00 lds r24, 0x00C0
276: 84 fd sbrc r24, 4
278: 01 c0 rjmp .+2 ; 0x27c
ENABLE;
27a: 78 94 sei
27c: cf 91 pop r28
27e: 08 95 ret
00000280 <D12_ReadEndpoint>:
}
/*读端点缓冲区同时清缓冲区,包含读缓冲区命令:F0H*/
/*以及清缓冲区命令:F2H*/
unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len,unsigned char * buf)
{
280: ff 92 push r15
282: 0f 93 push r16
284: 1f 93 push r17
286: cf 93 push r28
288: 98 2f mov r25, r24
28a: c6 2f mov r28, r22
28c: 8a 01 movw r16, r20
unsigned char i, j;
if(bEPPflags.bits.in_isr == 0)
28e: 80 91 c0 00 lds r24, 0x00C0
292: 84 fd sbrc r24, 4
294: 01 c0 rjmp .+2 ; 0x298
DISABLE;
296: f8 94 cli
outportb(D12_COMMAND, endp);
298: 69 2f mov r22, r25
29a: 83 e0 ldi r24, 0x03 ; 3
29c: 0e 94 52 00 call 0xa4
if((inportb(D12_DATA) & D12_FULLEMPTY) == 0)
2a0: 82 e0 ldi r24, 0x02 ; 2
2a2: 0e 94 64 00 call 0xc8
2a6: 80 fd sbrc r24, 0
2a8: 08 c0 rjmp .+16 ; 0x2ba
{
if(bEPPflags.bits.in_isr == 0)
2aa: 80 91 c0 00 lds r24, 0x00C0
2ae: 84 fd sbrc r24, 4
2b0: 01 c0 rjmp .+2 ; 0x2b4
ENABLE;
2b2: 78 94 sei
return 0;
2b4: 80 e0 ldi r24, 0x00 ; 0
2b6: 90 e0 ldi r25, 0x00 ; 0
2b8: 24 c0 rjmp .+72 ; 0x302
}
outportb(D12_COMMAND, 0xF0);
2ba: 60 ef ldi r22, 0xF0 ; 240
2bc: 83 e0 ldi r24, 0x03 ; 3
2be: 0e 94 52 00 call 0xa4
j = inportb(D12_DATA);
2c2: 82 e0 ldi r24, 0x02 ; 2
2c4: 0e 94 64 00 call 0xc8
j = inportb(D12_DATA);
2c8: 82 e0 ldi r24, 0x02 ; 2
2ca: 0e 94 64 00 call 0xc8
2ce: f8 2e mov r15, r24
if(j > len)
2d0: c8 17 cp r28, r24
2d2: 08 f4 brcc .+2 ; 0x2d6
j = len;
2d4: fc 2e mov r15, r28
for(i=0; i<j; i++)
2d6: ff 20 and r15, r15
2d8: 49 f0 breq .+18 ; 0x2ec
2da: cf 2d mov r28, r15
*(buf+i) = inportb(D12_DATA);
2dc: 82 e0 ldi r24, 0x02 ; 2
2de: 0e 94 64 00 call 0xc8
2e2: f8 01 movw r30, r16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -