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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? key2.asm

?? USB接口的鍵盤
?? ASM
?? 第 1 頁 / 共 2 頁
字號(hào):
include         ht82k96e.inc
;include			usbrf.inc
;include			usbfifo.inc
include				keyequ.inc



;**************************************************************************************
Scaninc				equ				pac
Scanin				equ				pa
scanout1C_adr		equ				15h
ScanOut1C			equ				pbc
ScanOut1			equ				pb
scanout2C_adr		equ				17h
ScanOut2C			equ				pcc
ScanOut2			equ				pc
    Scan2_Mask  	EQU     		0F0H		;pc4~7
scanout3C_adr		equ				19h
ScanOut3C			equ				pdc
ScanOut3			equ				pd

LED_PORT_c			equ				pcc
led_port			equ				pc			;pc1~3, Scrl, Num, Cap
	LED_Mask    	EQU     0FH	
    @LED_Num    	EQU     2               ; Num Lock LED
    @LED_Caps   	EQU     4               ; Caps Lock LEd
    @LED_Scrl   	EQU     1               ; Scroll Lock LED
	led_num			equ		pc.1
	led_cap			equ		pc.2
	led_scrl		equ		pc.3		
	led_num_c		equ		pcc.1
	led_cap_c		equ		pcc.2
	led_scrl_C		equ		pcc.3		


;KB_LED        
@Num_bit      		EQU     0               ; Num Lock LED
@Cap_bit     		EQU     1               ; Caps Lock LEd
@Scrl_bit     		EQU     2               ; Scroll Lock LED

DEBOUNCE				equ				20H
REPORT_KB_SIZE			equ				8
end_of_ScanLines		equ				20
USB_REG_BANK			equ				1
;*************************************************************************

key_var			.section		'data'
key_mdfb		db			?
key_rsvb		db			?
key_code1b		db			?
key_code2b		db			?
key_code3b		db			?
key_code4b		db			?
key_code5b		db			?
key_code6b		db			?
key_buf_end		db			?
indexbuf		db			?
buff_index		db			?
scanlineno		db			?
currentstate	db			?
currentstate1	db			?
STATE_BUF_BEG   		db     	20 dup(?)			;the buffer for keyboard scan line
STATE_BUF_END			db		?
DebounceCounter 		db		?
scantemp				db		?
GhostScanLine   		db     	?
BitMap          		db     	?	
ChangeKeyMap    		db		?	
KeyNo           		db		?	
KeyBit          		db		?		
temp1					db		?	
KB_LED					db		?

bPhantom		dbit
bKB_KeyUpt		dbit

public			bKB_KeyUpt
public			kb_led


;public			key_mdfb		
;public			key_rsvb		 
;public			key_code1b		 
;public			key_code2b		 
;public			key_code3b		 
;public			key_code4b		 
;public			key_code5b		 
;public			key_code6b		 
;public			key_buf_end
;public			buff_index		 
;public			indexbuf		 
;public			scanlineno		 
;public			currentstate	 
;public			currentstate1	 
;public			STATE_BUF_BEG   		;the buffer for keyboard scan line
;public			STATE_BUF_END			
;public			DebounceCounter 		
;public			scantemp				
;public			GhostScanLine   		
;public			BitMap          		
;public			ChangeKeyMap    			
;public			KeyNo           			
;public			KeyBit          				
;public			temp1						
;public			KB_LED
;public			key_rpt_cnt


;*************************************************************************
extern			exit_of_examine_kb_state	:near

;extern			KEY_MdfB      	:byte		
;extern			KEY_RsvB      	:byte	
;extern			KEY_Code1B     	:byte		
;extern			KEY_Code2B     	:byte		
;extern			KEY_Code3B     	:byte		
;extern			KEY_Code4B     	:byte		
;extern			KEY_Code5B     	:byte		
;extern			KEY_Code6B     	:byte		
;extern			KEY_BUF_END		:byte

extern			FIFO_OUT1		:byte
extern			fifo_out2		:byte
extern			fifo_out3		:byte
extern			fifo_out4		:byte
extern			fifo_out5		:byte
extern			fifo_out6		:byte
extern			fifo_out7		:byte
extern			fifo_out8		:byte
extern			FIFO_SendLen	:byte


;extern			BUFF_Index		:byte
;extern			IndexBuf		:byte
;extern			scanlineno		:byte
;extern			CurrentState	:byte
;extern			CurrentState1	:byte
;extern			STATE_BUF_BEG	:byte
;extern			DebounceCounter	:byte
;extern			ScanTemp		:byte
;extern			GhostScanLine	:byte
;extern			BitMap			:byte
;extern			ChangeKeyMap	:byte
;extern			KeyNo			:byte
;extern			Keybit			:byte
;extern			temp1			:byte
;


kb_code			.section		'code'
;----------------------------------------------------------------------------
;scan key, get data, parsing & send data
;maybe need check suspend
examine_kb_state:
;				clr		key_modify

;				clr		break_key
                CLR     WDT
    ;set scan line to low
                ;Get the port and bit no. of scan line
                MOV     A,ScanLineNo      	;
                CALL    GetScanPortAndBit   ;Output: PortNo & BitNo
    ;Delay
                MOV     A,10                ;Delay 30 intruction time
                CALL    DelayNInst          ;   about 20 us in 6 M sysclk
    ;get key state of scan line
                MOV     A,ScanIn          	;Get key state
                MOV     CurrentState,A    	;Save key state

                MOV     A,ScanLineNo      	;get current line state pointer
                ADD     A,OFFSET STATE_BUF_BEG    
                MOV     MP0,A               ;
                MOV     A,R0                ;get current line state data
                XOR     A,CurrentState    	;Whether current line no change ?
                SZ      Z                   ;No
                JMP     ScanOneRowOK        ;Yes
    ;first or not
                SZ      DebounceCounter   	;first ?
                JMP     NotFirstKeyChanged  ;No
FirstKeyChanged:                            ;Yes
                CLR     DebounceCounter   	;Reset DebounceCounter to 0
                INC     DebounceCounter   	;Update debounce counter
                MOV     A,CurrentState    	;save current key state to
                MOV     CurrentState1,A   	;  template buffer
                JMP     Exit_Scan_Keyboard  ;to next scan
NotFirstKeyChanged:
                MOV     A,CurrentState    	;Is any key state changed ?
                XOR     A,CurrentState1   	;
                SNZ     Z                   ;
                JMP     FirstKeyChanged     ;Yes
                                            ;No
                INC     DebounceCounter   	;Update debounce counter
                MOV     A,DEBOUNCE          ;>= debounce time ?
                SUB     A,DebounceCounter 	;
                SZ      C                   ;
                JMP     Exit_Scan_Keyboard  ;No
                CLR     DebounceCounter   	;Yes: debounce has finished and
                                            ;     reinitilize


;----------------------------------------------------------------------------
;Debounce finished
;check Phantom key
CheckPhantom:
                CLR     WDT
    ;How many key pressed ?
                MOV     A,08H       		;Scan in numbers = 8
                MOV     Temp1,A    			;
                CLR     ScanTemp  			;initial number of keys pressed to 0
                MOV     A,CurrentState    	;current key pressed state
CheckPhantomLp:
                RRC     ACC             	;check every column by right rotated
                SNZ     C               	;key pressed ?
                INC     ScanTemp      		;Yes: Update the number of keys pressed
                SDZ     Temp1          		;
                JMP     CheckPhantomLp  	;
                MOV     A,ScanTemp    		;ScanTemp = the number of keys pressed
                AND     A,0FEH          	;Key pressed numbers >= 2 ?
                SZ      Z               	;
                JMP     CheckPhantomOK  	;No (Have phantom key is impossible)
                                        	;Yes (Maybe have phantom key)
    ;Scan line to found phantom key
                CLR     GhostScanLine 		;scan from line 0
