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

📄 getkeycode.asm

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
		lda0	.KeyPos	
		cmpe	#.ALPHA
		brz	.SetAlpha
		lda0	.KeyPos	
		cmpe	#.SHIFT
		brz	.SetShift
		lda0	.KeyPos	
		cmpe	#.HYP
		brz	.SetHyp
		lda0	.KeyPos					
		cmpe	#45h
		brnz	.ChkCosh
		lda	#.SinH
		sta0 	.KeyPos
		br	.EndHypAddNor
.ChkCosh:
		cmpe	#46h
		brnz	.ChkTanh
		lda	#.CosH
		sta0 	.KeyPos
		br	.EndHypAddNor
.ChkTanh:		
		cmpe	#47h
		brnz	.EndHypAddNor1
		lda	#.TanH
		sta0 	.KeyPos
		br	.EndHypAddNor
.EndHypAddNor1:		
		lda	#0h
		sta0	.KeyPos
.EndHypAddNor:	
		call	.CheckClrData	
		lda	.SFlag
		anda	#~41h		
		sta	.SFlag
		br	.EndGetKeyCode
;-------------------------------------------		
.HypAddSft:	
		lda0	.KeyPos	
		cmpe	#.ALPHA
		brz	.SetAlpha
		lda0	.KeyPos	
		cmpe	#.SHIFT
		brz	.SetShift
		lda0	.KeyPos	
		cmpe	#.HYP
		brz	.SetHyp
		lda0	.KeyPos	
		cmpe	#45h
		brnz	.ChkACosh
		lda	#.ASinH
		sta0 	.KeyPos
		br	.EndHypAddSft
.ChkACosh:
		cmpe	#46h
		brnz	.ChkATanh
		lda	#.ACosH
		sta0 	.KeyPos
		br	.EndHypAddSft
.ChkATanh:		
		cmpe	#47h
		brnz	.EndHypAddSft1
		lda	#.ATanH
		sta0 	.KeyPos
		br	.EndHypAddSft
.EndHypAddSft1:
		lda	#0h
		sta0	.KeyPos		
		
.EndHypAddSft:		
		call	.CheckClrData
		lda	.SFlag
		anda	#~45h		
		sta	.SFlag		
		br	.EndGetKeyCode
;-------------------------------------------				
.EndGetKeyCode:
		lda	#>StateFlag
		sta	PP
		lda	StateFlag
		anda	#80h
		brnz	.CompMode		
		lda	StateFlag
		anda	#40h
		brnz	.ReleaseSDkey
		;lda	StateFlag
		;anda	#08h
		;brnz	.BaseNmode
		lda	StateFlag
		anda	#07h
		brz	.NotRegMode
;;LRmodeKeyLock						
		lda0	.KeyPos
		cmpe	#0d0h
		brz	.ClrKeyPos
		cmpe	#0d6h
		brz	.ClrKeyPos
		cmpe	#07ah		;calc'='
		brz	.ClrKeyPos
		cmpe	#07bh		;calc 
		brz	.ClrKeyPos
		lda	StateFlag
		anda	#07h
		cmpe	#06h
		brnz	.CkFontC
		lda0	.KeyPos
		cmpe	#0cfh
		brz	.ClrKeyPos
		br	.NotRegMode		 
.CkFontC:		
		lda0	.KeyPos
		cmpe	#0fch
		brz	.ClrKeyPos	
		br	.NotRegMode
;-------------------------------------------		
.ReleaseSDkey:
		lda0	.FormulaFlag
		cmpe	#01h
		brnz	.SDModeKeyCK
		lda0	.KeyPos
		cmpe	#0cch
		brz	.ClrKeyPos
		cmpe	#0ddh
		brz	.ClrKeyPos
.SDModeKeyCK:			
		lda0	.KeyPos
		cmpe	#0bdh
		brz	.ClrKeyPos
		cmpe	#0fah
		brz	.ClrKeyPos
		cmpe	#0fbh
		brz	.ClrKeyPos
		cmpe	#0cfh
		brz	.ClrKeyPos
		cmpe	#0fch
		brz	.ClrKeyPos
		cmpe	#0fdh
		brz	.ClrKeyPos
		cmpe	#0feh
		brz	.ClrKeyPos
		cmpe	#0cah
		brz	.ClrKeyPos
		cmpe	#0beh
		brz	.ClrKeyPos
		cmpe	#07ah		;calc'='
		brz	.ClrKeyPos
		br	.EndDalta
