📄 d12_setup.lis
字号:
.module D12_setup.c
.area data(ram, con, rel)
0000 _StandardDeviceRequest::
0000 .blkw 1
.area idata
0000 1200 .word PL_get_status
.area data(ram, con, rel)
0002 .blkw 1
.area idata
0002 1000 .word PL_clear_feature
.area data(ram, con, rel)
0004 .blkw 1
.area idata
0004 0E00 .word PL_void_function
.area data(ram, con, rel)
0006 .blkw 1
.area idata
0006 0C00 .word PL_set_feature
.area data(ram, con, rel)
0008 .blkw 1
.area idata
0008 0E00 .word PL_void_function
.area data(ram, con, rel)
000A .blkw 1
.area idata
000A 0A00 .word PL_set_address
.area data(ram, con, rel)
000C .blkw 1
.area idata
000C 0800 .word PL_get_descriptor
.area data(ram, con, rel)
000E .blkw 1
.area idata
000E 0E00 .word PL_void_function
.area data(ram, con, rel)
0010 .blkw 1
.area idata
0010 0600 .word PL_get_configuration
.area data(ram, con, rel)
0012 .blkw 1
.area idata
0012 0400 .word PL_set_configuration
.area data(ram, con, rel)
0014 .blkw 1
.area idata
0014 0200 .word PL_get_interface
.area data(ram, con, rel)
0016 .blkw 1
.area idata
0016 0000 .word PL_set_interface
.area data(ram, con, rel)
0018 .blkw 1
.area idata
0018 0E00 .word PL_void_function
.area data(ram, con, rel)
001A .dbfile G:\Backup\6月1日flag置(认为接近最终)\ilx511_usb/d12setup.h
001A .dbsym e StandardDeviceRequest _StandardDeviceRequest A[26:13]pfV
.area lit(rom, con, rel)
0000 _device_descriptor::
0000 1201 .byte 18,1
0002 1001 .byte 16,1
0004 DC00 .byte 220,0
0006 0010 .byte 0,16
0008 7104 .byte 'q,4
000A 9008 .byte 144,8
000C 0001 .byte 0,1
000E 0000 .byte 0,0
0010 0001 .byte 0,1
0012 .dbsym e device_descriptor _device_descriptor A[18:18]kc
0012 _Configuration_Descriptor::
0012 0902 .byte 9,2
0014 2E00 .byte 46,0
0016 0101 .byte 1,1
0018 0020 .byte 0,32
001A 64 .byte 'd
001B .dbsym e Configuration_Descriptor _Configuration_Descriptor A[9:9]kc
001B _Interface_Descriptor::
001B 0904 .byte 9,4
001D 0000 .byte 0,0
001F 04DC .byte 4,220
0021 A0B0 .byte 160,176
0023 00 .byte 0
0024 .dbsym e Interface_Descriptor _Interface_Descriptor A[9:9]kc
0024 _Endpoint1_out_Descriptor::
0024 0705 .byte 7,5
0026 0103 .byte 1,3
0028 1000 .byte 16,0
002A 01 .byte 1
002B .dbsym e Endpoint1_out_Descriptor _Endpoint1_out_Descriptor A[7:7]kc
002B _Endpoint1_in_Descriptor::
002B 0705 .byte 7,5
002D 8103 .byte 129,3
002F 1000 .byte 16,0
0031 01 .byte 1
0032 .dbsym e Endpoint1_in_Descriptor _Endpoint1_in_Descriptor A[7:7]kc
0032 _Endpoint2_out_Descriptor::
0032 0705 .byte 7,5
0034 0202 .byte 2,2
0036 4000 .byte 64,0
0038 01 .byte 1
0039 .dbsym e Endpoint2_out_Descriptor _Endpoint2_out_Descriptor A[7:7]kc
0039 _Endpoint2_in_Descriptor::
0039 0705 .byte 7,5
003B 8202 .byte 130,2
003D 4000 .byte 64,0
003F 01 .byte 1
0040 .dbsym e Endpoint2_in_Descriptor _Endpoint2_in_Descriptor A[7:7]kc
.area text(rom, con, rel)
0000 .dbfile G:\Backup\6月1日flag置(认为接近最终)\ilx511_usb/d12setup.h
0000 .dbfile G:\Backup\6月1日flag置(认为接近最终)\ilx511_usb\D12_setup.c
0000 .dbfunc e Setup_control _Setup_control fV
0000 ; p -> R10,R11
0000 ; j -> R22
0000 ; i -> R20
.even
0000 _Setup_control::
0000 00D0 rcall push_gset3
0002 .dbline -1
0002 .dbline 9
0002 ; #include "io8515v.h"
0002 ; #include "d12head.h"
0002 ; #include "d12setup.h"
0002 ;
0002 ; TRANSMIT_STRUCT XmtBuff;
0002 ; ///int bconfig;
0002 ;
0002 ; void Setup_control(void)
0002 ; {
0002 .dbline 11
0002 ; char i,j,*p;
0002 ; D12_COMMAND = 0x00;// 选择端点0(指针指向0位置)
0002 2224 clr R2
0004 2092017F sts 32513,R2
0008 .dbline 12
0008 ; cwait;
0008 0000 nop
000A .dbline 13
000A ; D12_COMMAND = 0xf0;// 读标准控制码
000A 80EF ldi R24,240
000C 8093017F sts 32513,R24
0010 .dbline 14
0010 ; cwait1;
0010 0000 nop
0012 .dbline 14
0012 0000 nop
0014 .dbline 15
0014 ; i = D12_DATA;
0014 4091007F lds R20,32512
0018 .dbline 16
0018 ; cwait1;
0018 0000 nop
001A .dbline 16
001A 0000 nop
001C .dbline 17
001C ; i = D12_DATA;//长度
001C 4091007F lds R20,32512
0020 .dbline 18
0020 ; cwait1;
0020 0000 nop
0022 .dbline 18
0022 0000 nop
0024 .dbline 19
0024 ; j = D12_DATA;
0024 6091007F lds R22,32512
0028 .dbline 20
0028 ; csram;
0028 609301FC sts 0xfc01,R22
002C .dbline 20
002C .dbline 21
002C ; p = XmtBuff.b;
002C E0E0 ldi R30,<_XmtBuff
002E F0E0 ldi R31,>_XmtBuff
0030 .dbline 22
0030 ; *(p++) = j;
0030 6193 st Z+,R22
0032 5F01 movw R10,R30
0034 .dbline 23
0034 ; for(i=0;i<7;i++)
0034 4427 clr R20
0036 06C0 rjmp L11
0038 L8:
0038 .dbline 24
0038 .dbline 25
0038 6091007F lds R22,32512
003C .dbline 26
003C 609301FC sts 0xfc01,R22
0040 .dbline 26
0040 .dbline 27
0040 6193 st Z+,R22
0042 .dbline 28
0042 L9:
0042 .dbline 23
0042 4395 inc R20
0044 L11:
0044 .dbline 23
0044 4730 cpi R20,7
0046 C0F3 brlo L8
0048 .dbline 29
0048 ; {
0048 ; j = D12_DATA;
0048 ; csram;
0048 ; asm("st Z+,%j");
0048 ; }
0048 ; D12_COMMAND = 0x01;// 选择端点 1(指针指向0位置)
0048 81E0 ldi R24,1
004A 8093017F sts 32513,R24
004E .dbline 30
004E ; cwait;
004E 0000 nop
0050 .dbline 31
0050 ; D12_COMMAND = 0xf1;// 应答SETUP包,使能(清 OUT 缓冲区、使能 IN 缓冲区)命令
0050 81EF ldi R24,241
0052 8093017F sts 32513,R24
0056 .dbline 32
0056 ; csram;
0056 609301FC sts 0xfc01,R22
005A .dbline 32
005A .dbline 33
005A ; i = XmtBuff.b[1];
005A 40910100 lds R20,_XmtBuff+1
005E .dbline 34
005E ; if(XmtBuff.b[0] & 0x40)//厂商请求跳转表
005E 20900000 lds R2,_XmtBuff
0062 26FE sbrs R2,6
0064 01C0 rjmp L13
0066 .dbline 35
0066 ; {
0066 .dbline 37
0066 ; //if (i <= 0x0f)
0066 ; {
0066 .dbline 39
0066 ; //(*VendorDeviceRequest[i])();
0066 ; }
0066 .dbline 40
0066 ; }
0066 0EC0 rjmp L14
0068 L13:
0068 .dbline 42
0068 ; else
0068 ; {
0068 .dbline 43
0068 ; if (i <= 0x0B)//标准请求跳转表
0068 8BE0 ldi R24,11
006A 8417 cp R24,R20
006C 58F0 brlo L15
006E .dbline 44
006E ; {
006E .dbline 45
006E ; (*StandardDeviceRequest[i])();
006E 82E0 ldi R24,2
0070 849F mul R24,R20
0072 F001 movw R30,R0
0074 80E0 ldi R24,<_StandardDeviceRequest
0076 90E0 ldi R25,>_StandardDeviceRequest
0078 E80F add R30,R24
007A F91F adc R31,R25
007C A081 ldd R26,z+0
007E B181 ldd R27,z+1
0080 FD01 movw R30,R26
0082 00D0 rcall xicall
0084 .dbline 46
0084 ; }
0084 L15:
0084 .dbline 47
0084 ; }
0084 L14:
0084 .dbline 48
0084 ; D12_COMMAND = 0x00;// 选择端点0(指针指向0位置)
0084 2224 clr R2
0086 2092017F sts 32513,R2
008A .dbline 49
008A ; cwait;
008A 0000 nop
008C .dbline 50
008C ; D12_COMMAND = 0xf1;// 应答SETUP包,使能(清 OUT 缓冲区、使能 IN 缓冲区)命令
008C 81EF ldi R24,241
008E 8093017F sts 32513,R24
0092 .dbline 51
0092 ; cwait;
0092 0000 nop
0094 .dbline 52
0094 ; D12_COMMAND = 0xf2;// 清 OUT 缓冲区
0094 82EF ldi R24,242
0096 8093017F sts 32513,R24
009A .dbline -2
009A .dbline 53
009A ; }
009A L7:
009A 00D0 rcall pop_gset3
009C .dbline 0 ; func end
009C 0895 ret
009E .dbsym r p 10 pc
009E .dbsym r j 22 c
009E .dbsym r i 20 c
009E .dbend
009E .dbfunc e void_function _void_function fV
.even
009E _void_function::
009E .dbline -1
009E .dbline 56
009E ;
009E ; void void_function(void)
009E ; {
009E .dbline 57
009E ; D12_COMMAND = 0x40;// 0 端点停止(用于发送Stall包)
009E 80E4 ldi R24,64
00A0 8093017F sts 32513,R24
00A4 .dbline 58
00A4 ; cwait;
00A4 0000 nop
00A6 .dbline 59
00A6 ; D12_DATA = 0x01;
00A6 81E0 ldi R24,1
00A8 8093007F sts 32512,R24
00AC .dbline 60
00AC ; cwait;
00AC 0000 nop
00AE .dbline 61
00AE ; D12_COMMAND = 0x41;// 1 端点停止(用于发送Stall包)
00AE 81E4 ldi R24,65
00B0 8093017F sts 32513,R24
00B4 .dbline 62
00B4 ; cwait;
00B4 0000 nop
00B6 .dbline 63
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -