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

📄 kb_hub.dt

📁 8*18標準鍵盤應用程式, 其中包含: 按鍵輸入 &#1048715 固定時間輸出按鍵值給主機. 燈號輸出 &#1048715 主機會送出燈號資&#63934 給裝置, 有變化才有輸出.
💻 DT
📖 第 1 页 / 共 2 页
字号:
			INC		KTEMP1
			JBC		KEY_PRESS,4,NEXT_SCAN_BIT_CHK4
			CALL	CHK_CONFIRM_PKEY
NEXT_SCAN_BIT_CHK4:	
			INC		KTEMP1
			JBC		KEY_PRESS,5,NEXT_SCAN_BIT_CHK5
			CALL	CHK_CONFIRM_PKEY
NEXT_SCAN_BIT_CHK5:
			INC		KTEMP1
			JBC		KEY_PRESS,6,NEXT_SCAN_BIT_CHK6
			CALL	CHK_CONFIRM_PKEY
NEXT_SCAN_BIT_CHK6:	
			INC		KTEMP1
			JBC		KEY_PRESS,7,NEXT_SCAN_BIT_CHK7
			CALL	CHK_CONFIRM_PKEY
NEXT_SCAN_BIT_CHK7:
			MOV		A,#0x100-7
			ADD		KTEMP1,A
			JBC		KB_FLAG,CHK_PHANTOM_KEY,NEXT_SCAN_BIT_END
			MOV		A,#PHANTOM_K_BUF1
			MOV		IAP1,A
FIND_NOT_0XFF_PHANTOM_KBUF:
			INCA	IAC1
			JBC		STTS,Z,CHK_PHANTOM_KBUF
			MOV		A,KEY_PRESS
			MOV		IAC1,A
			JMP		NEXT_SCAN_BIT_END
CHK_PHANTOM_KBUF:
			MOV		A,KEY_PRESS
			XOR		A,IAC1
			JBC		STTS,Z,CHK_NEXT_PHANTOM_KBUF
			BS		KB_FLAG,ERROR_KEY
			JMP		NEXT_SCAN_BIT_END
CHK_NEXT_PHANTOM_KBUF:			
			INC		IAP1
			JBC		STTS,DC,FIND_NOT_0XFF_PHANTOM_KBUF
NEXT_SCAN_BIT_END:
			RET
			
CHK_CONFIRM_PKEY:
			MOV		A,#0x60
			MOV		IAP1,A
			JMP		CHK_CONFIRM_PKEY0
CHK_NEXT_HKI_LOOP:			
			INC		IAP1
			JBS		STTS,DC,NC_KBUFFER_FULL
CHK_CONFIRM_PKEY0:
			ZCHK	IAC1
			JBC		STTS,Z,HAD_KEYIN_CHK
			INCA	KTEMP1
			CALL	KB_REAL_TABLE
			MOV		IAC1,A
			JMP		CHK_CONFIRM_PKEY_END
HAD_KEYIN_CHK:
			INCA	KTEMP1
			CALL	KB_REAL_TABLE
			XOR		A,IAC1
			JBC		STTS,Z,CHK_NEXT_HKI_LOOP
			CALL	KB_STORE_CONFIRM_CHK
			JBS		IAP1,3,HIGH_CONFIRM_CHK
			OR		KB_CONFIRM1,A
			JMP		CONFIRM_CHK_OK
HIGH_CONFIRM_CHK:
			OR		KB_CONFIRM2,A
CONFIRM_CHK_OK:
			JBC		KB_FLAG,SAME_COLUMN,CHK_SROW_ACOLUMN
			BS		KB_FLAG,CHK_PHANTOM_KEY
CHK_SROW_ACOLUMN:
			BS		KB_FLAG,SAME_COLUMN
NC_KBUFFER_FULL:
CHK_CONFIRM_PKEY_END:
			RET
			
CHK_KEY_PRESS:
			CALL	CHK_CK_KEEP_RELEASE_NEW	
			MOV		A,KTEMP1
			
			XOR		A,KB_TEMP1
			JBS		STTS,Z,$+3
			BS		KB_FLAG,SEND_KEY_WORK
			
			MOV		A,KTEMP1
			MOV		KB_TEMP1,A
			
			MOV		A,KB_TEMP2
			CALL	CHK_GK_KEEP_RELEASE_NEW	
			MOV		KTEMP1,A
			
			XOR		A,KB_TEMP2
			JBS		STTS,Z,$+3
			BS		KB_FLAG,SEND_KEY_WORK
			
			MOV		A,KTEMP1
			MOV		KB_TEMP2,A
			
			MOV		A,KB_TEMP3
			CALL	CHK_GK_KEEP_RELEASE_NEW	
			MOV		KTEMP1,A
			
			XOR		A,KB_TEMP3
			JBS		STTS,Z,$+3
			BS		KB_FLAG,SEND_KEY_WORK
			
			MOV		A,KTEMP1
			MOV		KB_TEMP3,A
			
			MOV		A,KB_TEMP4
			CALL	CHK_GK_KEEP_RELEASE_NEW	
			MOV		KTEMP1,A
			
			XOR		A,KB_TEMP4
			JBS		STTS,Z,$+3
			BS		KB_FLAG,SEND_KEY_WORK
			
			MOV		A,KTEMP1
			MOV		KB_TEMP4,A
			
			MOV		A,KB_TEMP5
			CALL	CHK_GK_KEEP_RELEASE_NEW	
			MOV		KTEMP1,A
			
			XOR		A,KB_TEMP5
			JBS		STTS,Z,$+3
			BS		KB_FLAG,SEND_KEY_WORK
			
			MOV		A,KTEMP1
			MOV		KB_TEMP5,A
			
			MOV		A,KB_TEMP6
			CALL	CHK_GK_KEEP_RELEASE_NEW	
			MOV		KTEMP1,A
			
			XOR		A,KB_TEMP6
			JBS		STTS,Z,$+3
			BS		KB_FLAG,SEND_KEY_WORK
			
			MOV		A,KTEMP1
			MOV		KB_TEMP6,A
			
			MOV		A,KB_TEMP7
			CALL	CHK_GK_KEEP_RELEASE_NEW	
			MOV		KTEMP1,A
			
			XOR		A,KB_TEMP7
			JBS		STTS,Z,$+3
			BS		KB_FLAG,SEND_KEY_WORK
			
			MOV		A,KTEMP1
			MOV		KB_TEMP7,A
FILLIN_KBTEMP_OK:			
			JMP		KEY_SCAN_END

CHK_CK_KEEP_RELEASE_NEW:
			CLR		KTEMP1
			MOV		A,#0x60
			MOV		IAP1,A
FIND_NEW_CONCK_LOOP:			
			ZCHK	IAC1
			JBS		STTS,Z,CHK_N_CONCK_KBBUF
			CALL	SHIFT_CONFIRM_2BYTE
			JBC		STTS,C,CHK_N_CONCK_KBBUF			
			JBC		IAC1,7,CHK_N_CONCK_KBBUF
			CALL	CLEAR_CONFIRM_BIT
			MOV		A,#0x80
			XOR		A,IAC1
			JBC		STTS,Z,NOT_WIN_R_KEY
			MOV		A,#0x80
NOT_WIN_R_KEY:
			OR		KTEMP1,A
CHK_N_CONCK_KBBUF:
			INC		IAP1
			JBC		STTS,DC,FIND_NEW_CONCK_LOOP
			RET
			
CHK_GK_KEEP_RELEASE_NEW:
			MOV		KTEMP1,A
			JBC		STTS,Z,COMPARE_16_KBBUF
FIND_NEW_CONK:
			MOV		A,#0x60
			MOV		IAP1,A
FIND_NEW_CONK_LOOP:			
			ZCHK	IAC1
			JBS		STTS,Z,CHK_N_CON_KBBUF
			CALL	SHIFT_CONFIRM_2BYTE
			JBC		STTS,C,CHK_N_CON_KBBUF
			CALL	CLEAR_CONFIRM_BIT
			MOV		A,IAC1
			RET
CHK_N_CON_KBBUF:
			INC		IAP1
			JBC		STTS,DC,FIND_NEW_CONK_LOOP
			RETL	#0x00
			
COMPARE_16_KBBUF:
			MOV		A,#0x60
			MOV		IAP1,A
COMPARE_N_KBBUF_LOOP:			
			MOV		A,KTEMP1
			XOR		A,IAC1
			JBC		STTS,Z,COMPARE_N_KBBUF
			CALL	SHIFT_CONFIRM_2BYTE
			JBC		STTS,C,COMPARE_N_KBBUF
			CALL	CLEAR_CONFIRM_BIT
			MOV		A,IAC1
			RET
COMPARE_N_KBBUF:			
			INC		IAP1
			JBC		STTS,DC,COMPARE_N_KBBUF_LOOP
			RETL	#0x00			
						
KB_STORE_CONFIRM_CHK:
			MOV		A,IAP1
			AND		A,#0x07
			ADD		A,#0x01
			CALL	CLEAR_CON_TABLE
			RET
			
CLEAR_CONFIRM_BIT:
			CALL	KB_STORE_CONFIRM_CHK
			JBS		IAP1,3,CLEAR_HIGH_B_CON
			XOR		KB_CONFIRM1,A
			RET
CLEAR_HIGH_B_CON:
			XOR		KB_CONFIRM2,A			
			RET
			
CLEAR_CON_TABLE:
			TBL
			RETL	#0b00000001
			RETL	#0b00000010
			RETL	#0b00000100
			RETL	#0b00001000
			RETL	#0b00010000
			RETL	#0b00100000
			RETL	#0b01000000
			RETL	#0b10000000
			
SHIFT_CONFIRM_2BYTE:
			MOV		A,KB_CONFIRM1
			MOV		KBCON_SHIFT1,A
			MOV		A,KB_CONFIRM2
			MOV		KBCON_SHIFT2,A
			INCA	IAP1
			AND		A,#0x1F
			MOV		KTEMP3,A
FIND_CON_BIT_LP:			
			RRC		KBCON_SHIFT2,1
			RRC		KBCON_SHIFT1,1
			DJZ		KTEMP3,FIND_CON_BIT
			JMP		FIND_CON_BIT_LP			
FIND_CON_BIT:		
			RET	
			
KB_REAL_TABLE:
			TBL
			RETL	#0x00					;FAIL
			
			RETL	#0x21					;4
			RETL	#0x20					;3
			RETL	#0x31					;\ (L)
			RETL	#0x23					;6
			RETL	#0x1E					;1
			RETL	#0x1F					;2
			RETL	#0x22					;5
			RETL	#0x29					;ESC
			
			RETL	#0x3C					;F3
			RETL	#0x3B					;F2
			RETL	#0x39					;Caps Lock
			RETL	#0x3E					;F5
			RETL	#0x4E					;Page Down
			RETL	#0x3A					;F1
			RETL	#0x3D					;F4
			RETL	#0x2C					;SPACE

			RETL	#0x38					;/
			RETL	#0x37					;. 
			RETL	#0x05					;B
			RETL	#0x55					;Num *
			RETL	#0x10					;M
			RETL	#0x36					;, 
			RETL	#0x4C					;Delete
			RETL	#0x11					;N

			RETL	#0x2E					;= 
			RETL	#0x2D					;-
			RETL	#0x24					;7
			RETL	#0x2B					;Tab
			RETL	#0x26					;9
			RETL	#0x27					;0
			RETL	#0x2A					;Backspace
			RETL	#0x25					;8

			RETL	#0x1C					;Y
			RETL	#0x17					;T
			RETL	#0x14					;Q
			RETL	#0x0C					;I
			RETL	#0x08					;E
			RETL	#0x15					;R
			RETL	#0x18					;U
			RETL	#0x1A					;W
			
			RETL	#0x50					;RIGHT
			RETL	#0x48					;PAUSE
			RETL	#0x31					;\ (R)
			RETL	#0x49					;Insert
			RETL	#0x52					;UP
			RETL	#0x4B					;Page Up
			RETL	#0x4F					;LEFT
			RETL	#0x4A					;Home
			
			RETL	#0x51					;DOWN
			RETL	#0x28					;Enter
			RETL	#0x12					;O
			RETL	#0x16					;S
			RETL	#0x2F					;[
			RETL	#0x30					;]
			RETL	#0x04					;A
			RETL	#0x13					;P
			
			RETL	#0x0E					;K
			RETL	#0x0D					;J
			RETL	#0x07					;D
			RETL	#0x33					;;
			RETL	#0x0A					;G
			RETL	#0x0B					;H
			RETL	#0x0F					;L
			RETL	#0x09					;F
			
			RETL	#0x44					;F11
			RETL	#0x58					;Num Enter
			RETL	#0x5A					;Num 2
			RETL	#0x46					;Print Screen
			RETL	#0x62					;Num 0
			RETL	#0x63					;Num Del
			RETL	#0x45					;F12
			RETL	#0x5B					;Num 3
			
			RETL	#0x1B					;X
			RETL	#0x1D					;Z
			RETL	#0x34					;'
			RETL	#0x19					;V
			RETL	#0x4D					;End
			RETL	#0x00					;
			RETL	#0x06					;C
			RETL	#0x35					;`
			
			RETL	#0x5E					;Num 6
			RETL	#0x5D					;Num 5
			RETL	#0x60					;Num 8
			RETL	#0x59					;Num 1
			RETL	#0x56					;Num -
			RETL	#0x5C					;Num 4
			RETL	#0x57					;Num +
			RETL	#0x61					;Num 9
			
			RETL	#0x53					;Num Lock
			RETL	#0x43					;F10
			RETL	#0x3F					;F6
			RETL	#0x5F					;Num 7
			RETL	#0x41					;F8
			RETL	#0x42					;F9
			RETL	#0x47					;Scroll Lock
			RETL	#0x40					;F7
			
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x54					;Num /
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			
			RETL	#0x00					;
			RETL	#0xA0					;Shift (R) -- 20
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x88					;Windows (L) -- 08
			
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x82					;Shift (L) -- 02
			RETL	#0x65					;Catalog
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			
			RETL	#0x84					;Alt (L) -- 04
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x90					;Ctrl (R) -- 10
			RETL	#0xC0					;Alt (R) -- 40
			RETL	#0x00					;
			
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x81					;Ctrl (L) -- 01
			RETL	#0x00					;
			RETL	#0x00					;Fn
			RETL	#0x00					;
			
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x00					;
			RETL	#0x80					;Windows (R) -- 80
			RETL	#0x00					;
			
		
		// FOR FPGA SINK CURRENT, DELAY I/O CHANGE 1->0 ABOUT 170us