GhostLoop:
                CLR     WDT
    ;Whether phost scan line is equal to current scan line ?
                MOV     A,ScanLineNo
                XOR     A,GhostScanLine
                SZ      Z
                JMP     NextLine            ;Yes
    ;set scan line to low
                ;Get the port and bit no. of scan line
                MOV     A,GhostScanLine   	;
                CALL    GetScanPortAndBit   ;Output: PortNo & BitNo
   ;get key state of scan line
                MOV     A,10                ;Delay 30 intruction time
                CALL    DelayNInst          ;   about 20 us in 6 M sysclk
                MOV     A,ScanIn          ;Get key state
                MOV     CurrentState1,A   	;Save key state
    ;check the same 0 value position between CurrentState and CurrentState1
    ;the 0 value of result means the same 0 value position
                OR      A,CurrentState
                MOV     BitMap,A          	;Save result to buffer
                XOR     A,0FFH              ;Have any 0 value ?
                SZ      Z                   ;
                JMP     NextLine            ;No
    ;How many 0 counts in BitMap          	;Yes
                MOV     A,08H
                MOV     ScanTemp,A
                CLR     ACC
BitMapCountLp:
                RRC     BitMap
                SNZ     C
                INC     ACC                 ;0 value counts
                SDZ     ScanTemp
                JMP     BitMapCountLp
                AND     A,0FEH              ;0 value counts >= 2 ?
                SNZ     Z                   ;
                JMP     FoundPhantom        ;Yes
                                            ;No
    ;-------- this block maybe not need ---------------------------------
    ;Whether CurrentState1 is equal to CurrentState ?             		;
    ;If no, phantom keys is found.                                    	;
                MOV     A,CurrentState                              	;
                XOR     A,CurrentState1                             	;
                SNZ     Z                                             	;
                JMP     FoundPhantom        ;No                       	;
    ;--------------------------------------------------------------------
;----------------------------------------------------------------------------

NextLine:
                INC     GhostScanLine     	;to scan next line
                MOV     A,end_of_ScanLines       	;End scan line ?
                XOR     A,GhostScanLine   	;
                SNZ     Z                   ;
                JMP     GhostLoop           ;No (Continue)
                JMP     CheckPhantomOK      ;Yes

;----------------------------------------------------------------------------
FoundPhantom:
;Get phantom key index & save to report buffer
                SZ      bPhantom
                JMP     Exit_Scan_Keyboard
                SET     bKB_KeyUpt    ;Key is changed
                SET     bPhantom      ;Found a phantom key
                JMP     Error_Exit_Keyboard
;----------------------------------------------------------------------------

CheckPhantomOK:
                CLR     WDT
                MOV     A,ScanLineNo      			;Get the buffer pointer of
                ADD     A,OFFSET STATE_BUF_BEG     	;   current scan line state
                MOV     MP0,A               		;
    ;found any changed
                MOV     A,CurrentState    	;Any key changed in current scan
                XOR     A,R0                ;  line
                MOV     ChangeKeyMap,A    	;
                CLR     KeyNo             	;bit counter
                MOV     A,80H               ;1000 0000b
                MOV     KeyBit,A          	;Set first bit to check
CheckChangeKeyLp:
                RL      KeyBit            	;Update check bit order
                RRC     ChangeKeyMap      	;check changed key bitmap
                SNZ     C                   ;changed ?
                JMP     NotChanged          ;No
                                            ;Yes