;-------------------------------------------		
.CompMode:	
		
		lda0	.FormulaFlag
		cmpe	#01h
		brnz	.CompModeKeyCK
		lda0	ErrorFlag
		cmpe	#0h
		brnz	.EndDalta1
		lda0	.KeyPos
		cmpe	#0cch
		brz	.ClrKeyPos
		cmpe	#0ddh
		brz	.ClrKeyPos		 
.CompModeKeyCK:			
		lda0	.KeyPos
		cmpe	#0b0h		; simecolon
		brz	.ClrKeyPos
		cmpe	#0cfh
		brz	.ClrKeyPos
		cmpe	#0fah
		brz	.ClrKeyPos
		cmpe	#0fbh
		brz	.ClrKeyPos
		cmpe	#0fch
		brz	.ClrKeyPos
		cmpe	#0fdh
		brz	.ClrKeyPos
		cmpe	#0feh
		brz	.ClrKeyPos
		cmpe	#0cah
		brz	.ClrKeyPos
		cmpe	#0cbh
		brz	.ClrKeyPos
		cmpe	#0bah
		brz	.ClrKeyPos
		cmpe	#0bch
		brz	.ClrKeyPos
		cmpe	#0bdh
		brz	.ClrKeyPos
		cmpe	#0beh
		brz	.ClrKeyPos
		br	.EndDalta
 				
.ClrKeyPos:
		lda	#0h
		sta0	.KeyPos
		lda 	#>.SFlag
		sta	PP
		lda 	.SFlag
		anda	#~07h
		sta 	.SFlag				
.NotRegMode:		 
.EndDalta: 							
		lda	#0h
		sta	PP	
		ret
.EndDalta1:
		lda	#0h
		sta0	.FormulaFlag
		sta0	.StoFlag
		ret
;-------------------------------------------		
.CheckClrData::	
		 
		lda0    ErrorFlag
		cmpe	#0h
		brnz	.EndClrData		
		lda0	.KeyPos
		cmpe	#0h
		brz	.EndClrData		;2002 11 13
		lda	#01h
		sta	PP
		lda	.SetFlag
		anda	#02h
		brnz	.EndClrData
		lda	.SFlag
		anda	#08h
		brz	1$
		lda0	.KeyPos
		cmpe	#61h
		brz	.ClrKeyPos
		cmpe	#65h
		brz	.ClrKeyPos
1$:				
		lda	.SFlag
		anda	#20h
		cmpe	#20h
		brz	.EndClrData
		lda	.SFlag
		anda	#18h
		cmpe	#18h
		brz	.EndClrData
		lda0	.KeyPos			 	
		cmpe	#052h
		brz	.EndClrData	;sto	
		cmpe	#0b5h		;m+
		brz	.CkMaddMode
		cmpe	#0dfh		;m-
		brz	.CkMaddMode
		cmpe	#0cch		
		brz	.EndClrData	
		cmpe	#0ddh
		brz	.EndClrData
		cmpe	#0a3h
		brz	.EndClrData
		cmpe	#07bh
		brz	.EndClrData	
		cmpe	#77h
		brz	.EndClrData
		cmpe	#0b1h
		brz	.EndClrData	
		cmpe	#065h		;66
		brz	.EndClrData
		cmpe	#0eeh
		brz	.EndClrData
		cmpe	#0f8h		;DRG
		brz	.EndClrData
		cmpe	#0c2h
		brz	.EndClrData
		cmpe	#041h
		brz	.ChangMode	;.EndClrData	;A/C	
		cmpe	#031h		
		brz	.ChangMode		
		cmpe	#0b7h		;dms
		brz	.ChangMode
		cmpe	#042h		;shift dms
		brz	.ChangMode
		cmpe	#0c3h		;A B/C
		brz	.ChangMode
		lda0	.ModeFlag
		anda	#0f0h
		brnz	.EndClrData
		lda	BasenFlag
		anda	#0fh
		brnz	.EndClrData
.CKEQUAC::				
		lda	#>.SFlag	
		sta	PP		
		lda	.SFlag
		anda	#48h
		cmpe	#08h		;08=Enter ,40=AC , 48=AC+Enter
		brz	.Add_ANS
		cmpe	#40h		
		brz	.CKlrkey 
		cmpe	#48h
		brz	.CKlrkey				
		br 	.EndClrData
.CkMaddMode:
		lda	#>StateFlag
		sta	PP
		lda	StateFlag
		anda	#47h
		brnz	.EndClrData
		br	.EndClrData;.CKEQUAC		
