📄 main.lis
字号:
0034 .dbline 76
0034 ; D12_SetMode(D12_NOLAZYCLOCK|D12_CLOCKRUNNING,D12_SETTOONE|D12_CLOCK_8M);
0034 25E4 ldi R18,69
0036 06E0 ldi R16,6
0038 0E940000 xcall _D12_SetMode
003C .dbline -2
003C L3:
003C .dbline 0 ; func end
003C 0895 ret
003E .dbend
003E .dbfunc e connect_USB _connect_USB fV
.even
003E _connect_USB::
003E .dbline -1
003E .dbline 79
003E ; }
003E ; void connect_USB(void)
003E ; {
003E .dbline 80
003E ; DISABLE;
003E F894 cli
0040 .dbline 81
0040 ; bEPPflags.value=0;
0040 2224 clr R2
0042 3324 clr R3
0044 30920100 sts _bEPPflags+1,R3
0048 20920000 sts _bEPPflags,R2
004C .dbline 82
004C ; ENABLE;
004C 7894 sei
004E .dbline 83
004E ; D12_SetEndpointStatus(4,0);
004E 2227 clr R18
0050 04E0 ldi R16,4
0052 0E940000 xcall _D12_SetEndpointStatus
0056 .dbline 84
0056 ; D12_SetEndpointStatus(5,0);
0056 2227 clr R18
0058 05E0 ldi R16,5
005A 0E940000 xcall _D12_SetEndpointStatus
005E .dbline 85
005E ; D12_SetDMA(0);
005E 0027 clr R16
0060 0E940000 xcall _D12_SetDMA
0064 .dbline 86
0064 ; D12_SetMode(D12_NOLAZYCLOCK|D12_CLOCKRUNNING|D12_SOFTCONNECT,D12_SETTOONE|D12_CLOCK_8M);
0064 25E4 ldi R18,69
0066 06E1 ldi R16,22
0068 0E940000 xcall _D12_SetMode
006C .dbline -2
006C L4:
006C .dbline 0 ; func end
006C 0895 ret
006E .dbend
006E .dbfunc e reconnect_USB _reconnect_USB fV
006E ; i -> R20,R21
.even
006E _reconnect_USB::
006E 0E940000 xcall push_gset1
0072 .dbline -1
0072 .dbline 89
0072 ; }
0072 ; void reconnect_USB(void)
0072 ; {
0072 .dbline 91
0072 ; unsigned int i;
0072 ; disconnect_USB();
0072 E0DF xcall _disconnect_USB
0074 .dbline 92
0074 ; ENABLE;
0074 7894 sei
0076 .dbline 93
0076 4427 clr R20
0078 5527 clr R21
007A 02C0 xjmp L9
007C L6:
007C .dbline 93
007C L7:
007C .dbline 93
007C 4F5F subi R20,255 ; offset = 1
007E 5F4F sbci R21,255
0080 L9:
0080 .dbline 93
0080 ; for(i=0;i<50000;i++);
0080 4035 cpi R20,80
0082 E3EC ldi R30,195
0084 5E07 cpc R21,R30
0086 D0F3 brlo L6
0088 .dbline 94
0088 ; DISABLE;
0088 F894 cli
008A .dbline 95
008A ; connect_USB();
008A D9DF xcall _connect_USB
008C .dbline -2
008C L5:
008C 0E940000 xcall pop_gset1
0090 .dbline 0 ; func end
0090 0895 ret
0092 .dbsym r i 20 i
0092 .dbend
0092 .dbfunc e stall_ep0 _stall_ep0 fV
.even
0092 _stall_ep0::
0092 .dbline -1
0092 .dbline 98
0092 ; }
0092 ; void stall_ep0()
0092 ; {
0092 .dbline 99
0092 ; D12_SetEndpointStatus(0,1);
0092 21E0 ldi R18,1
0094 0027 clr R16
0096 0E940000 xcall _D12_SetEndpointStatus
009A .dbline 100
009A ; D12_SetEndpointStatus(1,1);
009A 21E0 ldi R18,1
009C 01E0 ldi R16,1
009E 0E940000 xcall _D12_SetEndpointStatus
00A2 .dbline -2
00A2 L10:
00A2 .dbline 0 ; func end
00A2 0895 ret
00A4 .dbend
00A4 .dbfunc e init_unconfig _init_unconfig fV
.even
00A4 _init_unconfig::
00A4 .dbline -1
00A4 .dbline 103
00A4 ; }
00A4 ; void init_unconfig(void)
00A4 ; {
00A4 .dbline 104
00A4 ; D12_SetEndpointEnable(0);
00A4 0027 clr R16
00A6 0E940000 xcall _D12_SetEndpointEnable
00AA .dbline -2
00AA L11:
00AA .dbline 0 ; func end
00AA 0895 ret
00AC .dbend
00AC .dbfunc e init_config _init_config fV
.even
00AC _init_config::
00AC .dbline -1
00AC .dbline 107
00AC ; }
00AC ; void init_config(void)
00AC ; {
00AC .dbline 108
00AC ; D12_SetEndpointEnable(1);
00AC 01E0 ldi R16,1
00AE 0E940000 xcall _D12_SetEndpointEnable
00B2 .dbline -2
00B2 L12:
00B2 .dbline 0 ; func end
00B2 0895 ret
00B4 .dbend
00B4 .dbfunc e single_transmit _single_transmit fV
00B4 ; len -> R20
00B4 ; buf -> R22,R23
.even
00B4 _single_transmit::
00B4 0E940000 xcall push_gset2
00B8 422F mov R20,R18
00BA B801 movw R22,R16
00BC 2297 sbiw R28,2
00BE .dbline -1
00BE .dbline 111
00BE .dbline 112
00BE 80E1 ldi R24,16
00C0 8417 cp R24,R20
00C2 30F0 brlo L14
00C4 .dbline 113
00C4 .dbline 114
00C4 7983 std y+1,R23
00C6 6883 std y+0,R22
00C8 242F mov R18,R20
00CA 01E0 ldi R16,1
00CC 0E940000 xcall _D12_WriteEndpoint
00D0 .dbline 115
00D0 L14:
00D0 .dbline -2
00D0 L13:
00D0 2296 adiw R28,2
00D2 0E940000 xcall pop_gset2
00D6 .dbline 0 ; func end
00D6 0895 ret
00D8 .dbsym r len 20 c
00D8 .dbsym r buf 22 pc
00D8 .dbend
00D8 .dbfunc e code_transmit _code_transmit fV
00D8 ; len -> R22,R23
00D8 ; pRomData -> R20,R21
.even
00D8 _code_transmit::
00D8 0E940000 xcall push_gset2
00DC B901 movw R22,R18
00DE A801 movw R20,R16
00E0 2297 sbiw R28,2
00E2 .dbline -1
00E2 .dbline 118
00E2 ; }
00E2 ; void single_transmit(unsigned char * buf,unsigned char len)
00E2 ; {
00E2 ; if(len<=EP0_PACKET_SIZE)
00E2 ; {
00E2 ; D12_WriteEndpoint(1,len,buf);
00E2 ; }
00E2 ; }
00E2 ; void code_transmit(const unsigned char * pRomData,unsigned short len)
00E2 ; {
00E2 .dbline 119
00E2 ; ControlData.wCount=0;
00E2 2224 clr R2
00E4 3324 clr R3
00E6 30920B00 sts _ControlData+10+1,R3
00EA 20920A00 sts _ControlData+10,R2
00EE .dbline 120
00EE ; if(ControlData.wLength>len)
00EE 20900800 lds R2,_ControlData+8
00F2 30900900 lds R3,_ControlData+8+1
00F6 6215 cp R22,R2
00F8 7305 cpc R23,R3
00FA 20F4 brsh L18
00FC .dbline 121
00FC ; ControlData.wLength=len;
00FC 70930900 sts _ControlData+8+1,R23
0100 60930800 sts _ControlData+8,R22
0104 L18:
0104 .dbline 122
0104 ; ControlData.pCData=pRomData;
0104 50930F00 sts _ControlData+14+1,R21
0108 40930E00 sts _ControlData+14,R20
010C .dbline 123
010C ; if(ControlData.wLength>=EP0_PACKET_SIZE)
010C 80910800 lds R24,_ControlData+8
0110 90910900 lds R25,_ControlData+8+1
0114 8031 cpi R24,16
0116 E0E0 ldi R30,0
0118 9E07 cpc R25,R30
011A 20F1 brlo L23
011C .dbline 124
011C ; {
011C .dbline 125
011C ; bEPPflags.bits.rom_state=1;
011C 80910000 lds R24,_bEPPflags
0120 90910100 lds R25,_bEPPflags+1
0124 9860 ori R25,8
0126 90930100 sts _bEPPflags+1,R25
012A 80930000 sts _bEPPflags,R24
012E .dbline 126
012E ; D12_CWriteEndpoint(1,EP0_PACKET_SIZE,ControlData.pCData);
012E 1A01 movw R2,R20
0130 3982 std y+1,R3
0132 2882 std y+0,R2
0134 20E1 ldi R18,16
0136 30E0 ldi R19,0
0138 01E0 ldi R16,1
013A 10E0 ldi R17,0
013C 0E940000 xcall _D12_CWriteEndpoint
0140 .dbline 127
0140 ; ControlData.wCount+=EP0_PACKET_SIZE;
0140 80910A00 lds R24,_ControlData+10
0144 90910B00 lds R25,_ControlData+10+1
0148 4096 adiw R24,16
014A 90930B00 sts _ControlData+10+1,R25
014E 80930A00 sts _ControlData+10,R24
0152 .dbline 128
0152 ; DISABLE;
0152 F894 cli
0154 .dbline 129
0154 ; bEPPflags.bits.control_state=USB_TRANSMIT;
0154 80910000 lds R24,_bEPPflags
0158 8F79 andi R24,159
015A 8062 ori R24,32
015C 80930000 sts _bEPPflags,R24
0160 .dbline 130
0160 ; ENABLE;
0160 7894 sei
0162 .dbline 131
0162 ; }
0162 1FC0 xjmp L24
0164 L23:
0164 .dbline 133
0164 .dbline 134
0164 5983 std y+1,R21
0166 4883 std y+0,R20
0168 20910800 lds R18,_ControlData+8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -