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

📄 keyscan.asm

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASM
字号:
;|---------------------------------------|
;|Program name : KeyScan.asm		 |
;|Use bady: 83137			 |
;|Programer: Alton			 |
;|					 |
;|---------------------------------------|

		.area	Keyscan(code)	
.OnOff		EQU	0x80		
.Power		EQU	0x66
.DataLine2	EQU	00000100b 
.DataLine7	EQU	01111111b
.D7D1D0		EQU	10000011b
.Line7		EQU	10000000b
;===========================================

.KeyScan::
		lda	#0h		
		sta	PP
		sta0	.KeyC
		sta0	.KeyD			 
		lda	#.DataLine2		;Start DataLine data
		sta0	.KeyBuf1
		lda	#0ffh
		sta	PRT17
		sta0	.KeyC
		
.StartCheck:				
		lda0	.KeyBuf1	
		xora	#0ffh
		sta	PRTD
		cmpe	#.DataLine7		;End DataLine data
		brz	.CheckKey
		call	.ScanLine						
		lda0	.KeyBuf1
		rolc
		anda	#~01h		
		sta0	.KeyBuf1
		lda0	.KeyD		
		cmpe	#0h
		brnz	.CheckKey 	
		br	.StartCheck
		
.ScanLine:	
		lda	PRT17
		cmpe	#0ffh
		brz	.CheckD7D0D1
		sta0	.KeyC
		lda0	.KeyBuf1
		xora	#0ffh				
		sta	.KeyD
		ret
.CheckD7D0D1:
		lda	PRTD
		anda	#.D7D1D0
		cmpe	#.D7D1D0
		brz	.EndLine
		cmpe	#01h
		brz	.PD01
		cmpe	#02h
		brz	.PD0		
		cmpe	#81h
		brz	.PD01
		cmpe	#82h
		brz	.PD0
		cmpe	#03h
		brz	.PD07
		ret
.PD0:		
		lda	#0ffh
		sta0	.KeyC
		lda0	.KeyBuf1		
		xora	#0ffh
		sta0	.KeyD
		ret	
.PD01:	
		lda	#7fh
		sta0	.KeyD
		lda0	.KeyBuf1
		xora	#0ffh
		anda	#~02h		
		sta0	.KeyC
		ret
.PD07:
		lda0	.KeyBuf1
		cmpe	#40h
		brnz	.EndLine
		lda	#0ffh
		sta0	.KeyC
		lda	#066h
		sta0	.KeyD		
.EndLine:		
		ret 	
		
;-----------			
.CheckKey:	
		 
		lda0	.KeyC
		cmpe	#0ffh
		brnz	.CheckPd
		lda0	.KeyD			 
		cmpe	#0ffh		
		brz	.NoKeyCode
		cmpe	#0h
		brz	.NoKeyCode
		cmpe	#.Power
		brnz	.CheckPd			
		lda	#0h
		sta0	.KeyC
		lda	#.Power
		sta0	.KeyD
		br	.CkRepeaterkey 
.CheckPd:	
		lda0	.KeyC	
		xora	#0ffh	
		sta0	.KeyC	       
		lda0	.KeyD
		xora	#0ffh	
		sta0	.KeyD
		call	.TransCode
.CkRepeaterkey:		
		lda	#0h
		sta	PP 
		lda0	.KeyC
		ora	.KeyD
		sta0	.KeyD		
		lda0	.KeyBuf
		suba	.KeyD
		brnz	.SaveKey
		lda0	.KeyCnt
		inca
		sta0	.KeyCnt		 		
		br	.SaveKey	
.NoKeyCode:	
		lda	#>.Count
		sta	PP				 
		lda 	#0h
		sta 	.Count	
		sta0	.KeyCodeBuf
		sta0	.KeyCnt	
		sta0	.KeyBuf
		br	.EndScan		
.SaveKey:			
		lda0	.KeyD
		sta0	.KeyBuf
		lda0	.KeyCnt
		anda	#0fh
		cmpe	#03h		;check	three times
		brnc	.EndScan
		lda	#0h
		sta0	.KeyBuf
		sta0	.KeyCnt
		lda0	.KeyD
		sta0	.KeyCodeBuf
		
.EndScan:			
		lda	#0h
		sta	PP
		ret			
;===========================================		
.TransCode:				
.SftL0:		
		lda0	.KeyC
		cmpe	#0h
		brnz	.SftL1
		lda	#0h		 
		br	.SftR0
.SftL1:
		cmpe	#01h
		brnz	.SftL2
		lda	#80h		
		br	.SftR0
.SftL2:
		cmpe	#02h
		brnz	.SftL3
		lda	#70h		 
		br	.SftR0
.SftL3:
		cmpe	#04h
		brnz	.SftL4
		lda	#60h		
		br	.SftR0
.SftL4:
		cmpe	#10h
		brnz	.SftL5
		lda	#40h		
		br	.SftR0
.SftL5:
		cmpe	#20h
		brnz	.SftL6
		lda	#30h		
		br	.SftR0
.SftL6:
		cmpe	#40h
		brnz	.SftL7
		lda	#20h		
		br	.SftR0
.SftL7:
		cmpe	#80h
		brnz	.SftL8
		lda	#10h		
		br	.SftR0
.SftL8:		
		cmpe	#08h
		brnz	.SftL9
		lda	#50h		
		br	.SftR0
.SftL9:
		cmpe	#06h
		brnz	.SftLA
		lda0	.KeyD
		cmpe	#.Line7
		brnz	.DualKey
		lda	#20h		
		br	.SftR0		
.SftLA:
		cmpe	#0ah
		brnz	.SftLB
		lda0	.KeyD
		cmpe	#.Line7
		brnz	.DualKey
		lda	#30h		
		br	.SftR0			
.SftLB:
		cmpe	#12h
		brnz	.SftLC
		lda0	.KeyD
		cmpe	#.Line7
		brnz	.DualKey
		lda	#40h		 
		br	.SftR0		
.SftLC:
		cmpe	#22h
		brnz	.SftLD
		lda0	.KeyD
		cmpe	#.Line7
		brnz	.DualKey
		lda	#50h						
		br	.SftR0		
.SftLD:
		cmpe	#042h
		brnz	.SftR0
		lda0	.KeyD
		cmpe	#.Line7
		brnz	.DualKey
		lda	#10h						
.SftR0:
		sta0	.KeyC
		lda0	.KeyD
		cmpe	#04h
		brnz	.SftR4
		lda	#02h
		br	.PosCD
.SftR4:
		cmpe	#08h
		brnz	.SftR5
		lda	#03h
		br	.PosCD
.SftR5:
		cmpe	#10h
		brnz	.SftR6
		lda	#04h
		br	.PosCD
.SftR6:
		cmpe	#20h
		brnz	.SftR7
		lda	#05h		 
		br	.PosCD
.SftR7:
		cmpe	#40h
		brnz	.SftR8
		lda	#06h		 
		br	.PosCD
.SftR8:
		cmpe	#80h
		brnz	.PosCD
		lda	#07h
		
.PosCD:		
		sta0	.KeyD
		ret
.DualKey:
		lda	#0h
		sta0	.KeyD
		sta0	.KeyC
		ret		
		
		
		
		
				
			
		
		
						 

⌨️ 快捷键说明

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