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

📄 usb.asm.bak

📁 TI 5402程序源码
💻 BAK
字号:
*
		.mmregs
		.include constant.inc
		.include c54.inc
		
		.def usb_read
*		.ref io_map,page
		.ref io_map
		.ref usbbuf,BUFFER
	    .sect "progsys"
*********************** usb_read *********************        
usb_read:
		PSHM AL
		PSHM AH
		PSHM AG
		PSHM AR2
		PSHM AR3
		
		STM #usbbuf,AR2
		STM #(512-1),AR3
		
		RPTZ A,  #(1024-1)				;清接收缓冲区
		STL A,*AR2+		
		
		
		
*	Command0	
		PORTR USB_COMMAND,*(io_map)
		ANDM #0x03,*(io_map)
		CMPM *(io_map),#0
		nop
		nop
		XC 2,TC		
		B SameReturn
		
*	Command1		
		CMPM *(io_map),#1
		nop
		nop
		XC 2,TC
		B UpAdd1_1
				
*	Command2		
		CMPM *(io_map),#2
		nop
		nop
		XC 2,TC
		B UpDec1_1			;
		
		
*********************************************************
SameReturn:
		
		STM #usbbuf,AR2				;指向接收存储区起始位置
SameReturn_1:
		PORTR #(USB_STATUS+1),*(io_map)	;接收usb数据用端点4,out
		BITF *(io_map),0x02
		BC SameReturn_1,NTC 			;判断,条件满足方可 接收
		
		PORTR #(USB_DATA+1) ,*AR2
		ANDM #0xff,*AR2+
		
		BANZ SameReturn_1,*AR3-		;接收完512字节
		
		
		;以上完成数据接收,存放在usbbuf
		
		ST #20,*(usbbuf)				;返回数据的长度
		
		STM #(usbbuf+1),AR2			
		STM #BUFFER,AR3				;返回数据的起始地址
		
		RPT #(20-1)					;下行数据原样返回
		MVDD *AR2+,*AR3+
		
		STM #usbbuf,AR2				;usb发送缓冲区首地址
		STM #(512-1),AR3
SameReturn_2:
		PORTR #(USB_STATUS+3),*(io_map)	;usb发送用端点8
		ANDM #0x01,*(io_map)
		CMPM *(io_map),0x01
		nop
		nop
		XC 2,NTC
		B SameReturn_2					;判断,条件满足方可 发送
		
		PORTW *AR2+,#(USB_DATA+3) 
		
		BANZ SameReturn_2,*AR3-		;发送完512字节	
		
		;以上完成数据发送
				
		B usb_exit
		

*********************************************************
UpAdd1_1:
		
		STM #usbbuf,AR2				;指向接收存储区起始位置
UpAdd1_2:
		PORTR #(USB_STATUS+1),*(io_map)	;接收usb数据用端点4,out
		BITF *(io_map),0x02
		BC UpAdd1_2,NTC 			;判断,条件满足方可 接收
		
		PORTR #(USB_DATA+1) ,*AR2
		ANDM #0xff,*AR2+
		
		BANZ UpAdd1_2,*AR3-		;接收完512字节
		
		
		;以上完成数据接收,存放在usbbuf
		
		ST #20,*(usbbuf)				;返回数据的长度
		
		STM #(usbbuf+1),AR2			
		STM #BUFFER,AR3				;返回数据的起始地址
		
		stm #(20-1),BRC				;下行数据加1返回
		rptb AddHere-1
		
		ADDM #1,*AR2
		MVDD *AR2+,*AR3+
AddHere:
		

		
		STM #usbbuf,AR2				;usb发送缓冲区首地址
		STM #(512-1),AR3
UpAdd1_3:
		PORTR #(USB_STATUS+3),*(io_map)	;usb发送用端点8
		ANDM #0x01,*(io_map)
		CMPM *(io_map),0x01
		nop
		nop
		XC 2,NTC
		B UpAdd1_3					;判断,条件满足方可 发送
		
;		PORTW *AR2+,#(USB_DATA+3) 
		PORTW *AR2+,#(USB_DATA+3)
		
		BANZ UpAdd1_3,*AR3-		;发送完512字节	
		
		;以上完成数据发送
				
		B usb_exit					

*********************************************************
UpDec1_1:
		
		STM #usbbuf,AR2				;指向接收存储区起始位置
UpDec1_2:
		PORTR #(USB_STATUS+1),*(io_map)	;接收usb数据用端点4,out
		BITF *(io_map),0x02
		BC UpDec1_2,NTC 			;判断,条件满足方可 接收
		
		PORTR #(USB_DATA+1) ,*AR2
		ANDM #0xff,*AR2+
		
		BANZ UpDec1_2,*AR3-		;接收完512字节
		
		
		;以上完成数据接收,存放在usbbuf
		
		ST #20,*(usbbuf)				;返回数据的长度
		
		STM #(usbbuf+1),AR2			
		STM #BUFFER,AR3				;返回数据的起始地址
		
		stm #(20-1),BRC				;下行数据减1返回
		rptb DecHere-1
		
		ADDM #-1,*AR2
		MVDD *AR2+,*AR3+
DecHere:
		
		STM #usbbuf,AR2				;usb发送缓冲区首地址
		STM #(512-1),AR3
UpDec1_3:
		PORTR #(USB_STATUS+3),*(io_map)	;usb发送用端点8
		ANDM #0x01,*(io_map)
		CMPM *(io_map),0x01
		nop
		nop
		XC 2,NTC
		B UpDec1_3					;判断,条件满足方可 发送
		
;		PORTW *AR2+,#(USB_DATA+3) 
		PORTW *AR2+,#(USB_DATA+3)
		
		BANZ UpDec1_3,*AR3-		;发送完512字节	
		
		;以上完成数据发送
				
;		B usb_exit	
		
*********************************************************
usb_exit:		
		POPM AR3
		POPM AR2
		POPM AG
		POPM AH
		POPM AL
		
		RET
		

⌨️ 快捷键说明

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