亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? logo.asm

?? 利用CY單片機CY7C637XX編寫的USB鼠標程序
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
;******************************************************
;
;	file: 637xx USB logo firmware
;	Date: 02/16/2000
;	Description: This code draw the USB logo using 
;				a mouse cursor on your monitor.  Turn
;				on mouse trails to see the logo.
;	Target: Cypress CY7C63743
;
;
;	Overview:  There is only one task handled by this
;				firmware, and that is USB.
;
;	USB
;		At bus reset the USB interface is re-initialized,
;		and the firmware soft reboots.  We are then able to
;		handle the standard chapter nine requests on 
;		endpoint zero (the control endpoint).  After this
;		device enumerates as a HID mouse on the USB, the
;		requests come to endpoint one (the data endpoint).
;		Endpoint one is used to send mouse displacement and
;		button status information.  In this case we don't
;		send any button information, just the displacement
;		information to make it appear as though we are moving
;		the mouse in a pattern drawing out the letters
;		U-S-B.  In order to see this, it is best to turn on
;		the mouse cursor trails if you are running MS Windows.	
;
;	Pin Connections
;
;			 -------------------
;			| P0[0]		P0[4]	|
;			| P0[1]		P0[5]	|
;			| P0[2]		P0[6]	|
;			| P0[3] 	P0[7]	|
;			| P1[0]		P1[1]	|	
;			| P1[2]		P1[3]	|
;			| P1[4]		P1[5]	|
;			| P1[6]		P1[7]	|
;	GND		| VSS		D+/SCLK	|	USB D+ / PS2 SCLK
;	GND		| VPP		D-/SDATA|	USB D- / PS2 SDATA
;	PULLUP	| VREG		VCC		|	+5
;			| XTALIN	XTALOUT	|
;			 -------------------
;
; Revisions:
;			2-16-2000	SEA		Creation
;
;**********************************************************
;
;		Copyright 2000 Cypress Semiconductor
;	This code is provided by Cypress as a reference.  Cypress 
;	makes no claims or warranties to this firmware's 
;	suitability for any application. 
;
;********************************************************** 

;**************** assembler directives ***************** 

	CPU	63723

	XPAGEON

	INCLUDE	"637xx.inc"
	INCLUDE "USB.inc"

ep1_dmabuff:			equ	F0h
ep1_dmabuff0:			equ	ep1_dmabuff+0
ep1_dmabuff1:			equ	ep1_dmabuff+1
ep1_dmabuff2:			equ	ep1_dmabuff+2
ep1_dmabuff3:			equ	ep1_dmabuff+3
ep1_dmabuff4:			equ	ep1_dmabuff+4
ep1_dmabuff5:			equ	ep1_dmabuff+5
ep1_dmabuff6:			equ	ep1_dmabuff+6
ep1_dmabuff7:			equ	ep1_dmabuff+7

ep0_dmabuff:			equ	F8h
ep0_dmabuff0:			equ	ep0_dmabuff+0
ep0_dmabuff1:			equ	ep0_dmabuff+1
ep0_dmabuff2:			equ	ep0_dmabuff+2
ep0_dmabuff3:			equ	ep0_dmabuff+3
ep0_dmabuff4:			equ	ep0_dmabuff+4
ep0_dmabuff5:			equ	ep0_dmabuff+5
ep0_dmabuff6:			equ	ep0_dmabuff+6
ep0_dmabuff7:			equ	ep0_dmabuff+7

bmRequestType:			equ	ep0_dmabuff0
bRequest:			equ	ep0_dmabuff1
wValuelo:			equ	ep0_dmabuff2
wValuehi:			equ	ep0_dmabuff3
wIndexlo:			equ	ep0_dmabuff4
wIndexhi:			equ	ep0_dmabuff5
wLengthlo:			equ	ep0_dmabuff6
wLengthhi:			equ	ep0_dmabuff7