.ChangMode:
		lda	#01h
		sta	PP
		lda	.SFlag
		anda	#40h
		cmpe	#40h
		brz	.CKlrkey
		call	.CheckFunctKey
		br 	.EndClrData			
.CKlrkey: 	
		lda	#01h
		sta	PP
		lda	.SetFlag
		anda	#~3fh		;clear disp point fract dms eng rnd
		sta	.SetFlag				
		call	.ClrP2Data								
		call	Rekeyindisp
		br	.EndClrData
.Add_ANS:	
		lda	#>.SetFlag
		sta	PP
		lda	.SetFlag
		anda	#80h	
		brnz	.NoClrData
		lda	#>.SRFlag
		sta	PP
		lda	#0h
		sta	.SRFlag
		call	.ClrP2Data
.NoClrData:			
		call	.CheckRnd															
.EndClrData:
		ret
 	
;-------------------------------------------
.CheckFunctKey:
		lda	#01h
		sta	PP
		lda	.SetFlag
		anda	#20h
		brz	.CheckShiftDmsAbcKey			
		lda0	.KeyPos
		cmpe	#0b7h		;DMS mode
		brz	.ChangDmsMode
		cmpe	#42h		;DMS mode
		brz	.ChangDmsMode
		cmpe	#0c3h		;Fract to Point mode
		brz	.ChangFractMode
		cmpe	#031h		;Fract to Point mode
		brz	.ChangFractbc
		br	.EndCheckFunctKey
.ChangDmsMode:
		
		lda	.SetFlag		
		anda	#1ch
		cmpe	#0h
		brz	.DispDms
		cmpe	#10h
		brz	.DispDms
		cmpe	#08h
		brz	.DispDms		
		cmpe	#04h
		brz	.DispPointmode		
		br	.EndCheckFunctKey
.DispDms:
		lda	.SetFlag
		anda	#~1ch	
		ora	#04h
		sta	.SetFlag
		br	.EndCheckFunctKey
.ChangFractMode:
		lda	#01h
		sta	PP
		lda	.SetFlag		
		anda	#1ch
		cmpe	#0h
		brz	.DispFractmode
		cmpe	#04h
		brz	.DispFractmode
		lda	.SetFlag		
		anda	#18h
		cmpe	#10h
		brz	.DispFractmode		
		cmpe	#08h
		brz	.DispPointmode		
		br	.EndCheckFunctKey
.DispFractmode:
		lda	.SetFlag
		anda	#~1ch	
		ora	#08h
		sta	.SetFlag
		br	.EndCheckFunctKey
.ChangFractbc:
		 
		lda	.SetFlag
		anda	#~1ch	
		ora	#10h
		sta	.SetFlag
		br	.EndCheckFunctKey		
.DispPointmode:
		lda	.SetFlag
		anda	#~1ch		
		sta	.SetFlag
		br	.EndCheckFunctKey
.CheckShiftDmsAbcKey:
		lda0	.KeyPos
		cmpe	#31h
		brz	.ClrKeyPos		
		cmpe	#42h
		brz	.ClrKeyPos
.EndCheckFunctKey:		
		ret
		
		
;-------------------------------------------
.Delay::
		lda	#01h
		sta	PP
		lda	#0h		
		sta	.DelayCnt
.Dely:		
		lda	.DelayCnt
		cmpe	#0ffh
		brz	.EndDelay
		lda	.DelayCnt
		inca
		sta	.DelayCnt
		br	.Dely	
.EndDelay:
		ret	
;-------------------------------------------		
.ClrLCD::	
		lda	#0h
		sta	PP			
		lda	#80h
		sta	DP
.Clrlcdc:		
		lda	#0h
		sta	i
		incdp	
		lda	DP
		cmpe	#0d0h
		brz	.Endlcd
		br	.Clrlcdc
.Endlcd:	
		ret		
;-------------------------------------------		
.ClrP3::	
		lda	#03h
		sta	PP			
		lda	#0h
		sta	DP
.Clrpp:		
		lda	#0h
		sta	i
		incdp	
		lda	DP
		cmpe	#0a4h		;#0b8h
		brz	.Endp3
		br	.Clrpp
.Endp3:	
		ret										