;Get key index from key index table and save it to keyboard buffer.
    ;Get scan line base address
				rla		ScanLineNo
				rl		acc
				rl		acc
                ADD     A,KeyNO           	;
                ADD     A,LOW KBIndexORG    ;
                CALL    GetKeyboardIndex    ;Get keyboard index code in ACC
                MOV     IndexBuf,A  		;Save keyboard index code to IndexBuf

                MOV     A,IndexBuf        	;Is modifier key ?
                SUB     A,0E0H              ;
                SNZ     C
                JMP     NotModifierKey
                MOV     A,IndexBuf        	;Is modifier key ?
                SUB     A,0E8H              ;
                SNZ     C
                JMP     ModifierKey

;Not a modifier key
NotModifierKey:
    ;Check press or release
                SNZ     CurrentState.0    	;press or release ?
                JMP     MakeCode            ;press

;				set		break_key
;release Code:
    ;to find the keyboard index in keyboard buffer and remove it
                CALL    RemoveKey           ;Remove ACC key index from
                                            ;   keyboard buffer, if found
                SNZ     Z                   ;Any one moved ?
            	JMP     NotChanged          ;No(means buffer still full)
                                           	;Don't check current line again
    ;to sort keyboard buffer
                CALL    SortKeyboardbuf     ;reorder all 0 value in keyboard
                JMP     UpdateState
