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

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

?? mouse45.asm

?? USB大全電子版全部資料3~包含源碼、協議等
?? ASM
?? 第 1 頁 / 共 5 頁
字號:
	dec A

	jnz delay2

	iowr Watchdog				; clear watchdog timer

	mov A, FFh

	dec [disch_counter]

	jnz delay2



	iord Port0_Data				; read port 0

	cmp A, [port_temp]			; compare port 0 data to previosly stored data

	jz No_change

	iord USB_Status_Control			; check if there is no bus activity

	and A, BusActivity

	jnz Wakeup_end				; bus active

	iord USB_Status_Control			; set J state

	or A, 04h					; 

	iowr USB_Status_Control

	and A, 0fBh					; clear J state

	iowr USB_Status_Control

	iord USB_Status_Control			; send wakeup to host

	or A, ForceResume				; set Force Resume bit

	iowr USB_Status_Control

	mov A, 01h					; set wakeup flag

	mov [wakeup_flag], A

	mov A, 0h					; clear wakeup counter

	mov [wakeup_counter], A

	mov A, TIMER_ONLY				; enable one msec timer interrupts

	iowr Global_Interrupt

Wakeup_wait:

	mov A, [wakeup_counter]			; Wait for 10ms

	cmp A, 0Ah

	jc Wakeup_wait

	mov A, 0h					; disable interrupts

	iowr Global_Interrupt		

	iord USB_Status_Control			; Clear Force Resume bit 

	and A, ~ForceResume					

	iowr USB_Status_Control

	mov A, 0h					; clear wakeup flag

	mov [wakeup_flag], A

	iord Port0_Data				; read port 0

	mov [port_temp], A			; save value

No_change:

      mov A, 0ffh             		; turn off the LED on Port 1 bit[0]

	iowr Port1_Data	

	mov A, 01h					; disable open drain O/P driver

	iowr Cext					; start charging for the next one

Wakeup_end:

	mov A, WAKEUP_MASK

	ipret Global_Interrupt



;*******************************************************

; The 1 msec interrupt is only used to clear the watchdog 

; timer.  This interrupt service routine would be the

; place to enter suspend mode.

One_mSec_ISR:

	push A

	iowr Watchdog				; clear watchdog timer

 

	dec [4ms_counter]                   ; count til 4 to increment

      jnz button_debounce

      mov A,[idle_period_counter]

      cmp A, 0ffh                         ; if 0ffH is reach in the 

      jz 4ms_set                          ; idle_period_counter no more

      inc [idle_period_counter]           ; increment

4ms_set:

      mov A,4

      mov [4ms_counter],A



button_debounce:

	mov A, [button1_deb]

	cmp A, 0h

	jz no_debounce

	inc A

	mov [button1_deb], A

	cmp A, 30

	jnz no_debounce

	mov A, 0h

	mov [button1_deb], A	

no_debounce:

	mov A, [wakeup_flag]			; check if we are in a remote wakeup process

	cmp A, 01h

	jnz notremote_wakeup

	inc [wakeup_counter]			; increment wakeup counter

	mov A, TIMER_ONLY				; enable One_msec_ISR

	ipret Global_Interrupt

notremote_wakeup:

	iord USB_Status_Control			; check if there is no bus activity

	and A, BusActivity

	jz Inc_counter				; no bus activity

	iord USB_Status_Control			; clear the bus activity bit

	and A, ~BusActivity

	iowr USB_Status_Control

	mov A, 3h					; clear the suspend counter

	mov [suspend_counter], A

	jmp One_mSec_end

Inc_counter:

	dec [suspend_counter]			; check if 3msecs of bus inactivity passed

	jnz One_mSec_end				; less than 3msecs

	iord Port0_Data				; save current value

	mov [port_temp], A



	mov A, 3h					; clear the suspend counter

	mov [suspend_counter], A

      mov A, 0ffh             		; turn off the LED on Port 1 bit[0]

	iowr Port1_Data

	iowr Port0_Data

	mov A, [remote_wakeup_status]		; check if remote wakeup is enabled 

	cmp A, ENABLE_REMOTE_WAKEUP

	jnz Suspend1				; Not enabled

	

	mov A, 0

	iowr Cext

	mov A, FFh

	mov [disch_counter], A

delay:

	dec A

	jnz delay

	iowr Watchdog				; clear watchdog timer

	mov A, FFh

	dec [disch_counter]

	jnz delay



	mov A, 01h					

	iowr Cext					; start charging external capacitor

	mov A, WAKEUP_MASK			; wakeup is the ONLY interrupt enabled

	iowr Global_Interrupt

