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

📄 keyscan.asl

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASL
字号:
+                     1 ;|---------------------------------------|
+                     2 ;|Program name : KeyScan.asm		 |
+                     3 ;|Use bady: 83137			 |
+                     4 ;|Programer: Alton			 |
+                     5 ;|					 |
+                     6 ;|---------------------------------------|
+                     7 
+                     8 		.area	Keyscan(code)	
0080                  9 .OnOff		EQU	0x80		
0066                 10 .Power		EQU	0x66
0004                 11 .DataLine2	EQU	00000100b 
007F                 12 .DataLine7	EQU	01111111b
0083                 13 .D7D1D0		EQU	10000011b
0080                 14 .Line7		EQU	10000000b
+                    15 ;===========================================
+                    16 
+B 00 01
0000                 17 .KeyScan::
0000 F3 00           18 		lda	#0h		
0002 FC 28           19 		sta	PP
0004 F9 00           20 		sta0	.KeyC
0006 F9 00           21 		sta0	.KeyD			 
0008 F3 04           22 		lda	#.DataLine2		;Start DataLine data
000A F9 00           23 		sta0	.KeyBuf1
000C F3 FF           24 		lda	#0ffh
000E FC 58           25 		sta	PRT17
0010 F9 00           26 		sta0	.KeyC
+                    27 		
0012                 28 .StartCheck:				
0012 F5 00           29 		lda0	.KeyBuf1	
0014 EB FF           30 		xora	#0ffh
0016 FC 32           31 		sta	PRTD
0018 A7 7F           32 		cmpe	#.DataLine7		;End DataLine data
001A 06 00 8C        33 		brz	.CheckKey
001D 20 00 31        34 		call	.ScanLine						
0020 F5 00           35 		lda0	.KeyBuf1
0022 7E              36 		rolc
0023 CB FE           37 		anda	#~01h		
0025 F9 00           38 		sta0	.KeyBuf1
0027 F5 00           39 		lda0	.KeyD		
0029 A7 00           40 		cmpe	#0h
002B 07 00 8C        41 		brnz	.CheckKey 	
002E 02 00 12        42 		br	.StartCheck
+                    43 		
0031                 44 .ScanLine:	
0031 F0 58           45 		lda	PRT17
0033 A7 FF           46 		cmpe	#0ffh
0035 06 00 41        47 		brz	.CheckD7D0D1
0038 F9 00           48 		sta0	.KeyC
003A F5 00           49 		lda0	.KeyBuf1
003C EB FF           50 		xora	#0ffh				
003E FD 00           51 		sta	.KeyD
0040 24              52 		ret
0041                 53 .CheckD7D0D1:
0041 F0 32           54 		lda	PRTD
0043 CB 83           55 		anda	#.D7D1D0
0045 A7 83           56 		cmpe	#.D7D1D0
0047 06 00 8B        57 		brz	.EndLine
004A A7 01           58 		cmpe	#01h
004C 06 00 6F        59 		brz	.PD01
004F A7 02           60 		cmpe	#02h
0051 06 00 64        61 		brz	.PD0		
0054 A7 81           62 		cmpe	#81h
0056 06 00 6F        63 		brz	.PD01
0059 A7 82           64 		cmpe	#82h
005B 06 00 64        65 		brz	.PD0
005E A7 03           66 		cmpe	#03h
0060 06 00 7C        67 		brz	.PD07
0063 24              68 		ret
0064                 69 .PD0:		
0064 F3 FF           70 		lda	#0ffh
0066 F9 00           71 		sta0	.KeyC
0068 F5 00           72 		lda0	.KeyBuf1		
006A EB FF           73 		xora	#0ffh
006C F9 00           74 		sta0	.KeyD
006E 24              75 		ret	
006F                 76 .PD01:	
006F F3 7F           77 		lda	#7fh
0071 F9 00           78 		sta0	.KeyD
0073 F5 00           79 		lda0	.KeyBuf1
0075 EB FF           80 		xora	#0ffh
0077 CB FD           81 		anda	#~02h		
0079 F9 00           82 		sta0	.KeyC
007B 24              83 		ret
007C                 84 .PD07:
007C F5 00           85 		lda0	.KeyBuf1
007E A7 40           86 		cmpe	#40h
0080 07 00 8B        87 		brnz	.EndLine
0083 F3 FF           88 		lda	#0ffh
0085 F9 00           89 		sta0	.KeyC
0087 F3 66           90 		lda	#066h
0089 F9 00           91 		sta0	.KeyD		
008B                 92 .EndLine:		
008B 24              93 		ret 	
+                    94 		
+                    95 ;-----------			
008C                 96 .CheckKey:	
+                    97 		 
008C F5 00           98 		lda0	.KeyC
008E A7 FF           99 		cmpe	#0ffh
0090 07 00 AF       100 		brnz	.CheckPd
0093 F5 00          101 		lda0	.KeyD			 
0095 A7 FF          102 		cmpe	#0ffh		
0097 06 00 D7       103 		brz	.NoKeyCode
009A A7 00          104 		cmpe	#0h
009C 06 00 D7       105 		brz	.NoKeyCode
009F A7 66          106 		cmpe	#.Power
00A1 07 00 AF       107 		brnz	.CheckPd			
00A4 F3 00          108 		lda	#0h
00A6 F9 00          109 		sta0	.KeyC
00A8 F3 66          110 		lda	#.Power
00AA F9 00          111 		sta0	.KeyD
00AC 02 00 BE       112 		br	.CkRepeaterkey 
00AF                113 .CheckPd:	
00AF F5 00          114 		lda0	.KeyC	
00B1 EB FF          115 		xora	#0ffh	
00B3 F9 00          116 		sta0	.KeyC	       
00B5 F5 00          117 		lda0	.KeyD
00B7 EB FF          118 		xora	#0ffh	
00B9 F9 00          119 		sta0	.KeyD
00BB 20 01 04       120 		call	.TransCode
00BE                121 .CkRepeaterkey:		
00BE F3 00          122 		lda	#0h
00C0 FC 28          123 		sta	PP 
00C2 F5 00          124 		lda0	.KeyC
00C4 D9 00          125 		ora	.KeyD
00C6 F9 00          126 		sta0	.KeyD		
00C8 F5 00          127 		lda0	.KeyBuf
00CA A9 00          128 		suba	.KeyD
00CC 07 00 E8       129 		brnz	.SaveKey
00CF F5 00          130 		lda0	.KeyCnt
00D1 1F             131 		inca
00D2 F9 00          132 		sta0	.KeyCnt		 		
00D4 02 00 E8       133 		br	.SaveKey	
00D7                134 .NoKeyCode:	
00D7 F3 00          135 		lda	#>.Count
00D9 FC 28          136 		sta	PP				 
00DB F3 00          137 		lda 	#0h
00DD FD 00          138 		sta 	.Count	
00DF F9 00          139 		sta0	.KeyCodeBuf
00E1 F9 00          140 		sta0	.KeyCnt	
00E3 F9 00          141 		sta0	.KeyBuf
00E5 02 00 FF       142 		br	.EndScan		
00E8                143 .SaveKey:			
00E8 F5 00          144 		lda0	.KeyD
00EA F9 00          145 		sta0	.KeyBuf
00EC F5 00          146 		lda0	.KeyCnt
00EE CB 0F          147 		anda	#0fh
00F0 A7 03          148 		cmpe	#03h		;check	three times
00F2 05 00 FF       149 		brnc	.EndScan
00F5 F3 00          150 		lda	#0h
00F7 F9 00          151 		sta0	.KeyBuf
00F9 F9 00          152 		sta0	.KeyCnt
00FB F5 00          153 		lda0	.KeyD
00FD F9 00          154 		sta0	.KeyCodeBuf
+                   155 		
00FF                156 .EndScan:			
00FF F3 00          157 		lda	#0h
0101 FC 28          158 		sta	PP
0103 24             159 		ret			
+                   160 ;===========================================		
0104                161 .TransCode:				
0104                162 .SftL0:		
0104 F5 00          163 		lda0	.KeyC
0106 A7 00          164 		cmpe	#0h
0108 07 01 10       165 		brnz	.SftL1
010B F3 00          166 		lda	#0h		 
010D 02 01 B2       167 		br	.SftR0
0110                168 .SftL1:
0110 A7 01          169 		cmpe	#01h
0112 07 01 1A       170 		brnz	.SftL2
0115 F3 80          171 		lda	#80h		
0117 02 01 B2       172 		br	.SftR0
011A                173 .SftL2:
011A A7 02          174 		cmpe	#02h
011C 07 01 24       175 		brnz	.SftL3
011F F3 70          176 		lda	#70h		 
0121 02 01 B2       177 		br	.SftR0
0124                178 .SftL3:
0124 A7 04          179 		cmpe	#04h
0126 07 01 2E       180 		brnz	.SftL4
0129 F3 60          181 		lda	#60h		
012B 02 01 B2       182 		br	.SftR0
012E                183 .SftL4:
012E A7 10          184 		cmpe	#10h
0130 07 01 38       185 		brnz	.SftL5
0133 F3 40          186 		lda	#40h		
0135 02 01 B2       187 		br	.SftR0
0138                188 .SftL5:
0138 A7 20          189 		cmpe	#20h
013A 07 01 42       190 		brnz	.SftL6
013D F3 30          191 		lda	#30h		
013F 02 01 B2       192 		br	.SftR0
0142                193 .SftL6:
0142 A7 40          194 		cmpe	#40h
0144 07 01 4C       195 		brnz	.SftL7
0147 F3 20          196 		lda	#20h		
0149 02 01 B2       197 		br	.SftR0
014C                198 .SftL7:
014C A7 80          199 		cmpe	#80h
014E 07 01 56       200 		brnz	.SftL8
0151 F3 10          201 		lda	#10h		
0153 02 01 B2       202 		br	.SftR0
0156                203 .SftL8:		
0156 A7 08          204 		cmpe	#08h
0158 07 01 60       205 		brnz	.SftL9
015B F3 50          206 		lda	#50h		
015D 02 01 B2       207 		br	.SftR0
0160                208 .SftL9:
0160 A7 06          209 		cmpe	#06h
0162 07 01 71       210 		brnz	.SftLA
0165 F5 00          211 		lda0	.KeyD
0167 A7 80          212 		cmpe	#.Line7
0169 07 01 F2       213 		brnz	.DualKey
016C F3 20          214 		lda	#20h		
016E 02 01 B2       215 		br	.SftR0		
0171                216 .SftLA:
0171 A7 0A          217 		cmpe	#0ah
0173 07 01 82       218 		brnz	.SftLB
0176 F5 00          219 		lda0	.KeyD
0178 A7 80          220 		cmpe	#.Line7
017A 07 01 F2       221 		brnz	.DualKey
017D F3 30          222 		lda	#30h		
017F 02 01 B2       223 		br	.SftR0			
0182                224 .SftLB:
0182 A7 12          225 		cmpe	#12h
0184 07 01 93       226 		brnz	.SftLC
0187 F5 00          227 		lda0	.KeyD
0189 A7 80          228 		cmpe	#.Line7
018B 07 01 F2       229 		brnz	.DualKey
018E F3 40          230 		lda	#40h		 
0190 02 01 B2       231 		br	.SftR0		
0193                232 .SftLC:
0193 A7 22          233 		cmpe	#22h
0195 07 01 A4       234 		brnz	.SftLD
0198 F5 00          235 		lda0	.KeyD
019A A7 80          236 		cmpe	#.Line7
019C 07 01 F2       237 		brnz	.DualKey
019F F3 50          238 		lda	#50h						
01A1 02 01 B2       239 		br	.SftR0		
01A4                240 .SftLD:
01A4 A7 42          241 		cmpe	#042h
01A6 07 01 B2       242 		brnz	.SftR0
01A9 F5 00          243 		lda0	.KeyD
01AB A7 80          244 		cmpe	#.Line7
01AD 07 01 F2       245 		brnz	.DualKey
01B0 F3 10          246 		lda	#10h						
01B2                247 .SftR0:
01B2 F9 00          248 		sta0	.KeyC
01B4 F5 00          249 		lda0	.KeyD
01B6 A7 04          250 		cmpe	#04h
01B8 07 01 C0       251 		brnz	.SftR4
01BB F3 02          252 		lda	#02h
01BD 02 01 EF       253 		br	.PosCD
01C0                254 .SftR4:
01C0 A7 08          255 		cmpe	#08h
01C2 07 01 CA       256 		brnz	.SftR5
01C5 F3 03          257 		lda	#03h
01C7 02 01 EF       258 		br	.PosCD
01CA                259 .SftR5:
01CA A7 10          260 		cmpe	#10h
01CC 07 01 D4       261 		brnz	.SftR6
01CF F3 04          262 		lda	#04h
01D1 02 01 EF       263 		br	.PosCD
01D4                264 .SftR6:
01D4 A7 20          265 		cmpe	#20h
01D6 07 01 DE       266 		brnz	.SftR7
01D9 F3 05          267 		lda	#05h		 
01DB 02 01 EF       268 		br	.PosCD
01DE                269 .SftR7:
01DE A7 40          270 		cmpe	#40h
01E0 07 01 E8       271 		brnz	.SftR8
01E3 F3 06          272 		lda	#06h		 
01E5 02 01 EF       273 		br	.PosCD
01E8                274 .SftR8:
01E8 A7 80          275 		cmpe	#80h
01EA 07 01 EF       276 		brnz	.PosCD
01ED F3 07          277 		lda	#07h
+                   278 		
01EF                279 .PosCD:		
01EF F9 00          280 		sta0	.KeyD
01F1 24             281 		ret
01F2                282 .DualKey:
01F2 F3 00          283 		lda	#0h
01F4 F9 00          284 		sta0	.KeyD
01F6 F9 00          285 		sta0	.KeyC
01F8 24             286 		ret		
+                   287 		
+                   288 		
+                   289 		
+                   290 		
+                   291 				
+                   292 			
+                   293 		
+                   294 		
+                   295 						 
+
+Symbol Table
+
+  1 .CheckD7D0D1                       0041 R
+  1 .CheckKey                          008C R
+  1 .CheckPd                           00AF R
+  1 .CkRepeaterkey                     00BE R
+    .Count                             **** GX
+    .D7D1D0                         =  0083 
+    .DataLine2                      =  0004 
+    .DataLine7                      =  007F 
+  1 .DualKey                           01F2 R
+  1 .EndLine                           008B R
+  1 .EndScan                           00FF R
+    .KeyBuf                            **** GX
+    .KeyBuf1                           **** GX
+    .KeyC                              **** GX
+    .KeyCnt                            **** GX
+    .KeyCodeBuf                        **** GX
+    .KeyD                              **** GX
+  1 .KeyScan                           0000 GR
+    .Line7                          =  0080 
+  1 .NoKeyCode                         00D7 R
+    .OnOff                          =  0080 
+  1 .PD0                               0064 R
+  1 .PD01                              006F R
+  1 .PD07                              007C R
+  1 .PosCD                             01EF R
+    .Power                          =  0066 
+  1 .SaveKey                           00E8 R
+  1 .ScanLine                          0031 R
+  1 .SftL0                             0104 R
+  1 .SftL1                             0110 R
+  1 .SftL2                             011A R
+  1 .SftL3                             0124 R
+  1 .SftL4                             012E R
+  1 .SftL5                             0138 R
+  1 .SftL6                             0142 R
+  1 .SftL7                             014C R
+  1 .SftL8                             0156 R
+  1 .SftL9                             0160 R
+  1 .SftLA                             0171 R
+  1 .SftLB                             0182 R
+  1 .SftLC                             0193 R
+  1 .SftLD                             01A4 R
+  1 .SftR0                             01B2 R
+  1 .SftR4                             01C0 R
+  1 .SftR5                             01CA R
+  1 .SftR6                             01D4 R
+  1 .SftR7                             01DE R
+  1 .SftR8                             01E8 R
+  1 .StartCheck                        0012 R
+  1 .TransCode                         0104 R
+
+
+Area Table
+
+   0 .                                  size    0   flags 0
+   1 Keyscan                            size  1F9   flags 1

⌨️ 快捷键说明

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