MakeCode:
                MOV     A,BUFF_Index      	;keyboard buffer Full ?
                XOR     A,OFFSET KEY_BUF_END       ;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片欧美视频| 精品视频1区2区| 国产视频911| 国产一区二区三区综合| 久久久久久97三级| 成人免费毛片aaaaa**| 国产精品免费观看视频| 91免费看片在线观看| 国产精品色哟哟| 日本韩国欧美一区| 天天综合网 天天综合色| 日韩亚洲欧美成人一区| 久久66热re国产| 国产精品婷婷午夜在线观看| 色狠狠一区二区| 视频一区二区三区入口| 欧美va日韩va| av电影在线观看一区| 亚洲国产一二三| 精品国产乱码久久久久久1区2区 | 久久综合综合久久综合| 欧美精品一区二区三区蜜臀| 成人avav在线| 免费成人你懂的| 日韩av不卡一区二区| 久久综合一区二区| 91麻豆国产精品久久| 奇米四色…亚洲| 国产精品久久久久一区二区三区共 | 一区二区三区自拍| 欧美一级专区免费大片| 成人av免费在线| 丝袜a∨在线一区二区三区不卡| 久久久久久97三级| 欧美日韩中文字幕一区二区| 精品午夜一区二区三区在线观看 | 国产女主播一区| 欧美日韩免费视频| 成人动漫一区二区在线| 日本va欧美va精品| 亚洲欧美色一区| 欧美tk丨vk视频| 色域天天综合网| 国产麻豆一精品一av一免费| 午夜精品爽啪视频| 亚洲欧洲无码一区二区三区| 欧美一级国产精品| 欧日韩精品视频| 丰满岳乱妇一区二区三区| 男人的天堂亚洲一区| 成人美女在线视频| 久久国产精品72免费观看| 一区二区三区四区在线| 国产精品午夜春色av| 精品国产一区a| 欧美精品亚洲二区| 91黄色免费观看| 99精品久久久久久| 国产成人精品免费网站| 久久99热国产| 日韩不卡在线观看日韩不卡视频| 亚洲人成网站色在线观看| 国产亚洲欧美一区在线观看| 欧美一级艳片视频免费观看| 欧美视频中文字幕| 色综合久久久久综合体桃花网| 国产精品小仙女| 国产一区二区免费看| 久久精品国产77777蜜臀| 天堂在线亚洲视频| 午夜一区二区三区视频| 亚洲国产一区视频| 亚洲成人1区2区| 亚洲成人综合网站| 亚洲成人在线网站| 午夜精品一区在线观看| 视频一区在线视频| 日韩国产高清影视| 免费成人在线观看视频| 免费国产亚洲视频| 激情久久五月天| 欧美日韩日本视频| 欧美精品777| 日韩三级视频在线看| 日韩精品一区二区三区老鸭窝 | 香蕉成人啪国产精品视频综合网| 亚洲综合色丁香婷婷六月图片| 综合中文字幕亚洲| 亚洲人xxxx| 一区二区成人在线观看| 亚洲成人av电影在线| 日韩高清电影一区| 激情另类小说区图片区视频区| 国产一区高清在线| 成人高清av在线| 欧美亚洲动漫另类| 欧美电影一区二区| 欧美精品一区二区三区很污很色的| 精品日韩一区二区三区| 国产日韩精品一区| 亚洲免费高清视频在线| 午夜视频在线观看一区| 精品一区二区三区影院在线午夜| 国产一区二区三区综合| 不卡一卡二卡三乱码免费网站| 一本久久精品一区二区| 制服.丝袜.亚洲.另类.中文| 26uuu精品一区二区| 国产精品不卡一区二区三区| 亚洲综合图片区| 美腿丝袜在线亚洲一区| 国产欧美视频在线观看| 一区二区在线免费观看| 日韩国产一区二| 成人av综合一区| 在线播放视频一区| 中文一区二区在线观看| 亚洲一区二区三区国产| 黄色日韩网站视频| 日本久久精品电影| 久久久久久**毛片大全| 亚洲在线成人精品| 国产一区二区三区四区在线观看| 97久久超碰国产精品| 欧美成人午夜电影| 亚洲欧美日韩久久精品| 国产美女视频91| 欧美私人免费视频| 国产精品免费久久| 狠狠狠色丁香婷婷综合激情| 色噜噜狠狠成人网p站| 国产片一区二区| 天堂午夜影视日韩欧美一区二区| 成人自拍视频在线| 欧美一区二区不卡视频| 一区二区三区在线观看视频| 国产精品18久久久久久久久久久久| 在线观看网站黄不卡| 日本一区二区电影| 久久草av在线| 欧美乱妇15p| 一区二区成人在线| 不卡电影一区二区三区| 精品国产第一区二区三区观看体验| 亚洲免费视频中文字幕| 国产成人在线色| 久久理论电影网| 欧美影院精品一区| 亚洲免费伊人电影| av激情成人网| 中日韩av电影| 国产精品资源网站| 久久综合久色欧美综合狠狠| 日韩黄色一级片| 欧美日韩一区二区三区四区| 亚洲视频在线一区二区| 国产69精品久久久久777| 久久综合狠狠综合| 蜜臀91精品一区二区三区| 欧美裸体一区二区三区| 亚欧色一区w666天堂| 色88888久久久久久影院按摩| 综合婷婷亚洲小说| 91在线观看免费视频| 18欧美乱大交hd1984| 99久久精品国产麻豆演员表| 中文在线资源观看网站视频免费不卡| 卡一卡二国产精品| 欧美精品一区二区蜜臀亚洲| 精品一区二区免费视频| 欧美xxxxxxxxx| 看国产成人h片视频| 久久夜色精品一区| 成人综合婷婷国产精品久久蜜臀| 欧美高清一级片在线观看| 成人av在线一区二区| 国产精品每日更新在线播放网址| 成人成人成人在线视频| 中文字幕一区二区三区不卡在线| 成人天堂资源www在线| 亚洲视频免费在线观看| 色噜噜久久综合| 日韩和欧美一区二区| 日韩久久免费av| 久久精品夜色噜噜亚洲a∨| 国产精品99久久久久久有的能看| 久久精品亚洲乱码伦伦中文| 成人毛片视频在线观看| 亚洲特黄一级片| 欧美日韩国产一区二区三区地区| 青青青爽久久午夜综合久久午夜| 精品免费99久久| 成人免费看黄yyy456| 一区二区三区四区国产精品| 51精品秘密在线观看| 国内精品写真在线观看| 国产精品国产自产拍在线| 欧美日韩在线播放三区| 伦理电影国产精品| 国产精品家庭影院|