Suspend1:

	iord Status_Control			;set the suspend bit causing suspend

	or A, SuspendBits

	iowr Status_Control

	nop

	mov A, 0f0h					; turn on the phototransistors

	iowr Port0_Data	

	mov A, 0feh             		; turn on the LED on Port 1 bit[0]

	iowr Port1_Data	

One_mSec_end:

	mov A, [interrupt_mask]

	ipret Global_Interrupt



;*******************************************************

;	Interrupt handler: endpoint_one

;	Purpose: This interrupt routine handles the specially

;		 reserved data endpoint 1 (for a mouse).  This

;		 interrupt happens every time a host sends an

;		 IN on endpoint 1.  The data to send (NAK or 3

;		 byte packet) is already loaded, so this routine

;		 just prepares the dma buffers for the next packet

USB_EP1_ISR:

	push A				; save accumulator on stack



	iord USB_EP1_TX_Config		; return NAK when data is not

	and A, 7Fh				; ready

	xor A, DataToggle			; flip data 0/1 bit

	iowr USB_EP1_TX_Config



	mov A, 0h

	mov [horiz_position], A	

	mov [vert_position], A	

	mov [button_position], A	



	mov A, [interrupt_mask]		; return from interrupt

	ipret Global_Interrupt



;*******************************************************

; reset processing

; The idea is to put the microcontroller in a known state.  As this

; is the entry point for the "reserved" interrupt vector, we may not

; assume the processor has actually been reset and must write to all

; of the I/O ports.

;

;	Port 0 bits 3:0 are the phototransistors

;		Write these pins "low" with midrange current to bias 

;		the phototransistors.

;	Port 0 bits 7:4 are the mouse buttons

;		Write these pins "high" with pullup resistors to 

;		support the mouse buttons.

;	Port 1 bit 0 is the LED output

;		Write this pin low with maximum current sink to turn

;		on the LEDs.

Reset:

	mov A, endpoint_0	; move data stack pointer

	swap A, dsp		; so it does not write over USB fifos

;

; initialize Port 0

;

	mov A, Ptr_Current		; select midrange DAC setting

	iowr Port0_Isink0			; isink current Port 0 bit[0]

	iowr Port0_Isink1			; isink current Port 0 bit[1]

	iowr Port0_Isink2			; isink current Port 0 bit[2]

	iowr Port0_Isink3			; isink current Port 0 bit[3]



	mov A, 0				; select minimum DAC setting

	iowr Port0_Isink4			; isink current Port 0 bit[4]

	iowr Port0_Isink5			; isink current Port 0 bit[5]

	iowr Port0_Isink6			; isink current Port 0 bit[6]

	iowr Port0_Isink7			; isink current Port 0 bit[7]



	mov A, 0fh				; disable Port 0 bit[3:0] pullups

	iowr Port0_Pullup			; enable  Port 0 bit[7:4] pullups



	mov A, 0f0h				; initialize Port 0 data

	iowr Port0_Data			; output zeros to Port 0 bit[3:0]

						; output ones  to Port 0 bit[7:4]

	mov [port_temp], A



;

; initialize Port 1

;

	mov A, LED_Current		; select maximum DAC setting

	iowr Port1_Isink0			; isink current Port 1 bit[0]

	iowr Port1_Isink1			; isink current Port 1 bit[1]

	iowr Port1_Isink2			; isink current Port 1 bit[2]

	iowr Port1_Isink3			; isink current Port 1 bit[3]



	mov A, 0h				; enable Port 1 bit [7:0] pullups

	iowr Port1_Pullup	

	

      mov A, 0feh             	; turn on the LED on Port 1 bit[0]

	iowr Port1_Data	



	mov A, 0		

	iowr Port0_Interrupt		; disable port 0 interrupts  

	iowr Port1_Interrupt		; disable port 1 interrupts

	iowr Cext

;

; initialize variables

;

	mov [buttons], A			; no buttons pushed

	mov [horiz_state], A		; clear the horizontal state

	mov [horizontal], A		; clear horizontal count

	mov [vert_state], A		; clear the vertical state

	mov [vertical], A			; clear vertical count

	mov [endpoint_stall], A

	mov [remote_wakeup_status], A

	mov [configuration_status], A

	mov [wakeup_counter], A

	mov [wakeup_flag], A

	mov [disch_counter], A

	mov [horiz_position], A

	mov [vert_position], A

	mov [button_position], A

	mov [button_flag], A

	mov [button1_deb], A

      mov [idle_period], A

      mov [prev_idle_period], A

	mov [new_idle_period], A

	mov [new_idle_flag], A

      mov [idle_period_counter], A

	mov A,3				; initialize suspend counter

	mov [suspend_counter], A	; 3 msec idle, suspend



      mov A,4				; initialize  4ms_counter to 4

	mov [4ms_counter], A     	; 



	iowr Watchdog			; clear watchdog timer

