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