DELAY:
			CLR		KTEMP2
DELAY_LOOP:			
			NOP
			DJZ		KTEMP2,DELAY_BACK
			JMP		DELAY_LOOP
DELAY_BACK:			
			RET
			
UKB_INITIAL:
			CLR		KB_FLAG
			CLR		KB_FLAG2
			
			MOV		A,#0x00
			MOV		IOCA,A
			MOV		IOCD,A
			MOV		IOCE,A
			MOV		IOCF,A
			MOV		PORTF,A
			
			MOV		A,#0b00000111			
			MOV		IOCC,A
			MOV		KB_LED,A
			
			MOV		A,#0xFF
			MOV		IOCB,A
			MOV		KB_ROW,A			;KB ROW INPUT =1
			MOV		PUCB,A				;KB ROW PULL HIGH ENABLE
			
			MOV		A,#0x00
			MOV		KB_COLUMN0,A		;KB COLUMN OUTPUT =1
			MOV		KB_COLUMN1,A		;KB COLUMN OUTPUT =1
			MOV		KB_COLUMN2,A		
			MOV		A,#0b00111000
			MOV		KB_LED,A			;LED OFF / KB COLUMN OUTPUT =1
			
			CLR		KB_CONFIRM1
			CLR		KB_CONFIRM2
			CLR		KB_STORE1
			CLR		KB_STORE2

			MOV		A,#0x00
			CALL	ALL_KB_TEMP_FILLIN
			CALL	ALL_KEY_NCTEMP_FILLIN0
			
			BANK	1
			MOV		A,#0x01
			MOV		PROTOCOL,A
			MOV		A,#0x80
			MOV		IDLE_TIMER,A			
			RET


//////////////////////////////////////////////////////////////////////
		ORG		0x3FFF
			
			DW		0x4010

;============================================================
;Copyright c 2004 by ETOMS Electronics Corp.  All right reserved.
;No part of this computer program may be reproduced, stored in a retrieval system, or 
;transmitted in any form or by any means, electronic, mechanical, photocopying, 
;recording, scanning or otherwise, except as permitted under ETOMS authorization.  
;セ筿福祘Αぇ帝

⌨️ 快捷键说明

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