;	mov A, ENABLE_REMOTE_WAKEUP	; **** debug only ****

;	mov [remote_wakeup_status], A



	mov A, BOOT_PROTOCOL

	mov [protocol_status], A



;

; test what kind of reset occurred 

;

	iord Status_Control

	and A, USBReset			; test for USB Bus Reset

	jnz BusReset



	iord Status_Control

	and A, WatchDogReset		; test for Watch Dog Reset

	jz suspendReset

;

; Process a watchdog reset.  Wait for a Bus Reset to bring the system

; alive again.



	mov A, TIMER_ONLY			; enable one msec timer interrupt

	mov [interrupt_mask],A

	iowr Global_Interrupt



WatchdogHandler:				; wait for USB Bus Reset

	jmp WatchdogHandler

suspendReset:

	mov A, 09h

	iowr Status_Control		; go back to suspend

	nop

	jmp suspendReset			; wait until real bus reset

;

; Either a bus reset or a normal reset has occurred

;

BusReset:

	mov A, RunBit			; clear all reset bits

	iowr Status_Control



; setup for enumeration

	mov A, ENUMERATE_MASK	

	mov [interrupt_mask],A

	iowr Global_Interrupt



wait:				; wait until configured

	iord USB_EP1_TX_Config

	cmp A, 0		

	jz wait	



;*******************************************************

; main loop 

;	Purpose: This routine is the code for implementing

;		 a mouse function.  It is divided into three

;		 parts; buttons, horizontal movement, and

;		 vertical movement.  See the documentation

;		 for an explanation of the movement

;		 state machines.

;

;*******************************************************

main:

	iord Port0_Data		; read and store port 0

	mov [port_temp], A

	call ReadButtons		; read the buttons

	call CheckHorizontal	; check for horizontal movement

	call CheckVertical	; check for vertical movement



     

      mov A, [horizontal]	

	cmp A, 0h

	jz NoChangeHorizontal

      jmp send_packet

NoChangeHorizontal:

	mov A, [vertical]	

	cmp A, 0h

	jz NoChangeVertical

      jmp send_packet             

NoChangeVertical:

	mov A, [button_flag]	

	cmp A, 0h

	jz NoChangeButtons

	jnz send_packet

NoChangeButtons:                              

      mov A, [idle_period]                    ;if idle period is 0

      cmp A, 0h                               ;report is sent only if changes 

      jz Nosend



	dec A					; check if idle_period <= idle_period_counter

	cmp A, [idle_period_counter]

      jnc Nosend

      

