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

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

?? key2.asm

?? 合泰USB鍵盤程序
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
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       ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品在线观看视频| 福利电影一区二区| 666欧美在线视频| 麻豆一区二区在线| 性做久久久久久免费观看| 欧美精品一二三| 老司机精品视频一区二区三区| 久久伊人中文字幕| www.一区二区| 亚洲大片一区二区三区| 日韩免费观看2025年上映的电影| 国产综合一区二区| 亚洲色图19p| 欧美一区二区三区免费大片| 国产精品一区二区在线看| 国产精品国产三级国产aⅴ中文| 色综合一个色综合亚洲| 日韩精品一二区| 国产日本欧洲亚洲| 欧美视频一区二区三区在线观看| 免费成人在线播放| 日韩一区欧美一区| 91精品欧美综合在线观看最新| 国产麻豆午夜三级精品| 亚洲一二三四久久| 2020国产精品久久精品美国| 91浏览器在线视频| 久久99国产精品免费| 伊人色综合久久天天| 6080yy午夜一二三区久久| 成人午夜视频福利| 蜜臀av国产精品久久久久| 国产精品国产三级国产a| 91精品国产色综合久久不卡蜜臀| 国产老女人精品毛片久久| 亚洲va国产天堂va久久en| 国产女人18毛片水真多成人如厕| 在线播放中文一区| 91亚洲国产成人精品一区二区三 | 久久日一线二线三线suv| 在线视频欧美精品| 国产精品99久久久久久久vr| 日本欧美一区二区| 亚洲男女一区二区三区| 久久久不卡影院| 欧美一区二区精品在线| 在线一区二区三区四区五区| 国产98色在线|日韩| 蜜桃视频一区二区| 亚洲第一电影网| 最新高清无码专区| 国产亲近乱来精品视频| 欧美一区二区网站| 欧美欧美午夜aⅴ在线观看| eeuss鲁一区二区三区| 国产乱妇无码大片在线观看| 精油按摩中文字幕久久| 亚洲国产成人av网| 亚洲一区二区不卡免费| 亚洲男人的天堂网| 亚洲激情综合网| 中文字幕亚洲区| 亚洲欧洲精品一区二区三区| 久久久综合视频| 2014亚洲片线观看视频免费| 欧美成人video| 欧美tickling挠脚心丨vk| 欧美一区二区啪啪| 欧美一区二区三区在线| 在线播放日韩导航| 91精品国产综合久久福利| 欧美一区二区免费观在线| 91精品国产手机| 精品国产欧美一区二区| 日韩精品自拍偷拍| 2019国产精品| 欧美—级在线免费片| 国产午夜精品一区二区三区嫩草| 精品国产乱子伦一区| 欧美精品一区在线观看| 国产丝袜美腿一区二区三区| 久久精品男人天堂av| 国产精品天天摸av网| 成人免费在线视频| 一区二区成人在线视频| 亚洲第一久久影院| 蜜臀av一区二区在线免费观看| 老司机精品视频一区二区三区| 久久99国内精品| 成人免费高清视频在线观看| 99久久精品国产网站| 日本道在线观看一区二区| 欧美日韩一区在线观看| 91.成人天堂一区| 2020国产成人综合网| 国产精品视频观看| 亚洲国产另类av| 久久精品国产免费| 国产成人丝袜美腿| 一本色道久久综合狠狠躁的推荐 | 日韩—二三区免费观看av| 久久激五月天综合精品| 高清在线不卡av| 日本高清视频一区二区| 欧美一区国产二区| 中文字幕欧美激情一区| 亚洲精品视频在线看| 日本aⅴ免费视频一区二区三区| 国产精品自拍av| 在线观看日产精品| 精品福利一二区| 亚洲精品国久久99热| 蜜臀91精品一区二区三区| 99久久国产综合色|国产精品| 欧美日本一道本在线视频| 国产午夜精品一区二区三区嫩草| 一区二区三区四区不卡视频| 精品夜夜嗨av一区二区三区| 91麻豆精品秘密| 日韩美女一区二区三区| 一区二区三区欧美| 国产九九视频一区二区三区| 欧美日韩视频不卡| 亚洲国产精品成人久久综合一区| 午夜激情综合网| 99r精品视频| 久久尤物电影视频在线观看| 婷婷久久综合九色综合伊人色| 成人网男人的天堂| 日韩写真欧美这视频| 亚洲蜜臀av乱码久久精品蜜桃| 国产最新精品精品你懂的| 欧美日韩精品一区二区三区四区 | eeuss鲁一区二区三区| 日韩视频一区二区三区在线播放| 亚洲欧美精品午睡沙发| 国产成人精品影视| 日韩美女一区二区三区| 五月天亚洲婷婷| 色欧美片视频在线观看在线视频| 国产拍欧美日韩视频二区| 久久 天天综合| 在线播放国产精品二区一二区四区 | 91精品黄色片免费大全| 亚洲精品欧美专区| 91小视频免费观看| 国产精品视频九色porn| 国产盗摄女厕一区二区三区| 欧美电影免费观看高清完整版在| 亚洲成人动漫av| 欧美四级电影网| 亚洲福利一二三区| 在线亚洲人成电影网站色www| 中文欧美字幕免费| 成人亚洲一区二区一| 久久―日本道色综合久久| 激情六月婷婷综合| 精品精品国产高清一毛片一天堂| 全部av―极品视觉盛宴亚洲| 欧美日韩国产另类一区| 亚洲第一电影网| 777xxx欧美| 美国三级日本三级久久99 | 成人高清伦理免费影院在线观看| 久久亚洲一级片| 97se亚洲国产综合在线| 青青草国产精品亚洲专区无| 欧美亚洲日本一区| 一区二区三区欧美久久| 91久久精品国产91性色tv| 亚洲综合在线视频| 在线观看不卡一区| 亚洲小说欧美激情另类| 欧美日韩精品专区| 美女高潮久久久| 久久久久久久久久久黄色| 国产xxx精品视频大全| 亚洲视频图片小说| 欧美天堂一区二区三区| 免费高清不卡av| 久久在线观看免费| 99国产欧美久久久精品| 亚洲一区在线观看网站| 91精品国产91久久久久久最新毛片| 另类小说色综合网站| 久久午夜羞羞影院免费观看| 成人晚上爱看视频| 亚洲美女区一区| 制服丝袜在线91| 国产美女av一区二区三区| 亚洲欧美综合色| 欧美年轻男男videosbes| 韩国女主播成人在线| 亚洲色图清纯唯美| 欧美精品成人一区二区三区四区| 韩国av一区二区| 一区二区三区在线观看国产| 99精品视频一区| 一区二区三区小说| 精品视频123区在线观看|