;===========================================
;.NormalKey::
;		DB	000h,000h,010h,0a0h,0a1h,0a2h,0a3h,000h,000h,000h
;		DB	000h,000h,000h,000h,0cch,0ddh,0eeh,000h,000h,000h
;		DB	000h,000h,07bh,0c8h,0d0h,0d1h,0d2h,0d3h,000h,000h
;		DB	000h,000h,0c2h,0c3h,0c4h,0c5h,0c6h,0c7h,000h,000h
;		DB	000h,000h,0a8h,0b7h,0b8h,0b9h,0c0h,0c1h,000h,000h
;		DB	000h,000h,000h,000h,0b2h,0b3h,0b4h,0b5h,000h,000h
;		DB	000h,000h,007h,008h,009h,065h,066h,000h,000h,000h
;		DB	000h,000h,004h,005h,006h,0a6h,0a7h,000h,000h,000h
;		DB	000h,000h,001h,002h,003h,0a4h,0a5h,000h,000h,000h
;.ShiftKey::
;		DB	000h,000h,060h,0a9h,0f9h,0f8h,077h,000h,000h,000h	;1
;		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;1
;		DB	000h,000h,000h,0d4h,0d6h,000h,000h,0d7h,000h,000h	;0
;		DB	000h,000h,041h,031h,000h,000h,0d8h,0d9h,000h,000h	;0
;		DB	000h,000h,000h,042h,000h,0e0h,0e1h,0e2h,000h,000h	;1
;		DB	000h,000h,000h,000h,0cfh,000h,0b0h,0dfh,000h,000h	;1	
;		DB	000h,000h,0fah,0fbh,0fch,061h,0b6h,000h,000h,000h	;1		
;		DB	000h,000h,0fdh,0feh,0cah,0d5h,0c9h,000h,000h,000h	;0
;		DB	000h,000h,0cbh,0bah,0bch,0bdh,0beh,000h,000h,000h	;0
;		
;.AlphaKey::
;		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;1
;		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;1
;		DB	000h,000h,07ah,000h,000h,000h,000h,000h,000h,000h	;1
;		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;1
;		DB	000h,000h,0e3h,0e4h,0e5h,0e6h,0e7h,0e8h,000h,000h	;0
;		DB	000h,000h,000h,000h,000h,0f5h,0f6h,0f7h,000h,000h	;1	
;		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;0
;		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;0
;		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;1
.NormalKey::
		DB	000h,000h,010h,0a0h,0a1h,0a2h,0a3h,000h,000h,000h
		DB	000h,000h,000h,000h,0cch,0ddh,0eeh,000h,000h,000h
		DB	000h,000h,0c8h,0c9h,0d0h,0d1h,0d2h,0d3h,000h,000h
		DB	000h,000h,0c2h,0c3h,0c4h,0c5h,0c6h,0c7h,000h,000h
		DB	000h,000h,0a8h,0b7h,0b8h,0b9h,0c0h,0c1h,000h,000h
		DB	000h,000h,000h,000h,0b2h,0b3h,0b4h,0b5h,000h,000h
		DB	000h,000h,007h,008h,009h,065h,066h,000h,000h,000h
		DB	000h,000h,004h,005h,006h,0a6h,0a7h,000h,000h,000h
		DB	000h,000h,001h,002h,003h,0a4h,0a5h,000h,000h,000h
.ShiftKey::
		DB	000h,000h,060h,0a9h,0f9h,0f8h,077h,000h,000h,000h	;1
		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;1
		DB	000h,000h,0d4h,0d5h,0d6h,000h,000h,0d7h,000h,000h	;0
		DB	000h,000h,041h,031h,000h,000h,0d8h,0d9h,000h,000h	;0
		DB	000h,000h,000h,042h,000h,0e0h,0e1h,0e2h,000h,000h	;1
		DB	000h,000h,000h,000h,0cfh,000h,0b0h,0dfh,000h,000h	;1	
		DB	000h,000h,0fah,0fbh,0fch,061h,0b6h,000h,000h,000h	;1		
		DB	000h,000h,0fdh,0feh,0cah,000h,000h,000h,000h,000h	;0
		DB	000h,000h,0cbh,0bah,0bch,0bdh,0beh,000h,000h,000h	;0
		
.AlphaKey::
		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;1
		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;1
		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;1
		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;1
		DB	000h,000h,0e3h,0e4h,0e5h,0e6h,0e7h,0e8h,000h,000h	;0
		DB	000h,000h,000h,000h,000h,0f5h,0f6h,0f7h,000h,000h	;1	
		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;0
		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;0
		DB	000h,000h,000h,000h,000h,000h,000h,000h,000h,000h	;1
									

⌨️ 快捷键说明

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