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

📄 usb.asm

📁 此程序为usb的驱动程序代码
💻 ASM
字号:
*
		.mmregs
		.include constant.inc
		.include c54.inc
		
		.def usb_read
		.ref sensor_map
		.ref io_map,page
		.ref usbbuf,BUFFER
		.ref IC_COLD_RST,COM_IC
		.ref select_a,select_b
				
	    .sect "progsys"
*********************** usb_read *********************        
usb_read:
		PSHM AL
		PSHM AH
		PSHM AG
		PSHM AR2
		PSHM AR3
		
*	b write_card	
		PORTR USB_COMMAND,*(io_map)
		ANDM #0x03,*(io_map)
		CMPM *(io_map),#0
		nop
		nop
		XC 2,TC
		B reset_card			;复位卡子程序
		
		CMPM *(io_map),#2
		nop
		nop
		XC 2,TC
		B write_card			;向卡写命令子程序
		
		CMPM *(io_map),#3
		nop
		nop
		XC 2,TC
		B select_card			;选择A卡或B卡
		
********************************************************
*采集指纹图象子程序:
		
		stm #(600-1),BRC		;延时400 * 10000 *10ns=40ms
		rptb delay-1
		rpt #10000
		nop
delay:	nop
		

		
*RAH=0    						;设置图象区域
		ST Sensor_RAH,*(sensor_map)
		PORTW *(sensor_map),Sensor_index
		ST #0,*(sensor_map)
		PORTW *(sensor_map),Sensor_data	
		RPT #3000
		NOP
*RAL=22		
		ST Sensor_RAL,*(sensor_map)
		PORTW *(sensor_map),Sensor_index
		ST #22,*(sensor_map)
		PORTW *(sensor_map),Sensor_data	
		RPT #3000
		NOP
*CAL=0		
		ST Sensor_CAL,*(sensor_map)
		PORTW *(sensor_map),Sensor_index
		ST #0,*(sensor_map)
		PORTW *(sensor_map),Sensor_data	
		RPT #3000
		NOP
*REH=1 		
		ST Sensor_REH,*(sensor_map)
		PORTW *(sensor_map),Sensor_index
		ST #1,*(sensor_map)
		PORTW *(sensor_map),Sensor_data	
		RPT #3000
		NOP
*REL=21 		
		ST Sensor_REL,*(sensor_map)
		PORTW *(sensor_map),Sensor_index
		ST #21,*(sensor_map)
		PORTW *(sensor_map),Sensor_data	
		RPT #3000
		NOP
*CEL=255		
		ST Sensor_CEL,*(sensor_map)
		PORTW *(sensor_map),Sensor_index
		ST #255,*(sensor_map)
		PORTW *(sensor_map),Sensor_data	
		RPT #3000
		NOP

*mbf200_P1=1  LED=1
		ST Sensor_CTRLC,*(sensor_map)
		PORTW *(sensor_map),Sensor_index
		ST #0x41,*(sensor_map)
		PORTW *(sensor_map),Sensor_data

		
*CTRLA=0x04					开始采集:256*256
		ST Sensor_CTRLA,*(sensor_map)
		PORTW *(sensor_map),Sensor_index
		ST #0x04,*(sensor_map)
		PORTW *(sensor_map),Sensor_data

	
		STM #(256-1),AR3
finger_begin:
		RPT #(280+1280)		;(280+1280)*10ns行等待时间,共256行
		NOP
		
		STM #(256-1), BRC
		RPTB end_line-1
		
		PORTR Sensor_data,*(sensor_map)
		ANDM #0xff,*(sensor_map)
		
next:
		PORTR #(USB_STATUS+2),*(io_map)
		ANDM #0x01,*(io_map)
		CMPM *(io_map),0x01
		nop
		nop
		XC 2,NTC
		B next
		
		PORTW *(sensor_map),#(USB_DATA+2) 
		
		RPT #(60-1)			;60*10ns点等待时间共256*256点
		NOP
end_line:
		nop
		
		BANZ finger_begin,*AR3-
		nop

		ST Sensor_CTRLC,*(sensor_map)
		PORTW *(sensor_map),Sensor_index
		ST #0x40,*(sensor_map)
		PORTW *(sensor_map),Sensor_data
		B usb_exit

*********************************************************
reset_card:
		CALL IC_COLD_RST			;调用复位卡函数
		
		MVMD AR7,*(usbbuf)			;返回数据的长度
		
		STM #(usbbuf+1),AR2			
		STM #BUFFER,AR3				;返回数据的起始地址
		
		RPT #(18-1)
		MVDD *AR3+,*AR2+
		
		STM #usbbuf,AR2				;usb发送缓冲区首地址
		STM #(512-1),AR3
reset_card_1:
		PORTR #(USB_STATUS+3),*(io_map)	;usb发送用端点8
		ANDM #0x01,*(io_map)
		CMPM *(io_map),0x01
		nop
		nop
		XC 2,NTC
		B reset_card_1
		
		PORTW *AR2+,#(USB_DATA+3) 
		
		BANZ reset_card_1,*AR3-
				
		B usb_exit
*********************************************************
write_card:							;向卡中写命令
		STM #usbbuf,AR2
		STM #(512-1),AR3
		
		RPTZ A,  #(1024-1)				;清接收缓冲区
		STL A,*AR2+
		
		STM #usbbuf,AR2
write_card_1:
		PORTR #(USB_STATUS+1),*(io_map)	;接收usb数据用端点4,out
		BITF *(io_map),0x02
		BC write_card_1,NTC 
		
		PORTR #(USB_DATA+1) ,*AR2
		ANDM #0xff,*AR2+
		
		BANZ write_card_1,*AR3-	
		
		STM #(usbbuf+1),AR7				;写命令到卡中
		CALL COM_IC
		
*-------------------------------------------------------
*通过USB 端点8把数据返回到pc机中。
		ST #2,*(usbbuf)				;返回数据的长度
		
		STM #(usbbuf+1),AR2			
		STM #BUFFER,AR3				;返回数据的起始地址
		
		RPT #(18-1)
		MVDD *AR3+,*AR2+
		
		STM #usbbuf,AR2				;usb发送缓冲区首地址
		STM #(512-1),AR3
write_card_2:
		PORTR #(USB_STATUS+3),*(io_map)	;usb发送用端点8
		ANDM #0x01,*(io_map)
		CMPM *(io_map),0x01
		nop
		nop
		XC 2,NTC
		B write_card_2
		
		PORTW *AR2+,#(USB_DATA+3) 
		
		BANZ write_card_2,*AR3-		
		
*										发送结束						
		B usb_exit
*********************************************************
select_card:
		STM #usbbuf,AR2
		STM #(512-1),AR3
		
		RPTZ A,  #(1024-1)
		STL A,*AR2+
		
		STM #usbbuf,AR2
select_card_1:
		PORTR #(USB_STATUS+1),*(io_map)	;用端点4,out
		BITF *(io_map),0x02
		BC select_card_1,NTC 
		
		PORTR #(USB_DATA+1) ,*AR2
		ANDM #0xff,*AR2+
		
		BANZ select_card_1,*AR3-
		
		CMPM *(usbbuf),#0xaa
		CC select_a,TC					;选择A卡
		
		CMPM *(usbbuf),#0xbb
		CC select_b,TC					;选择B卡	

*********************************************************
usb_exit:		
		POPM AR3
		POPM AR2
		POPM AG
		POPM AH
		POPM AL
		
		RET
		

⌨️ 快捷键说明

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