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

📄 oppotriangle_0225.asl

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASL
📖 第 1 页 / 共 5 页
字号:
+                     1  ;/subrutine name : oppotriangle.asm
+                     2 ;/user bady      : HE84770
+                     3 ;/fast clock     : 4Mhz
+                     4 ;/slow clock     : 32768khz
+                     5 ;/programer      : Alton
+                     6 ;|---------------------------------------------------|
+                     7 ;| Program:Asin ,Acos ,Atan			     |		
+                     8 ;| Format:					     |	
+                     9 ;|	ex: Asin  0.88				     |		
+                    10 ;| Input:					     |	
+                    11 ;|	Input data to OperandX			     |	
+                    12 ;|	call	.Asin				     |	
+                    13 ;|	result:	OperandZ	 		     |	
+                    14 ;|      Acos Atan Atan asame			     |	
+                    15 ;|						     |	
+                    16 ;|    	ps(if ErrorFlag =1 data is Error)	     |
+                    17 ;|---------------------------------------------------| 
+                    18 
+                    19 ;
0000                 20 pS0		EQU		0X00
000A                 21 pS1		EQU		pS0+0X0a
0014                 22 pS2		EQU		pS1+0X0a
001E                 23 pS3		EQU		pS2+0X0a
0028                 24 pS4		EQU		pS3+0X0a
0032                 25 pS5		EQU		pS4+0X0a
003C                 26 qS1		EQU		pS5+0X0a
0046                 27 qS2		EQU		qS1+0X0a
0050                 28 qS3		EQU		qS2+0X0a
005A                 29 qS4		EQU		qS3+0X0a
0064                 30 c_hsqrt2	EQU		qS4+0X0a
006E                 31 H_PI		EQU		c_hsqrt2+0X0a
0078                 32 Point5		EQU		H_PI+0X0A
0082                 33 Int2		EQU		Point5+0X0a
008C                 34 X		EQU		Int2+0X0a
0096                 35 Int1		EQU		X+0x0a
00A0                 36 R180DivPi	EQU		Int1+0X0a
00AA                 37 PiDiv180	EQU		R180DivPi+0X0a
00B4                 38 Int0		EQU		PiDiv180+0X0a
00BE                 39 Int30 		EQU		Int0+0X0a
00C8                 40 Int60 		EQU		Int30+0X0a
00D2                 41 Int90 		EQU		Int60+0X0a
00DC                 42 Int45		EQU		Int90+0X0a
00E6                 43 INT180          equ             Int45+0X0a
+                    44 ;;Golden added
0000                 45 COMBN20000      equ             0x0
000A                 46 COMBR24         equ             COMBN20000+0x0a
0014                 47 COMBR70         equ             COMBR24+0x0a
+                    48 
+                    49 ;;
0000                 50 Id0		EQU		0X00
000A                 51 Id1		EQU		Id0+0X0a
0014                 52 Id2		EQU		Id1+0X0a
001E                 53 Id3		EQU		Id2+0X0a
0028                 54 At0		EQU		Id3+0X0a
0032                 55 At1		EQU		At0+0X0a
003C                 56 At2		EQU		At1+0X0a
0046                 57 At3		EQU		At2+0X0a
0050                 58 At4		EQU		At3+0X0a
005A                 59 At5		EQU		At4+0X0a
0064                 60 At6		EQU		At5+0X0a
006E                 61 At7		EQU		At6+0X0a
0078                 62 At8		EQU		At7+0X0a
0082                 63 At9		EQU		At8+0X0a
008C                 64 At10		EQU		At9+0X0a
0096                 65 Num1		EQU		At10+0X0a
00A0                 66 Num2		EQU		Num1+0X0a
00AA                 67 Num3		EQU		Num2+0X0a
00B4                 68 Num4		EQU		Num3+0X0a
00BE                 69 Int1T		EQU		Num4+0X0a
00C8                 70 Int2T 		EQU		Int1T+0X0a
00D2                 71 Int1p5		EQU		Int2T+0X0a
0007                 72 .CmpLen		EQU		0x07
+                    73 ;-----------------------------------------------
+                    74 		  .area	  asin_data(data,ABS)
+                    75 		   .org	0xd8
+B 00 01
00D8                 76 .KeyC::								
00D8                 77 .M_Data_Offset::	.ds		1
00D9                 78 .IdFlag::		.ds		1		;ID=0,1,2,3,(4=-1)
00DA                 79 .KeyD::
00DA                 80 .SignXBuf:		.ds		1
00DB                 81 .KeyCnt::
00DB                 82 .SpecialFlag::		.ds		1
00DC                 83 .DPBuf:: 		.ds		1
+                    84 
+                    85      		  .area asin_code(code)
+                    86 ;-----------------------------------------------
+B 00 02
0000                 87 .Asin::		
+                    88 		
0000 F1 00           89 		lda	SignX
0002 FD DA           90 		sta	.SignXBuf
0004 F3 00           91 		lda	#0h
0006 FD 00           92 		sta	SignX
0008 20 00 00        93 		call	.X_trans_Buf		
000B 20 03 0F        94 		call	.CheckData
000E F1 00           95 		lda	ErrorFlag
0010 A7 01           96 		cmpe	#01h
0012 06 00 A8        97 		brz	.ErrorDataAsin	
0015 20 02 89        98 		call	.SpecialDegree	
0018 F1 DB           99 		lda	.SpecialFlag
001A A7 00          100 		cmpe	#0h
001C 06 00 2E       101 		brz	.NotSpeicalDegree
001F A7 01          102 		cmpe	#01h
0021 06 00 60       103 		brz	.Degree30Asin
0024 A7 02          104 		cmpe	#02h
0026 06 00 78       105 		brz	.Degree90Asin
0029 A7 03          106 		cmpe	#03h
002B 06 00 90       107 		brz	.Degree0Asin
+                   108 		
002E                109 .NotSpeicalDegree:
+                   110 						
002E F3 78          111 		lda	#Point5
0030 FD D8          112 		sta	.M_Data_Offset
0032 20 04 B9       113 		call	.InpDataToY
0035 20 00 00       114 		call	LineUp	
0038 F3 00          115 		lda	#OperandX
003A FD 00          116 		sta	Addr1
003C F3 00          117 		lda	#OperandY
003E FD 00          118 		sta	Addr2		
0040 F3 07          119 		lda	#.CmpLen		;06
0042 FD 00          120 		sta	DpCount
0044 20 00 00       121 		call	CompareData
0047 F1 00          122 		lda	Temp1
0049 A7 01          123 		cmpe	#1h
004B 06 00 57       124 		brz	.SinXBeyondPoint5
004E 20 00 00       125 		call	.Buf_trans_X		;2002   7/12		
0051 20 03 3D       126 		call	.Condition1		
0054 02 00 AB       127 		br	.AddSymbols
0057                128 .SinXBeyondPoint5:
0057 20 00 00       129 		call	.Buf_trans_X		;2002   7/12
005A 20 03 50       130 		call	.Condition2		
005D 02 00 AB       131 		br	.AddSymbols 
0060                132 .Degree30Asin:
0060 F3 BE          133 		lda	#Int30
0062 FD D8          134 		sta	.M_Data_Offset
0064 20 04 7E       135 		call	.InpData
0067 20 00 00       136 		call	.ClrZ
006A 20 00 00       137 		call	.X_trans_Z
006D F3 05          138 		lda	#05h
006F FD D9          139 		sta	.IdFlag	
0071 F3 00          140 		lda	#0h
0073 FD 00          141 		sta	PointZ
0075 02 00 AB       142 		br	.AddSymbols
0078                143 .Degree90Asin:
0078 F3 D2          144 		lda	#Int90
007A FD D8          145 		sta	.M_Data_Offset
007C 20 04 7E       146 		call	.InpData
007F 20 00 00       147 		call	.ClrZ
0082 20 00 00       148 		call	.X_trans_Z
0085 F3 05          149 		lda	#05h
0087 FD D9          150 		sta	.IdFlag	
0089 F3 00          151 		lda	#0h
008B FD 00          152 		sta	PointZ
008D 02 00 AB       153 		br	.AddSymbols 	
0090                154 .Degree0Asin:
0090 F3 B4          155 		lda	#Int0
0092 FD D8          156 		sta	.M_Data_Offset
0094 20 04 7E       157 		call	.InpData
0097 20 00 00       158 		call	.ClrZ
009A 20 00 00       159 		call	.X_trans_Z
009D F3 05          160 		lda	#05h
009F FD D9          161 		sta	.IdFlag	
00A1 F3 00          162 		lda	#0h
00A3 FD 00          163 		sta	PointZ
00A5 02 00 AB       164 		br	.AddSymbols 
00A8                165 .ErrorDataAsin:
00A8 20 00 00       166 		call	.ClrZ	
00AB                167 .AddSymbols:	
00AB F1 D9          168 		lda	.IdFlag	
00AD A7 05          169 		cmpe	#05h
00AF 06 00 BA       170 		brz	.EndDegreeAsin
00B2 A7 0C          171 		cmpe	#0ch
00B4 06 00 BA       172 		brz	.EndDegreeAsin		
00B7 20 02 46       173 		call	.Degree
00BA                174 .EndDegreeAsin:
00BA F3 00          175 		lda	#0h
00BC FD D9          176 		sta	.IdFlag		
+                   177 ;Added by Golden		
00BE F1 DA          178 		lda	.SignXBuf
00C0 A7 00          179 		cmpe    #00h
00C2 06 00 C7       180 		brz     0$
00C5 FD 00          181 		sta     SignZ
+                   182 0$:		
+                   183 
00C7 24             184 		ret
+                   185 ;-----------------------------------------------
00C8                186 .Acos::
00C8 F5 00          187                 lda0     SignX
00CA F9 00          188 		sta0     SignT
00CC F1 00          189 		lda	ErrorFlag
00CE A7 01          190 		cmpe	#01h
00D0 06 01 8B       191 		brz	.EndAcos
00D3 20 00 00       192 		call	.X_trans_Buf		;2002   7/12			
00D6 20 02 89       193 		call	.SpecialDegree	
00D9 F1 DB          194 		lda	.SpecialFlag
00DB A7 00          195 		cmpe	#0h
00DD 06 00 EF       196 		brz	.NotSpeicalDegreeAcos
00E0 A7 01          197 		cmpe	#01h
00E2 06 01 18       198 		brz	.Degree60Acos
00E5 A7 02          199 		cmpe	#02h
00E7 06 01 34       200 		brz	.Degree0Acos
00EA A7 03          201 		cmpe	#03h
00EC 06 01 50       202 		brz	.Degree90Acos
+                   203 		
00EF                204 .NotSpeicalDegreeAcos:	
00EF F3 0C          205 		lda	#0ch
00F1 FD D9          206 		sta	.IdFlag			
00F3 20 00 00       207 		call	.Asin			
00F6 F1 00          208 		lda	ErrorFlag
00F8 A7 01          209 		cmpe	#01h
00FA 06 01 8B       210 		brz	.EndAcos	
00FD F3 00          211 		lda	#0h
00FF FD 00          212 		sta	SignZ	
0101 F1 DA          213 		lda	.SignXBuf	
0103 A7 00          214 		cmpe	#00h
0105 06 01 7E       215 		brz	.XBeyond0
0108 F3 6E          216 		lda	#H_PI
010A FD D8          217 		sta	.M_Data_Offset
010C 20 04 7E       218 		call	.InpData		
010F 20 00 00       219 		call	.Z_trans_Y
0112 20 00 00       220 		call	Addition				
0115 02 01 8B       221 		br	.EndAcos
0118                222 .Degree60Acos:
+                   223                          
0118 F3 C8          224 		lda	#Int60
011A FD D8          225 		sta	.M_Data_Offset
011C 20 04 7E       226 		call	.InpData
011F F1 00          227 		lda     SignT
0121 DB 00          228 		ora     #0
0123 07 01 65       229 		brnz    NegValue  
0126 20 00 00       230 		call	.X_trans_Z
0129 F3 05          231 		lda	#05h
012B FD D9          232 		sta	.IdFlag	
012D F3 00          233 		lda	#0h
012F FD 00          234 		sta	PointZ
0131 02 01 8B       235 		br	.EndAcos
0134                236 .Degree0Acos:
0134 F3 B4          237 		lda	#Int0
0136 FD D8          238 		sta	.M_Data_Offset
0138 20 04 7E       239 		call	.InpData
+                   240 ;added by golden		
013B F1 00          241 		lda     SignT
013D DB 00          242 		ora     #0
013F 07 01 65       243 		brnz    NegValue  
0142 20 00 00       244 		call	.X_trans_Z
0145 F3 05          245 		lda	#05h
0147 FD D9          246 		sta	.IdFlag	
0149 F3 00          247 		lda	#0h
014B FD 00          248 		sta	PointZ
014D 02 01 8B       249 		br	.EndAcos
0150                250 .Degree90Acos:
0150 F3 D2          251 		lda	#Int90
0152 FD D8          252 		sta	.M_Data_Offset
0154 20 04 7E       253 		call	.InpData
0157 20 00 00       254 		call	.X_trans_Z
015A F3 05          255 		lda	#05h
015C FD D9          256 		sta	.IdFlag	
015E F3 00          257 		lda	#0h
0160 FD 00          258 		sta	PointZ
0162 02 01 8B       259 		br	.EndAcos
+                   260 ;added by golden
0165                261 NegValue:
0165 20 00 00       262                 call	.X_trans_Z
0168 F3 E6          263 		lda	#Int180
016A FD D8          264 		sta	.M_Data_Offset
016C 20 04 7E       265 		call	.InpData		
016F 20 00 00       266 		call	.Z_trans_Y						
0172 20 00 00       267 		call	Subtration		
0175 F3 00          268         	lda	#0h
0177 FD 00          269 		sta	PointZ
0179 FD 00          270 		sta     SignZ
017B 02 01 95       271 		br      .EndDegreeAcos
017E                272 .XBeyond0:				
017E F3 6E          273 		lda	#H_PI
0180 FD D8          274 		sta	.M_Data_Offset
0182 20 04 7E       275 		call	.InpData		
0185 20 00 00       276 		call	.Z_trans_Y						
0188 20 00 00       277 		call	Subtration		        	
018B                278 .EndAcos:		
018B F1 D9          279 		lda	.IdFlag
018D A7 05          280 		cmpe	#05h
018F 06 01 95       281 		brz	.EndDegreeAcos		
0192 20 02 46       282 		call	.Degree	
0195                283 .EndDegreeAcos:	
0195 F3 00          284 		lda	#0h
0197 FD D9          285 		sta	.IdFlag			
0199 24             286 		ret
+                   287 	
+                   288 ;------------------------------------------------
019A                289 .Atan::		
019A F1 00          290 		lda	ErrorFlag
019C A7 01          291 		cmpe	#01h
019E 06 07 06       292 		brz	.EndChoiceX

⌨️ 快捷键说明

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