; DATA MEMORY VARIABLES
;
suspend_count:			equ	20h		; counter for suspend/resume
ep1_data_toggle:		equ	21h		; data toggle for INs on endpoint one
ep0_data_toggle: 		equ	22h		; data toggle for INs on endpoint zero
data_start:			equ	23h		; address of request response data, as an offset
data_count:			equ	24h		; number of bytes to send back to the host
maximum_data_count:		equ	25h		; request response size
ep0_in_machine:			equ	26h		
ep0_in_flag:			equ	27h
configuration:			equ	28h
ep1_stall:			equ	29h
idle:				equ	2Ah
protocol:			equ	2Bh
temp:				equ	2Ch		; temporary register
event_machine:			equ	2Dh
pending_data:			equ	2Eh
int_temp:			equ	2Fh
idle_timer:			equ	30h
idle_prescaler:			equ	31h
logo_index:			equ	32h
ep0_transtype:			equ	33h

; STATE MACHINE CONSTANTS
;EP0 IN TRANSACTIONS
EP0_IN_IDLE:			equ	00h
CONTROL_READ_DATA:		equ	02h
NO_DATA_STATUS:			equ	04h
EP0_IN_STALL:			equ	06h

; FLAG CONSTANTS
;EP0 NO-DATA CONTROL FLAGS
ADDRESS_CHANGE_PENDING:		equ	00h
NO_CHANGE_PENDING:		equ	02h

; RESPONSE SIZES
DEVICE_STATUS_LENGTH:		equ	2
DEVICE_CONFIG_LENGTH:		equ	1
ENDPOINT_STALL_LENGTH:		equ     2
INTERFACE_STATUS_LENGTH:	equ     2
INTERFACE_ALTERNATE_LENGTH:	equ	1
INTERFACE_PROTOCOL_LENGTH:	equ	1

NO_EVENT_PENDING:			equ	00h
EVENT_PENDING:				equ	02h

;***** TRANSACTION TYPES

TRANS_NONE:						equ	00h
TRANS_CONTROL_READ:			equ	02h
TRANS_CONTROL_WRITE:			equ	04h
TRANS_NO_DATA_CONTROL:			equ	06h


;*************** interrupt vector table ****************

ORG 00h			

jmp	reset				; reset vector		

jmp	bus_reset			; bus reset interrupt

jmp	error				; 128us interrupt

jmp	1ms_timer			; 1.024ms interrupt

jmp	endpoint0			; endpoint 0 interrupt

jmp	endpoint1			; endpoint 1 interrupt

jmp	error				; endpoint 2 interrupt

jmp	error				; reserved

jmp	error				; Capture timer A interrupt Vector

jmp	error				; Capture timer B interrupt Vector

jmp	error				; GPIO interrupt vector

jmp	error				; Wake-up interrupt vector 


;************** program listing ************************

ORG  1Ah
error: halt

;*******************************************************
;
;	Interrupt handler: reset
;	Purpose: The program jumps to this routine when
;		 the microcontroller has a power on reset.
;
;*******************************************************

reset:
	; set for use with external oscillator
	mov		A, (LVR_ENABLE|INTERNAL_CLK) 	
	iowr	clock_config

	; setup data memory stack pointer
	mov		A, 68h
	swap	A, dsp		

	; clear variables
	mov		A, 00h		
	mov		[ep0_in_machine], A		; clear ep0 state machine
	mov		[configuration], A
	mov		[ep1_stall], A
	mov		[idle], A
	mov		[suspend_count], A
	mov		[ep1_dmabuff0], A
	mov		[ep1_dmabuff1], A
	mov		[ep1_dmabuff2], A
	mov		[int_temp], A
	mov		[idle_timer], A
	mov		[idle_prescaler], A
	mov		[event_machine], A
	mov		[logo_index], A
	mov		[ep0_transtype], A

	mov		A, 01h
	mov		[protocol], A

		; enable global interrupts
	mov		A, (1MS_INT | USB_RESET_INT)
	iowr 	global_int

	; enable endpoint  0 interrupt
	mov 	A, EP0_INT			
	iowr 	endpoint_int

	; enable USB address for endpoint 0
	mov		A, ADDRESS_ENABLE	;0
	iowr	usb_address

	; enable all interrupts
	ei

	; enable USB pullup resistor
	mov		A, VREG_ENABLE  
	iowr	usb_status