send_packet:

	iord USB_EP1_TX_Config

	and A, 80h

	cmp A, 80h

	jz Nosend

	mov A, [horizontal]	

	mov [horiz_position], A	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线视频免费91| 精品欧美一区二区久久| 久久国产婷婷国产香蕉| 亚洲国产视频直播| 亚洲欧美中日韩| 国产午夜三级一区二区三| 欧美一区二区网站| 欧美一区二区福利视频| 日韩免费看的电影| 日韩欧美激情四射| 久久久亚洲午夜电影| 久久精品一区二区三区不卡牛牛 | 久久se这里有精品| 美女精品一区二区| 久久成人av少妇免费| 久久99久久99精品免视看婷婷 | 久久九九久久九九| 久久综合狠狠综合久久综合88| 精品国产一区二区精华| 亚洲欧美日韩在线| 一区二区三区精品视频在线| 亚洲午夜视频在线| 日本欧美一区二区| 国产精品1区2区3区| 成人v精品蜜桃久久一区| 91啪在线观看| 欧美一区二区三区在线观看视频| 日韩一级精品视频在线观看| 精品国产乱码久久久久久图片| 国产午夜精品一区二区三区嫩草| 国产精品国产三级国产aⅴ中文| 亚洲人成亚洲人成在线观看图片| 午夜精品久久久久影视| 精品一区二区三区免费观看| 成人app网站| 在线免费观看不卡av| 国产亚洲欧美在线| 中国色在线观看另类| 一区二区三区四区在线播放| 亚洲福利电影网| 国内成人免费视频| 色哟哟在线观看一区二区三区| 欧美色图激情小说| 久久香蕉国产线看观看99| 最新热久久免费视频| 日本v片在线高清不卡在线观看| 国产.欧美.日韩| 欧美日韩亚洲综合一区二区三区| 欧美激情一区二区三区蜜桃视频| 亚洲愉拍自拍另类高清精品| 精久久久久久久久久久| 一本大道综合伊人精品热热 | 欧美剧情片在线观看| 精品盗摄一区二区三区| 亚洲精品少妇30p| 国产成人免费视频一区| 欧美在线观看视频一区二区三区| 国产亚洲欧美激情| 日本午夜一区二区| 日本道色综合久久| 国产日韩视频一区二区三区| 美女在线视频一区| 欧美日韩免费视频| 亚洲欧美日韩系列| 国产成人综合视频| 日韩一级大片在线观看| 午夜精品久久久久影视| 91在线观看高清| 中文字幕一区二区三中文字幕| 国产乱色国产精品免费视频| 日韩午夜av一区| 美国十次了思思久久精品导航| 欧美网站大全在线观看| ...av二区三区久久精品| 国产成人av资源| 国产欧美日韩三级| 国产成人精品亚洲777人妖| 精品国产免费视频| 韩国女主播成人在线观看| 欧美v日韩v国产v| 久久成人羞羞网站| 精品少妇一区二区三区在线播放 | 久久日一线二线三线suv| 琪琪久久久久日韩精品| 欧美一区二区福利在线| 麻豆免费看一区二区三区| 欧美一区二区三区爱爱| 毛片不卡一区二区| 精品久久久久一区| 国产不卡视频在线观看| 国产女人aaa级久久久级| 粉嫩av一区二区三区粉嫩| 国产精品免费人成网站| www.欧美色图| 一区二区三区欧美久久| 欧美日韩中文一区| 久久精品噜噜噜成人av农村| 精品国产乱子伦一区| 国产精品影视网| 日韩一区在线免费观看| 色呦呦国产精品| 日本vs亚洲vs韩国一区三区 | 国产91富婆露脸刺激对白 | 91亚洲国产成人精品一区二三| 亚洲老妇xxxxxx| 欧美日韩成人综合| 激情综合色播五月| 最新国产精品久久精品| 欧美日韩精品一区二区在线播放| 日韩精品亚洲一区二区三区免费| 欧美精品一区二区三| 国产91对白在线观看九色| 一区二区三区蜜桃| 精品久久久久av影院| 99国产欧美另类久久久精品| 亚洲狠狠爱一区二区三区| 欧美不卡一区二区三区| 成人精品gif动图一区| 亚洲午夜免费视频| 国产亚洲欧美激情| 欧美丰满一区二区免费视频 | 中文成人av在线| 777精品伊人久久久久大香线蕉| 国产精品伊人色| 亚洲成a人v欧美综合天堂| 国产欧美日韩亚州综合| 欧美精品乱码久久久久久按摩 | 欧美午夜在线一二页| 国内成人自拍视频| 亚洲第一二三四区| 一区二区中文视频| 精品免费国产一区二区三区四区| 不卡的av电影| 国产一区二区导航在线播放| 亚洲精品中文字幕在线观看| 国产蜜臀97一区二区三区| 51久久夜色精品国产麻豆| 色综合久久久久综合体桃花网| 久久99精品久久久久婷婷| 亚洲成人av中文| 亚洲伊人色欲综合网| 久久精品欧美一区二区三区麻豆| 欧美久久久久免费| 欧美天堂一区二区三区| 懂色av一区二区在线播放| 精彩视频一区二区三区| 天天综合色天天| 亚洲国产另类精品专区| 亚洲欧美偷拍卡通变态| 亚洲欧美在线视频观看| 国产日本欧美一区二区| 日韩欧美不卡在线观看视频| 91精品一区二区三区在线观看| 在线观看不卡视频| 欧美亚州韩日在线看免费版国语版| 成人免费视频视频在线观看免费| 国产乱码精品1区2区3区| 久久国产福利国产秒拍| 狠狠网亚洲精品| 久草这里只有精品视频| 麻豆精品视频在线观看免费| 日本网站在线观看一区二区三区| 天天综合天天做天天综合| 午夜精品在线视频一区| 日本亚洲最大的色成网站www| 日韩电影在线观看网站| 日韩电影在线一区| 激情五月激情综合网| 国产一区二区三区高清播放| 国产麻豆视频精品| 国产成人精品三级| 91色porny| 欧美日韩高清一区二区三区| 欧美一级生活片| 久久婷婷综合激情| 国产精品久久久久四虎| 亚洲综合色自拍一区| 亚洲成人激情自拍| 久久国产精品露脸对白| 成人午夜在线播放| 91免费国产视频网站| 欧美日韩三级视频| 精品国产制服丝袜高跟| 日本一区二区免费在线观看视频| 综合网在线视频| 另类专区欧美蜜桃臀第一页| 国产裸体歌舞团一区二区| 91女人视频在线观看| 日韩三级伦理片妻子的秘密按摩| 国产无一区二区| 亚洲第一激情av| 狠狠色丁香婷综合久久| www.亚洲色图.com| 91精品国产综合久久婷婷香蕉| 2020国产精品自拍| 亚洲精品国久久99热| 精油按摩中文字幕久久| 色综合久久中文字幕综合网| 欧美tk丨vk视频| 亚洲午夜电影网|