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

📄 main.ls

📁 STM8全部资料
💻 LS
📖 第 1 页 / 共 3 页
字号:
3820  01a2 4a            	dec	a
3821  01a3 2707          	jreq	L7232
3822  01a5               L1432:
3825  01a5 1e01          	ldw	x,(OFST+1,sp)
3826  01a7 a630          	ld	a,#48
3827  01a9 f7            	ld	(x),a
3828  01aa 2077          	jra	L1042
3829  01ac               L7232:
3830                     ; 94 				*str = (dec / 10000 + '0');
3832  01ac 1e05          	ldw	x,(OFST+5,sp)
3833  01ae 90ae2710      	ldw	y,#10000
3834  01b2 65            	divw	x,y
3835  01b3 1c0030        	addw	x,#48
3836  01b6 1601          	ldw	y,(OFST+1,sp)
3837  01b8 01            	rrwa	x,a
3838  01b9 90f7          	ld	(y),a
3839  01bb 02            	rlwa	x,a
3840                     ; 95 				dec %= 10000;
3842  01bc 1e05          	ldw	x,(OFST+5,sp)
3843  01be 90ae2710      	ldw	y,#10000
3844  01c2 65            	divw	x,y
3845  01c3 51            	exgw	x,y
3846  01c4 1f05          	ldw	(OFST+5,sp),x
3847                     ; 96 				break;
3849  01c6 205b          	jra	L1042
3850  01c8               L1332:
3851                     ; 100 				*str = (dec / 1000 + '0');
3853  01c8 1e05          	ldw	x,(OFST+5,sp)
3854  01ca 90ae03e8      	ldw	y,#1000
3855  01ce 65            	divw	x,y
3856  01cf 1c0030        	addw	x,#48
3857  01d2 1601          	ldw	y,(OFST+1,sp)
3858  01d4 01            	rrwa	x,a
3859  01d5 90f7          	ld	(y),a
3860  01d7 02            	rlwa	x,a
3861                     ; 101 				dec %= 1000;
3863  01d8 1e05          	ldw	x,(OFST+5,sp)
3864  01da 90ae03e8      	ldw	y,#1000
3865  01de 65            	divw	x,y
3866  01df 51            	exgw	x,y
3867  01e0 1f05          	ldw	(OFST+5,sp),x
3868                     ; 102 				break;
3870  01e2 203f          	jra	L1042
3871  01e4               L3332:
3872                     ; 106 				*str = (dec/100+'0');
3874  01e4 1e05          	ldw	x,(OFST+5,sp)
3875  01e6 90ae0064      	ldw	y,#100
3876  01ea 65            	divw	x,y
3877  01eb 1c0030        	addw	x,#48
3878  01ee 1601          	ldw	y,(OFST+1,sp)
3879  01f0 01            	rrwa	x,a
3880  01f1 90f7          	ld	(y),a
3881  01f3 02            	rlwa	x,a
3882                     ; 107 				dec %= 100;
3884  01f4 1e05          	ldw	x,(OFST+5,sp)
3885  01f6 90ae0064      	ldw	y,#100
3886  01fa 65            	divw	x,y
3887  01fb 51            	exgw	x,y
3888  01fc 1f05          	ldw	(OFST+5,sp),x
3889                     ; 108 				break;
3891  01fe 2023          	jra	L1042
3892  0200               L5332:
3893                     ; 112 				*str = (dec/10+'0');
3895  0200 1e05          	ldw	x,(OFST+5,sp)
3896  0202 90ae000a      	ldw	y,#10
3897  0206 65            	divw	x,y
3898  0207 1c0030        	addw	x,#48
3899  020a 1601          	ldw	y,(OFST+1,sp)
3900  020c 01            	rrwa	x,a
3901  020d 90f7          	ld	(y),a
3902  020f 02            	rlwa	x,a
3903                     ; 113 				dec %= 10;
3905  0210 1e05          	ldw	x,(OFST+5,sp)
3906  0212 90ae000a      	ldw	y,#10
3907  0216 65            	divw	x,y
3908  0217 51            	exgw	x,y
3909  0218 1f05          	ldw	(OFST+5,sp),x
3910                     ; 114 				break;
3912  021a 2007          	jra	L1042
3913  021c               L7332:
3914                     ; 118 				*str = (dec+'0');
3916  021c 7b06          	ld	a,(OFST+6,sp)
3917  021e ab30          	add	a,#48
3918  0220 1e01          	ldw	x,(OFST+1,sp)
3919  0222 f7            	ld	(x),a
3920                     ; 119 				break;
3922  0223               L1042:
3923                     ; 123 		width--;
3925  0223 0a07          	dec	(OFST+7,sp)
3926                     ; 124 		str++;
3928  0225 1e01          	ldw	x,(OFST+1,sp)
3929  0227 1c0001        	addw	x,#1
3930  022a 1f01          	ldw	(OFST+1,sp),x
3931  022c               L3732:
3932                     ; 88 	while(width)
3934  022c 0d07          	tnz	(OFST+7,sp)
3935  022e 2703          	jreq	L24
3936  0230 cc0191        	jp	L1732
3937  0233               L24:
3938                     ; 126 }
3941  0233 85            	popw	x
3942  0234 81            	ret
4004                     ; 128 void hexToAscii(u8* str,u16 hex,u8 width)
4004                     ; 129 {
4005                     	switch	.text
4006  0235               _hexToAscii:
4008  0235 89            	pushw	x
4009  0236 89            	pushw	x
4010       00000002      OFST:	set	2
4013  0237 acf102f1      	jpf	L1542
4014  023b               L7442:
4015                     ; 133 		switch(width)
4017  023b 7b09          	ld	a,(OFST+7,sp)
4019                     ; 163 			default: *str = '0';
4020  023d 4a            	dec	a
4021  023e 2603          	jrne	L05
4022  0240 cc02c5        	jp	L1142
4023  0243               L05:
4024  0243 4a            	dec	a
4025  0244 2758          	jreq	L7042
4026  0246 4a            	dec	a
4027  0247 2730          	jreq	L5042
4028  0249 4a            	dec	a
4029  024a 2709          	jreq	L3042
4030  024c               L3142:
4033  024c 1e03          	ldw	x,(OFST+1,sp)
4034  024e a630          	ld	a,#48
4035  0250 f7            	ld	(x),a
4036  0251 ace802e8      	jpf	L7542
4037  0255               L3042:
4038                     ; 137 				tmp = (hex >> 12);
4040  0255 1e07          	ldw	x,(OFST+5,sp)
4041  0257 01            	rrwa	x,a
4042  0258 4f            	clr	a
4043  0259 41            	exg	a,xl
4044  025a 4e            	swap	a
4045  025b a40f          	and	a,#15
4046  025d 02            	rlwa	x,a
4047  025e 1f01          	ldw	(OFST-1,sp),x
4048                     ; 138 				if(tmp > 9) *str = tmp + ('A' - 10);
4050  0260 1e01          	ldw	x,(OFST-1,sp)
4051  0262 a3000a        	cpw	x,#10
4052  0265 2509          	jrult	L1642
4055  0267 7b02          	ld	a,(OFST+0,sp)
4056  0269 ab37          	add	a,#55
4057  026b 1e03          	ldw	x,(OFST+1,sp)
4058  026d f7            	ld	(x),a
4060  026e 2078          	jra	L7542
4061  0270               L1642:
4062                     ; 139 				else *str = tmp + '0';
4064  0270 7b02          	ld	a,(OFST+0,sp)
4065  0272 ab30          	add	a,#48
4066  0274 1e03          	ldw	x,(OFST+1,sp)
4067  0276 f7            	ld	(x),a
4068  0277 206f          	jra	L7542
4069  0279               L5042:
4070                     ; 144 				tmp = (hex >> 8) & 0x000F;
4072  0279 1e07          	ldw	x,(OFST+5,sp)
4073  027b 4f            	clr	a
4074  027c 01            	rrwa	x,a
4075  027d 01            	rrwa	x,a
4076  027e a40f          	and	a,#15
4077  0280 5f            	clrw	x
4078  0281 02            	rlwa	x,a
4079  0282 1f01          	ldw	(OFST-1,sp),x
4080  0284 01            	rrwa	x,a
4081                     ; 145 				if(tmp > 9) *str = tmp + ('A' - 10);
4083  0285 1e01          	ldw	x,(OFST-1,sp)
4084  0287 a3000a        	cpw	x,#10
4085  028a 2509          	jrult	L5642
4088  028c 7b02          	ld	a,(OFST+0,sp)
4089  028e ab37          	add	a,#55
4090  0290 1e03          	ldw	x,(OFST+1,sp)
4091  0292 f7            	ld	(x),a
4093  0293 2053          	jra	L7542
4094  0295               L5642:
4095                     ; 146 				else *str = tmp + '0';
4097  0295 7b02          	ld	a,(OFST+0,sp)
4098  0297 ab30          	add	a,#48
4099  0299 1e03          	ldw	x,(OFST+1,sp)
4100  029b f7            	ld	(x),a
4101  029c 204a          	jra	L7542
4102  029e               L7042:
4103                     ; 151 				tmp = (hex >> 4) & 0x000F;
4105  029e 1e07          	ldw	x,(OFST+5,sp)
4106  02a0 54            	srlw	x
4107  02a1 54            	srlw	x
4108  02a2 54            	srlw	x
4109  02a3 54            	srlw	x
4110  02a4 01            	rrwa	x,a
4111  02a5 a40f          	and	a,#15
4112  02a7 5f            	clrw	x
4113  02a8 5f            	clrw	x
4114  02a9 97            	ld	xl,a
4115  02aa 1f01          	ldw	(OFST-1,sp),x
4116                     ; 152 				if(tmp > 9) *str = tmp + ('A' - 10);
4118  02ac 1e01          	ldw	x,(OFST-1,sp)
4119  02ae a3000a        	cpw	x,#10
4120  02b1 2509          	jrult	L1742
4123  02b3 7b02          	ld	a,(OFST+0,sp)
4124  02b5 ab37          	add	a,#55
4125  02b7 1e03          	ldw	x,(OFST+1,sp)
4126  02b9 f7            	ld	(x),a
4128  02ba 202c          	jra	L7542
4129  02bc               L1742:
4130                     ; 153 				else *str = tmp + '0';
4132  02bc 7b02          	ld	a,(OFST+0,sp)
4133  02be ab30          	add	a,#48
4134  02c0 1e03          	ldw	x,(OFST+1,sp)
4135  02c2 f7            	ld	(x),a
4136  02c3 2023          	jra	L7542
4137  02c5               L1142:
4138                     ; 158 				tmp = hex & 0x000F;
4140  02c5 7b07          	ld	a,(OFST+5,sp)
4141  02c7 97            	ld	xl,a
4142  02c8 7b08          	ld	a,(OFST+6,sp)
4143  02ca a40f          	and	a,#15
4144  02cc 5f            	clrw	x
4145  02cd 02            	rlwa	x,a
4146  02ce 1f01          	ldw	(OFST-1,sp),x
4147  02d0 01            	rrwa	x,a
4148                     ; 159 				if(tmp > 9) *str = tmp + ('A' - 10);
4150  02d1 1e01          	ldw	x,(OFST-1,sp)
4151  02d3 a3000a        	cpw	x,#10
4152  02d6 2509          	jrult	L5742
4155  02d8 7b02          	ld	a,(OFST+0,sp)
4156  02da ab37          	add	a,#55
4157  02dc 1e03          	ldw	x,(OFST+1,sp)
4158  02de f7            	ld	(x),a
4160  02df 2007          	jra	L7542
4161  02e1               L5742:
4162                     ; 160 				else *str = tmp + '0';
4164  02e1 7b02          	ld	a,(OFST+0,sp)
4165  02e3 ab30          	add	a,#48
4166  02e5 1e03          	ldw	x,(OFST+1,sp)
4167  02e7 f7            	ld	(x),a
4168  02e8               L7542:
4169                     ; 165 		width--;
4171  02e8 0a09          	dec	(OFST+7,sp)
4172                     ; 166 		str++;
4174  02ea 1e03          	ldw	x,(OFST+1,sp)
4175  02ec 1c0001        	addw	x,#1
4176  02ef 1f03          	ldw	(OFST+1,sp),x
4177  02f1               L1542:
4178                     ; 131 	while(width)
4180  02f1 0d09          	tnz	(OFST+7,sp)
4181  02f3 2703          	jreq	L25
4182  02f5 cc023b        	jp	L7442
4183  02f8               L25:
4184                     ; 168 }
4187  02f8 5b04          	addw	sp,#4
4188  02fa 81            	ret
4281                     ; 170 void showLine(const u8 x,const u8 y,u8* lcd_stack,char * str,...)
4281                     ; 171 {
4282                     	switch	.text
4283  02fb               _showLine:
4285  02fb 89            	pushw	x
4286  02fc 5204          	subw	sp,#4
4287       00000004      OFST:	set	4
4290                     ; 172 	u8 coordinate = 16 * y + x;
4292  02fe 9f            	ld	a,xl
4293  02ff 97            	ld	xl,a
4294  0300 a610          	ld	a,#16
4295  0302 42            	mul	x,a
4296  0303 9f            	ld	a,xl
4297  0304 1b05          	add	a,(OFST+1,sp)
4298  0306 6b04          	ld	(OFST+0,sp),a
4299                     ; 175 	va_start(marker,str); // Initialize variable arguments.  
4301  0308 96            	ldw	x,sp
4302  0309 1c000d        	addw	x,#OFST+9
4303  030c 1f02          	ldw	(OFST-2,sp),x
4304                     ; 176 	for(i=0;i<64;i++)
4306  030e 0f01          	clr	(OFST-3,sp)
4307  0310               L7452:
4310  0310 0c01          	inc	(OFST-3,sp)
4313  0312 7b01          	ld	a,(OFST-3,sp)
4314  0314 a140          	cp	a,#64
4315  0316 25f8          	jrult	L7452
4317  0318 ac260426      	jpf	L7552
4318  031c               L5552:
4319                     ; 182 		if(coordinate > 64) break;	//防止堆栈溢出
4321  031c 7b04          	ld	a,(OFST+0,sp)
4322  031e a141          	cp	a,#65
4323  0320 2503          	jrult	L3652
4325  0322               L1652:
4326                     ; 217 	va_end( marker ); // Reset variable arguments. 
4328                     ; 218 } 
4331  0322 5b06          	addw	sp,#6
4332  0324 81            	ret
4333  0325               L3652:
4334                     ; 184 		if(*str == '\\')
4336  0325 1e0b          	ldw	x,(OFST+7,sp)
4337  0327 f6            	ld	a,(x)
4338  0328 a15c          	cp	a,#92
4339  032a 261b          	jrne	L5652
4340                     ; 186 			str++;
4342  032c 1e0b          	ldw	x,(OFST+7,sp)
4343  032e 1c0001        	addw	x,#1
4344  0331 1f0b          	ldw	(OFST+7,sp),x
4345                     ; 187 			lcd_stack[coordinate] = *str;
4347  0333 7b09          	ld	a,(OFST+5,sp)
4348  0335 97            	ld	xl,a
4349  0336 7b0a          	ld	a,(OFST+6,sp)
4350  0338 1b04          	add	a,(OFST+0,sp)
4351  033a 2401          	jrnc	L65
4352  033c 5c            	incw	x
4353  033d               L65:
4354  033d 02            	rlwa	x,a
4355  033e 160b          	ldw	y,(OFST+7,sp)
4356  0340 90f6          	ld	a,(y)
4357  0342 f7            	ld	(x),a
4359  0343 ac1d041d      	jpf	L7652
4360  0347               L5652:
4361                     ; 189 		else if(*str == '%')
4363  0347 1e0b          	ldw	x,(OFST+7,sp)
4364  0349 f6            	ld	a,(x)
4365  034a a125          	cp	a,#37
4366  034c 2703          	jreq	L07
4367  034e cc040d        	jp	L1752
4368  0351               L07:
4369                     ; 191 			str++;
4371  0351 1e0b          	ldw	x,(OFST+7,sp)
4372  0353 1c0001        	addw	x,#1
4373  0356 1f0b          	ldw	(OFST+7,sp),x
4374                     ; 192 			if (*str == 'd' || *str == 'D')
4376  0358 1e0b          	ldw	x,(OFST+7,sp)
4377  035a f6            	ld	a,(x)
4378  035b a164          	cp	a,#100
4379  035d 2707          	jreq	L5752
4381  035f 1e0b          	ldw	x,(OFST+7,sp)
4382  0361 f6            	ld	a,(x)
4383  0362 a144          	cp	a,#68
4384  0364 2637          	jrne	L3752
4385  0366               L5752:
4386                     ; 194 				str++;
4388  0366 1e0b          	ldw	x,(OFST+7,sp)
4389  0368 1c0001        	addw	x,#1
4390  036b 1f0b          	ldw	(OFST+7,sp),x
4391                     ; 195 				decToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str-'0'));
4393  036d 1e0b          	ldw	x,(OFST+7,sp)
4394  036f f6            	ld	a,(x)
4395  0370 a030          	sub	a,#48
4396  0372 88            	push	a
4397  0373 1e03          	ldw	x,(OFST-1,sp)
4398  0375 1c0002        	addw	x,#2
4399  0378 1f03          	ldw	(OFST-1,sp),x
4400  037a 1e03          	ldw	x,(OFST-1,sp)
4401  037c 5a            	decw	x
4402  037d 5a            	decw	x
4403  037e fe            	ldw	x,(x)
4404  037f 89            	pushw	x
4405  0380 7b0c          	ld	a,(OFST+8,sp)
4406  0382 97            	ld	xl,a
4407  0383 7b0d          	ld	a,(OFST+9,sp)
4408  0385 1b07          	add	a,(OFST+3,sp)
4409  0387 2401          	jrnc	L06
4410  0389 5c            	incw	x
4411  038a               L06:
4412  038a 02            	rlwa	x,a
4413  038b cd018c        	call	_decToAscii
4415  038e 5b03          	addw	sp,#3
4416                     ; 196 				coordinate += (*str-'0'-1);
4418  0390 1e0b          	ldw	x,(OFST+7,sp)
4419  0392 f6            	ld	a,(x)
4420  0393 a031          	sub	a,#49
4421  0395 1b04          	add	a,(OFST+0,sp)
4422  0397 6b04          	ld	(OFST+0,sp),a
4424  0399 ac1d041d      	jpf	L7652

⌨️ 快捷键说明

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