task_loop:

	mov		A, [event_machine]
	jacc	event_machine_jumptable
		no_event_pending:      ;event_machine=0
			; if not configured then skip data transfer
			mov		A, [configuration]
			cmp		A, 01h
			jnz		no_event_task
			; if stalled then skip data transfer
			mov		A, [ep1_stall]
			cmp		A, FFh
			jz		no_event_task
			
			;read logo data
			mov		A, [logo_index]			
			index	logo_table				; get X offset
			mov		[ep1_dmabuff1], A
			inc		[logo_index]
			mov		A, [logo_index]
			index	logo_table				; get Y offset
			mov		[ep1_dmabuff2], A
			inc		[logo_index]
			mov		A, [logo_index]
			cmp		A, 6Eh					; check if at end of table
			jnz		no_table_reset
			mov		A, 00h
			mov		[logo_index], A
			no_table_reset:

			mov		A, 03h				; set endpoint 1 to send 3 bytes
			or		A, [ep1_data_toggle]
			iowr	ep1_count
			mov		A, ACK_IN			; set to ack on endpoint 1
			iowr	ep1_mode	

			mov		A, EVENT_PENDING	; clear pending events
			mov		[event_machine], A 

		event_task_done:
	
	no_event_task:

	        jmp task_loop


;*******************************************************
;
;	Interrupt handler: bus_reset
;	Purpose: The program jumps to this routine when
;		 the microcontroller has a bus reset.
;
;*******************************************************

bus_reset:
	mov		A, STALL_IN_OUT			; set to STALL INs&OUTs
	iowr	        ep0_mode

	mov		A, ADDRESS_ENABLE		; enable USB address 0
	iowr	        usb_address
	mov		A, DISABLE			; disable endpoint1
	iowr		ep1_mode

	mov		A, 00h				; reset program stack pointer
	mov		psp,a	

	jmp		reset


;*******************************************************
;
;	Interrupt: 1ms_clear_control
;	Purpose: Every 1ms this interrupt handler clears
;		the watchdog timer.
;
;*******************************************************

1ms_timer:
	push A

	; clear watchdog timer
	iowr watchdog

	; check for no bus activity/usb suspend
  1ms_suspend_timer:
	iord	usb_status				; read bus activity bit
	and		A, BUS_ACTIVITY	   ;08		; mask off activity bit
	jnz		bus_activity	
			
	inc		[suspend_count]			; increment suspend counter
	mov		A, [suspend_count]
	cmp		A, 04h			; if no bus activity for 3-4ms,
	jz		usb_suspend				; then go into low power suspend
	jmp		ms_timer_done

 	usb_suspend:

		; enable wakeup timer

		mov		A, (USB_RESET_INT)
		iowr 		global_int

  		iord		control
  		or		A, SUSPEND			; set suspend bit
 		ei
 		iowr		control
 		nop

		; look for bus activity, if none go back into suspend
		iord	usb_status
		and		A, BUS_ACTIVITY
		jz		usb_suspend		

		; re-enable interrupts
		mov		A, (1MS_INT | USB_RESET_INT)
		iowr 	global_int


	bus_activity:		;clear the activity bit
		mov		A, 00h				; reset suspend counter
		mov		[suspend_count], A
		iord		usb_status
		and		A, ~BUS_ACTIVITY	; clear bus activity bit
		iowr		usb_status


	ms_timer_done:
		pop A
		reti

;*******************************************************
;
;	Interrupt: endpoint0
;	Purpose: Usb control endpoint handler.  This interrupt
;			handler formulates responses to SETUP and 
;			CONTROL READ, and NO-DATA CONTROL transactions. 
;
;	Jump table entry formulation for bmRequestType and bRequest
;
;	1. Add high and low nibbles of bmRequestType.
;	2. Put result into high nibble of A.
;	3. Mask off bits [6:4].
;	4. Add bRequest to A.
;	5. Double value of A (jmp is two bytes).
;
;*******************************************************

endpoint0:
	push	X
	push	A

	iord	ep0_mode
	and		A, EP0_ACK
	jz		ep0_done

	iord	ep0_mode
	asl		A
	jc		ep0_setup_received
	asl		A
	jc		ep0_in_received
	asl		A
	jc		ep0_out_received
  ep0_done:
	pop		A
	pop		X
	reti

	ep0_setup_received:
 		mov		A, NAK_IN_OUT				; clear setup bit to enable
		iowr		ep0_mode					; writes to EP0 DMA buffer


		mov		A, [bmRequestType]	; compact bmRequestType into 5 bit field
		and		A, E3h			; clear bits 4-3-2, these unused for our purposes
		push	A				; store value
		asr		A			; move bits 7-6-5 into 4-3-2's place
		asr		A
		asr		A
		mov		[int_temp], A		; store shifted value
		pop		A			; get original value
		or		A, [int_temp]		; or the two to get the 5-bit field
		and		A, 1Fh			; clear bits 7-6-5 (asr wraps bit7)
		asl		A	                ; shift to index jumptable,jmp is 2 bytes
		jacc	bmRequestType_jumptable		; jump to handle bmRequestType


		h2d_std_device:
			mov		A, [bRequest]
			asl		A
			jacc	h2d_std_device_jumptable

		h2d_std_interface:	
			mov		A, [bRequest]
			asl		A
			jacc	h2d_std_interface_jumptable

		h2d_std_endpoint:
			mov		A, [bRequest]
			asl		A
			jacc	h2d_std_endpoint_jumptable

		d2h_std_device:
			mov		A, [bRequest]
			asl		A
			jacc	d2h_std_device_jumptable

		d2h_std_interface:
			mov		A, [bRequest]
			asl		A
			jacc	d2h_std_interface_jumptable

		d2h_std_endpoint:
			mov		A, [bRequest]
			asl		A
			jacc	d2h_std_endpoint_jumptable


	;;************ DEVICE REQUESTS **************

	set_device_address:						; SET ADDRESS
		mov		A, ADDRESS_CHANGE_PENDING   ;02h	; set flag to indicate we
		mov		[ep0_in_flag], A		; need to change address on
		mov		A, [wValuelo]
		mov		[pending_data], A
		jmp		initialize_no_data_control

	set_device_configuration:				; SET CONFIGURATION
		mov		A, [wValuelo]
		cmp		A, 01h
		jz		configure_device
		unconfigure_device:					; set device as unconfigured
			mov		[configuration], A
			mov		A, DISABLE				; disable endpoint 1
			iowr	ep1_mode

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩综合在线免费观看| 久草热8精品视频在线观看| 成人小视频在线| 国产拍欧美日韩视频二区| 国产一区二区在线看| 久久精品国内一区二区三区| 丰满白嫩尤物一区二区| 国产日韩高清在线| 不卡一区二区三区四区| 亚洲免费观看视频| 欧美片网站yy| 自拍偷拍亚洲欧美日韩| 色偷偷成人一区二区三区91| 亚洲成a人片在线观看中文| 欧美一区二区免费| 国产成人精品网址| 精品女同一区二区| 成人黄色大片在线观看| 一区二区三区影院| 日韩欧美久久久| 亚洲香肠在线观看| 91丝袜美女网| 日韩精品三区四区| 欧美日韩国产三级| 国产自产视频一区二区三区| 日韩理论片在线| 91精品国产品国语在线不卡| 亚洲一区二区欧美激情| 亚洲另类春色国产| 91.成人天堂一区| 成人丝袜视频网| 亚洲国产精品高清| 欧美日韩国产系列| 成人黄色片在线观看| 午夜电影久久久| 国产精品美女久久久久aⅴ| 国产精品99久久久久| 一二三四区精品视频| 日本精品一区二区三区四区的功能| 欧美激情一区不卡| 91.com视频| 一本高清dvd不卡在线观看| ...xxx性欧美| 日本韩国视频一区二区| 久久精品国产99| 亚洲永久免费av| 欧美性一二三区| 成人黄色综合网站| 麻豆精品视频在线观看视频| 亚洲女人****多毛耸耸8| 26uuu国产在线精品一区二区| 国产在线精品免费av| 亚洲五月六月丁香激情| 国产精品女主播av| 色噜噜狠狠成人中文综合| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲欧美另类图片小说| 国产欧美一区视频| 精品蜜桃在线看| 欧美一区二区三区影视| 欧美午夜电影网| 色综合色综合色综合| 成人福利视频在线看| 一区二区三区不卡视频在线观看 | 成人精品小蝌蚪| 免费在线观看精品| 亚洲成av人片在线| 亚洲图片另类小说| 国产精品久久夜| 国产欧美精品国产国产专区| 日本电影欧美片| 免费三级欧美电影| 午夜成人在线视频| 香港成人在线视频| 亚洲国产激情av| 欧美在线综合视频| 欧洲一区二区三区在线| 黄页视频在线91| 久久不见久久见免费视频1| 日韩精品午夜视频| 麻豆精品在线观看| 激情五月婷婷综合| 国产精品中文字幕一区二区三区| 一区二区三区不卡在线观看 | 欧美不卡一区二区三区| 91麻豆精品国产无毒不卡在线观看| 国产精品亚洲视频| 成人精品视频一区二区三区| 成人avav在线| 91亚洲精品一区二区乱码| 一本大道久久a久久精品综合| 韩国精品免费视频| 国产精品一区二区久激情瑜伽 | 2020国产精品自拍| 国产午夜精品在线观看| 国产精品视频一二三| 一区视频在线播放| 亚洲国产aⅴ天堂久久| 日韩高清中文字幕一区| 九色综合国产一区二区三区| 亚洲一区在线观看免费观看电影高清 | 91丨国产丨九色丨pron| 色欧美日韩亚洲| 懂色av一区二区夜夜嗨| 99久久精品免费看国产| 在线观看日韩av先锋影音电影院| 国产精品一区二区三区乱码| 日韩专区欧美专区| 国产一区二区视频在线| 99r精品视频| 正在播放亚洲一区| 欧美喷水一区二区| 久久亚洲精华国产精华液 | 国产精品福利一区| 久久精品综合网| 亚洲精品日韩专区silk| 蜜臀国产一区二区三区在线播放| 亚洲一区在线播放| 精久久久久久久久久久| 久色婷婷小香蕉久久| 成人免费看的视频| 欧美久久免费观看| 国产精品成人一区二区艾草| 美腿丝袜一区二区三区| av影院午夜一区| 99久久精品国产毛片| 成人av网址在线观看| 欧美疯狂性受xxxxx喷水图片| 在线91免费看| 国产精品二三区| 久久99国产精品久久| 97精品久久久午夜一区二区三区 | 国产精品影视在线| 欧美午夜视频网站| 久久精品人人做人人爽97| 亚洲成av人片一区二区| 日本欧美一区二区三区| 91污在线观看| 久久久亚洲午夜电影| 国产精品毛片久久久久久| 日韩av午夜在线观看| 91浏览器入口在线观看| 26uuu欧美| 蜜桃一区二区三区四区| 色噜噜夜夜夜综合网| 欧美国产精品v| 亚洲精品伦理在线| 成人爽a毛片一区二区免费| 欧美xxxx老人做受| 日韩在线一二三区| 欧美日韩美少妇| 亚洲曰韩产成在线| 极品少妇xxxx精品少妇偷拍| 欧美色精品天天在线观看视频| 在线成人午夜影院| 亚洲va国产天堂va久久en| 男女激情视频一区| 717成人午夜免费福利电影| 一区二区三区欧美在线观看| av网站免费线看精品| 国产亚洲美州欧州综合国| 精品夜夜嗨av一区二区三区| 欧美一区二区三区啪啪| 天天av天天翘天天综合网| 91高清视频免费看| 一区二区三区精品| 在线看日本不卡| 亚洲图片欧美一区| 欧美日韩一区二区三区不卡 | 在线播放一区二区三区| 夜夜爽夜夜爽精品视频| 欧美午夜理伦三级在线观看| 精品国产精品网麻豆系列| 美女视频黄 久久| 欧美一区二区美女| 最新久久zyz资源站| 91视频免费看| 午夜欧美大尺度福利影院在线看| 国产精品中文字幕欧美| 久久日韩粉嫩一区二区三区| 国产一二精品视频| 久久婷婷综合激情| 福利一区福利二区| 亚洲天堂a在线| 91久久精品网| 日韩av一区二区三区| 久久午夜色播影院免费高清| 午夜久久久久久| 91丨九色丨黑人外教| 亚洲午夜免费电影| 91精品久久久久久蜜臀| 一片黄亚洲嫩模| 99视频超级精品| 亚洲午夜电影在线| 欧美电影免费观看高清完整版在| 亚洲成人7777| 久久精品亚洲一区二区三区浴池| 日本成人在线电影网| 久久久蜜桃精品| 91一区二区在线|