⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap9.lst

📁 AVR单片机控制的PDIUSBD12原程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 728 022e 0895      		ret
 729               	/* epilogue end (size=1) */
 730               	/* function set_address size 12 (11) */
 732               	.Lscope8:
 734               	.global	get_descriptor
 736               	get_descriptor:
 168:chap9.c       **** }
 169:chap9.c       **** //获取描述符
 170:chap9.c       **** void get_descriptor(void)
 171:chap9.c       **** {
 738               	.LM74:
 739               	/* prologue: frame size=0 */
 740               	/* prologue end (size=0) */
 172:chap9.c       **** 	//读取请求的描述符类型
 173:chap9.c       **** 	unsigned char bDescriptor = ControlData.DeviceRequest.wValue;
 742               	.LM75:
 743 0230 8091 0000 		lds r24,ControlData+2
 174:chap9.c       **** 	if(bDescriptor == USB_DEVICE_DESCRIPTOR_TYPE)
 745               	.LM76:
 746 0234 8130      		cpi r24,lo8(1)
 747 0236 29F4      		brne .L45
 175:chap9.c       **** 	{
 176:chap9.c       **** 		//获取设备描述符
 177:chap9.c       **** 		code_transmit((unsigned char *) & DeviceDescr,sizeof(USB_DEVICE_DESCRIPTOR));
 749               	.LM77:
 750 0238 62E1      		ldi r22,lo8(18)
 751 023a 70E0      		ldi r23,hi8(18)
 752 023c 80E0      		ldi r24,lo8(DeviceDescr)
 753 023e 90E0      		ldi r25,hi8(DeviceDescr)
 754 0240 14C0      		rjmp .L50
 755               	.L45:
 178:chap9.c       **** 	}
 179:chap9.c       **** 	else
 180:chap9.c       **** 		if(bDescriptor == USB_CONFIGURATION_DESCRIPTOR_TYPE)
 757               	.LM78:
 758 0242 8230      		cpi r24,lo8(2)
 759 0244 A9F4      		brne .L47
 181:chap9.c       **** 		{
 182:chap9.c       **** 			if(ControlData.DeviceRequest.wLength>CONFIG_DESCRIPTOR_LENGTH)
 761               	.LM79:
 762 0246 8091 0000 		lds r24,ControlData+6
 763 024a 9091 0000 		lds r25,(ControlData+6)+1
 764 024e 8F97      		sbiw r24,47
 765 0250 30F0      		brlo .L48
 183:chap9.c       **** 				ControlData.DeviceRequest.wLength=CONFIG_DESCRIPTOR_LENGTH;
 767               	.LM80:
 768 0252 8EE2      		ldi r24,lo8(46)
 769 0254 90E0      		ldi r25,hi8(46)
 770 0256 9093 0000 		sts (ControlData+6)+1,r25
 771 025a 8093 0000 		sts ControlData+6,r24
 772               	.L48:
 184:chap9.c       **** 			//获取配置描述符+配置描述符+接口描述符+端点描述符
 185:chap9.c       **** 			code_transmit((unsigned char *) & ConfigDescr,ControlData.DeviceRequest.wLength);
 774               	.LM81:
 775 025e 6091 0000 		lds r22,ControlData+6
 776 0262 7091 0000 		lds r23,(ControlData+6)+1
 777 0266 80E0      		ldi r24,lo8(ConfigDescr)
 778 0268 90E0      		ldi r25,hi8(ConfigDescr)
 779               	.L50:
 780 026a 0E94 0000 		call code_transmit
 781 026e 0895      		ret
 782               	.L47:
 186:chap9.c       **** 		}
 187:chap9.c       **** 		else
 188:chap9.c       **** 		stall_ep0();										//没有该请求,返回STALL		
 784               	.LM82:
 785 0270 0E94 0000 		call stall_ep0
 786 0274 0895      		ret
 787               	/* epilogue: frame size=0 */
 788               	/* epilogue: noreturn */
 789               	/* epilogue end (size=0) */
 790               	/* function get_descriptor size 36 (36) */
 795               	.Lscope9:
 797               	.global	get_configuration
 799               	get_configuration:
 189:chap9.c       **** }
 190:chap9.c       **** //获取配置
 191:chap9.c       **** void get_configuration(void)
 192:chap9.c       **** {
 801               	.LM83:
 802               	/* prologue: frame size=1 */
 803 0276 CF93      		push r28
 804 0278 DF93      		push r29
 805 027a CDB7      		in r28,__SP_L__
 806 027c DEB7      		in r29,__SP_H__
 807 027e 2197      		sbiw r28,1
 808 0280 0FB6      		in __tmp_reg__,__SREG__
 809 0282 F894      		cli
 810 0284 DEBF      		out __SP_H__,r29
 811 0286 0FBE      		out __SREG__,__tmp_reg__
 812 0288 CDBF      		out __SP_L__,r28
 813               	/* prologue end (size=10) */
 193:chap9.c       **** 	unsigned char c=bEPPflags.bits.configuration;
 815               	.LM84:
 816 028a 8091 0000 		lds r24,bEPPflags+1
 817 028e 8170      		andi r24,lo8(1)
 818 0290 8983      		std Y+1,r24
 194:chap9.c       **** 	single_transmit(&c,1);
 820               	.LM85:
 821 0292 61E0      		ldi r22,lo8(1)
 822 0294 CE01      		movw r24,r28
 823 0296 0196      		adiw r24,1
 824 0298 0E94 0000 		call single_transmit
 825               	/* epilogue: frame size=1 */
 826 029c 2196      		adiw r28,1
 827 029e 0FB6      		in __tmp_reg__,__SREG__
 828 02a0 F894      		cli
 829 02a2 DEBF      		out __SP_H__,r29
 830 02a4 0FBE      		out __SREG__,__tmp_reg__
 831 02a6 CDBF      		out __SP_L__,r28
 832 02a8 DF91      		pop r29
 833 02aa CF91      		pop r28
 834 02ac 0895      		ret
 835               	/* epilogue end (size=9) */
 836               	/* function get_configuration size 28 (9) */
 841               	.Lscope10:
 843               	.global	set_configuration
 845               	set_configuration:
 195:chap9.c       **** }
 196:chap9.c       **** //设置配置
 197:chap9.c       **** void set_configuration(void)
 198:chap9.c       **** {
 847               	.LM86:
 848               	/* prologue: frame size=0 */
 849               	/* prologue end (size=0) */
 199:chap9.c       **** 	if(ControlData.DeviceRequest.wValue==0)
 851               	.LM87:
 852 02ae 8091 0000 		lds r24,ControlData+2
 853 02b2 9091 0000 		lds r25,(ControlData+2)+1
 854 02b6 0097      		sbiw r24,0
 855 02b8 69F4      		brne .L53
 200:chap9.c       **** 	{
 201:chap9.c       **** 		//配置值不对,设备进入未配置状态
 202:chap9.c       **** 		single_transmit(0,0);						//发送响应
 857               	.LM88:
 858 02ba 60E0      		ldi r22,lo8(0)
 859 02bc 0E94 0000 		call single_transmit
 203:chap9.c       **** 		DISABLE;
 861               	.LM89:
 862               	/* #APP */
 863 02c0 F894      		cli
 204:chap9.c       **** 		bEPPflags.bits.configuration=0;				//标记未配置
 865               	.LM90:
 866               	/* #NOAPP */
 867 02c2 8091 0000 		lds r24,bEPPflags+1
 868 02c6 8E7F      		andi r24,lo8(-2)
 869 02c8 8093 0000 		sts bEPPflags+1,r24
 205:chap9.c       **** 		ENABLE;
 871               	.LM91:
 872               	/* #APP */
 873 02cc 7894      		sei
 206:chap9.c       **** 		init_unconfig();							//进入地址状态,禁止0除外的所有端点
 875               	.LM92:
 876               	/* #NOAPP */
 877 02ce 0E94 0000 		call init_unconfig
 878 02d2 0895      		ret
 879               	.L53:
 207:chap9.c       **** 	}
 208:chap9.c       **** 	else
 209:chap9.c       **** 		if(ControlData.DeviceRequest.wValue==1)
 881               	.LM93:
 882 02d4 0197      		sbiw r24,1
 883 02d6 89F4      		brne .L55
 210:chap9.c       **** 		{
 211:chap9.c       **** 			//
 212:chap9.c       **** 			single_transmit(0,0);						//发送响应
 885               	.LM94:
 886 02d8 60E0      		ldi r22,lo8(0)
 887 02da 80E0      		ldi r24,lo8(0)
 888 02dc 90E0      		ldi r25,hi8(0)
 889 02de 0E94 0000 		call single_transmit
 213:chap9.c       **** 			init_unconfig();							//进入地址状态,禁止0除外的所有端点
 891               	.LM95:
 892 02e2 0E94 0000 		call init_unconfig
 214:chap9.c       **** 			init_config();								//配置处理,允许端点收发
 894               	.LM96:
 895 02e6 0E94 0000 		call init_config
 215:chap9.c       **** 			DISABLE;
 897               	.LM97:
 898               	/* #APP */
 899 02ea F894      		cli
 216:chap9.c       **** 			bEPPflags.bits.configuration=1;				//标记配置
 901               	.LM98:
 902               	/* #NOAPP */
 903 02ec 8091 0000 		lds r24,bEPPflags+1
 904 02f0 8160      		ori r24,lo8(1)
 905 02f2 8093 0000 		sts bEPPflags+1,r24
 217:chap9.c       **** 			ENABLE;
 907               	.LM99:
 908               	/* #APP */
 909 02f6 7894      		sei
 910               	/* #NOAPP */
 911 02f8 0895      		ret
 912               	.L55:
 218:chap9.c       **** 		}
 219:chap9.c       **** 		else
 220:chap9.c       **** 			stall_ep0();								//没有该请求,返回STALL
 914               	.LM100:
 915 02fa 0E94 0000 		call stall_ep0
 916 02fe 0895      		ret
 917               	/* epilogue: frame size=0 */
 918               	/* epilogue: noreturn */
 919               	/* epilogue end (size=0) */
 920               	/* function set_configuration size 46 (46) */
 922               	.Lscope11:
 924               	.global	get_interface
 926               	get_interface:
 221:chap9.c       **** }
 222:chap9.c       **** //获取接口信息
 223:chap9.c       **** void get_interface(void)
 224:chap9.c       **** {
 928               	.LM101:
 929               	/* prologue: frame size=1 */
 930 0300 CF93      		push r28
 931 0302 DF93      		push r29
 932 0304 CDB7      		in r28,__SP_L__
 933 0306 DEB7      		in r29,__SP_H__
 934 0308 2197      		sbiw r28,1
 935 030a 0FB6      		in __tmp_reg__,__SREG__
 936 030c F894      		cli
 937 030e DEBF      		out __SP_H__,r29
 938 0310 0FBE      		out __SREG__,__tmp_reg__
 939 0312 CDBF      		out __SP_L__,r28
 940               	/* prologue end (size=10) */
 225:chap9.c       **** 	unsigned char txdat =0;							//本设备只有一个接口
 942               	.LM102:
 943 0314 1982      		std Y+1,__zero_reg__
 226:chap9.c       **** 	single_transmit(&txdat,1);
 945               	.LM103:
 946 0316 61E0      		ldi r22,lo8(1)
 947 0318 CE01      		movw r24,r28
 948 031a 0196      		adiw r24,1
 949 031c 0E94 0000 		call single_transmit
 950               	/* epilogue: frame size=1 */
 951 0320 2196      		adiw r28,1
 952 0322 0FB6      		in __tmp_reg__,__SREG__
 953 0324 F894      		cli
 954 0326 DEBF      		out __SP_H__,r29
 955 0328 0FBE      		out __SREG__,__tmp_reg__
 956 032a CDBF      		out __SP_L__,r28
 957 032c DF91      		pop r29
 958 032e CF91      		pop r28
 959 0330 0895      		ret
 960               	/* epilogue end (size=9) */
 961               	/* function get_interface size 25 (6) */
 966               	.Lscope12:
 968               	.global	set_interface
 970               	set_interface:
 227:chap9.c       **** }
 228:chap9.c       **** //设置接口
 229:chap9.c       **** void set_interface(void)
 230:chap9.c       **** {
 972               	.LM104:
 973               	/* prologue: frame size=0 */
 974               	/* prologue end (size=0) */
 231:chap9.c       **** 	if(ControlData.DeviceRequest.wValue==0 && ControlData.DeviceRequest.wIndex==0 )
 976               	.LM105:
 977 0332 8091 0000 		lds r24,ControlData+2
 978 0336 9091 0000 		lds r25,(ControlData+2)+1
 979 033a 892B      		or r24,r25
 980 033c 51F4      		brne .L59
 982               	.LM106:
 983 033e 8091 0000 		lds r24,ControlData+4
 984 0342 9091 0000 		lds r25,(ControlData+4)+1
 985 0346 0097      		sbiw r24,0
 986 0348 21F4      		brne .L59
 232:chap9.c       **** 		single_transmit(0,0);						//发送响应
 988               	.LM107:
 989 034a 60E0      		ldi r22,lo8(0)
 990 034c 0E94 0000 		call single_transmit
 991 0350 0895      		ret
 992               	.L59:
 233:chap9.c       **** 	else
 234:chap9.c       **** 		stall_ep0();								//没有该请求,返回STALL
 994               	.LM108:
 995 0352 0E94 0000 		call stall_ep0
 996 0356 0895      		ret
 997               	/* epilogue: frame size=0 */
 998               	/* epilogue: noreturn */
 999               	/* epilogue end (size=0) */
 1000               	/* function set_interface size 19 (19) */
 1002               	.Lscope13:
 1003               		.comm EpBuf,2,1
 1004               		.comm GenEpBuf,64,1
 1005               		.comm bEPPflags,2,1
 1006               		.comm ControlData,22,1
 1019               		.text
 1021               	Letext:
 1022               	/* File "chap9.c": code  448 = 0x01c0 ( 387), prologues  30, epilogues  31 */
DEFINED SYMBOLS
                            *ABS*:00000000 chap9.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:3      *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:4      *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:5      *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:6      *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:7      *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:110    .data:00000000 EP2_RXDescr
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:120    .data:00000007 EP2_TXDescr
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:130    .data:0000000e EP1_RXDescr
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:140    .data:00000015 EP1_TXDescr
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:150    .data:0000001c InterfaceDescr
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:163    .data:00000025 ConfigDescr
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:175    .data:0000002e DeviceDescr
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:193    .data:00000040 StandardDeviceRequest
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:398    .text:000000ba get_status
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:518    .text:0000013e clear_feature
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:214    .text:00000000 reserved
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:610    .text:000001a4 set_feature
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:710    .text:00000218 set_address
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:736    .text:00000230 get_descriptor
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:799    .text:00000276 get_configuration
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:845    .text:000002ae set_configuration
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:926    .text:00000300 get_interface
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:970    .text:00000332 set_interface
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:231    .text:00000006 init_unconfig
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:249    .text:0000000e init_config
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:269    .text:00000016 single_transmit
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:296    .text:00000024 code_transmit
                            *COM*:00000016 ControlData
                            *COM*:00000002 bEPPflags
                            *COM*:00000002 EpBuf
                            *COM*:00000040 GenEpBuf
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccGQaaaa.s:1021   .text:00000358 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
stall_ep0
D12_SetEndpointEnable
D12_WriteEndpoint
D12_SelectEndpoint
D12_SetEndpointStatus
D12_SetAddressEnable

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -