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

📄 main.ls

📁 STM8全部资料
💻 LS
📖 第 1 页 / 共 4 页
字号:
4106  02c4 2023          	jra	L1242
4107  02c6               L1632:
4108                     ; 158 				tmp = hex & 0x000F;
4110  02c6 7b07          	ld	a,(OFST+5,sp)
4111  02c8 97            	ld	xl,a
4112  02c9 7b08          	ld	a,(OFST+6,sp)
4113  02cb a40f          	and	a,#15
4114  02cd 5f            	clrw	x
4115  02ce 02            	rlwa	x,a
4116  02cf 1f01          	ldw	(OFST-1,sp),x
4117  02d1 01            	rrwa	x,a
4118                     ; 159 				if(tmp > 9) *str = tmp + ('A' - 10);
4120  02d2 1e01          	ldw	x,(OFST-1,sp)
4121  02d4 a3000a        	cpw	x,#10
4122  02d7 2509          	jrult	L7342
4125  02d9 7b02          	ld	a,(OFST+0,sp)
4126  02db ab37          	add	a,#55
4127  02dd 1e03          	ldw	x,(OFST+1,sp)
4128  02df f7            	ld	(x),a
4130  02e0 2007          	jra	L1242
4131  02e2               L7342:
4132                     ; 160 				else *str = tmp + '0';
4134  02e2 7b02          	ld	a,(OFST+0,sp)
4135  02e4 ab30          	add	a,#48
4136  02e6 1e03          	ldw	x,(OFST+1,sp)
4137  02e8 f7            	ld	(x),a
4138  02e9               L1242:
4139                     ; 165 		width--;
4141  02e9 0a09          	dec	(OFST+7,sp)
4142                     ; 166 		str++;
4144  02eb 1e03          	ldw	x,(OFST+1,sp)
4145  02ed 1c0001        	addw	x,#1
4146  02f0 1f03          	ldw	(OFST+1,sp),x
4147  02f2               L3142:
4148                     ; 131 	while(width)
4150  02f2 0d09          	tnz	(OFST+7,sp)
4151  02f4 2703          	jreq	L25
4152  02f6 cc023c        	jp	L1142
4153  02f9               L25:
4154                     ; 168 }
4157  02f9 5b04          	addw	sp,#4
4158  02fb 81            	ret
4247                     ; 170 void showLine(const u8 x,const u8 y,u8* lcd_stack,char * str,...)
4247                     ; 171 {
4248                     	switch	.text
4249  02fc               _showLine:
4251  02fc 89            	pushw	x
4252  02fd 5204          	subw	sp,#4
4253       00000004      OFST:	set	4
4256                     ; 172 	u8 coordinate = 16 * y + x;
4258  02ff 9f            	ld	a,xl
4259  0300 97            	ld	xl,a
4260  0301 a610          	ld	a,#16
4261  0303 42            	mul	x,a
4262  0304 9f            	ld	a,xl
4263  0305 1b05          	add	a,(OFST+1,sp)
4264  0307 6b04          	ld	(OFST+0,sp),a
4265                     ; 175 	va_start(marker,str); // Initialize variable arguments.  
4267  0309 96            	ldw	x,sp
4268  030a 1c000d        	addw	x,#OFST+9
4269  030d 1f02          	ldw	(OFST-2,sp),x
4270                     ; 176 	for(i=0;i<64;i++)
4272  030f 0f01          	clr	(OFST-3,sp)
4273  0311               L5052:
4276  0311 0c01          	inc	(OFST-3,sp)
4279  0313 7b01          	ld	a,(OFST-3,sp)
4280  0315 a140          	cp	a,#64
4281  0317 25f8          	jrult	L5052
4283  0319 ac270427      	jpf	L5152
4284  031d               L3152:
4285                     ; 182 		if(coordinate > 64) break;	//防止堆栈溢出
4287  031d 7b04          	ld	a,(OFST+0,sp)
4288  031f a141          	cp	a,#65
4289  0321 2503          	jrult	L1252
4291  0323               L7152:
4292                     ; 217 	va_end( marker ); // Reset variable arguments. 
4294                     ; 218 } 
4297  0323 5b06          	addw	sp,#6
4298  0325 81            	ret
4299  0326               L1252:
4300                     ; 184 		if(*str == '\\')
4302  0326 1e0b          	ldw	x,(OFST+7,sp)
4303  0328 f6            	ld	a,(x)
4304  0329 a15c          	cp	a,#92
4305  032b 261b          	jrne	L3252
4306                     ; 186 			str++;
4308  032d 1e0b          	ldw	x,(OFST+7,sp)
4309  032f 1c0001        	addw	x,#1
4310  0332 1f0b          	ldw	(OFST+7,sp),x
4311                     ; 187 			lcd_stack[coordinate] = *str;
4313  0334 7b09          	ld	a,(OFST+5,sp)
4314  0336 97            	ld	xl,a
4315  0337 7b0a          	ld	a,(OFST+6,sp)
4316  0339 1b04          	add	a,(OFST+0,sp)
4317  033b 2401          	jrnc	L65
4318  033d 5c            	incw	x
4319  033e               L65:
4320  033e 02            	rlwa	x,a
4321  033f 160b          	ldw	y,(OFST+7,sp)
4322  0341 90f6          	ld	a,(y)
4323  0343 f7            	ld	(x),a
4325  0344 ac1e041e      	jpf	L5252
4326  0348               L3252:
4327                     ; 189 		else if(*str == '%')
4329  0348 1e0b          	ldw	x,(OFST+7,sp)
4330  034a f6            	ld	a,(x)
4331  034b a125          	cp	a,#37
4332  034d 2703          	jreq	L07
4333  034f cc040e        	jp	L7252
4334  0352               L07:
4335                     ; 191 			str++;
4337  0352 1e0b          	ldw	x,(OFST+7,sp)
4338  0354 1c0001        	addw	x,#1
4339  0357 1f0b          	ldw	(OFST+7,sp),x
4340                     ; 192 			if (*str == 'd' || *str == 'D')
4342  0359 1e0b          	ldw	x,(OFST+7,sp)
4343  035b f6            	ld	a,(x)
4344  035c a164          	cp	a,#100
4345  035e 2707          	jreq	L3352
4347  0360 1e0b          	ldw	x,(OFST+7,sp)
4348  0362 f6            	ld	a,(x)
4349  0363 a144          	cp	a,#68
4350  0365 2637          	jrne	L1352
4351  0367               L3352:
4352                     ; 194 				str++;
4354  0367 1e0b          	ldw	x,(OFST+7,sp)
4355  0369 1c0001        	addw	x,#1
4356  036c 1f0b          	ldw	(OFST+7,sp),x
4357                     ; 195 				decToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str-'0'));
4359  036e 1e0b          	ldw	x,(OFST+7,sp)
4360  0370 f6            	ld	a,(x)
4361  0371 a030          	sub	a,#48
4362  0373 88            	push	a
4363  0374 1e03          	ldw	x,(OFST-1,sp)
4364  0376 1c0002        	addw	x,#2
4365  0379 1f03          	ldw	(OFST-1,sp),x
4366  037b 1e03          	ldw	x,(OFST-1,sp)
4367  037d 5a            	decw	x
4368  037e 5a            	decw	x
4369  037f fe            	ldw	x,(x)
4370  0380 89            	pushw	x
4371  0381 7b0c          	ld	a,(OFST+8,sp)
4372  0383 97            	ld	xl,a
4373  0384 7b0d          	ld	a,(OFST+9,sp)
4374  0386 1b07          	add	a,(OFST+3,sp)
4375  0388 2401          	jrnc	L06
4376  038a 5c            	incw	x
4377  038b               L06:
4378  038b 02            	rlwa	x,a
4379  038c cd018d        	call	_decToAscii
4381  038f 5b03          	addw	sp,#3
4382                     ; 196 				coordinate += (*str-'0'-1);
4384  0391 1e0b          	ldw	x,(OFST+7,sp)
4385  0393 f6            	ld	a,(x)
4386  0394 a031          	sub	a,#49
4387  0396 1b04          	add	a,(OFST+0,sp)
4388  0398 6b04          	ld	(OFST+0,sp),a
4390  039a ac1e041e      	jpf	L5252
4391  039e               L1352:
4392                     ; 198 			else if(*str == 'c' || *str == 'C')
4394  039e 1e0b          	ldw	x,(OFST+7,sp)
4395  03a0 f6            	ld	a,(x)
4396  03a1 a163          	cp	a,#99
4397  03a3 2707          	jreq	L1452
4399  03a5 1e0b          	ldw	x,(OFST+7,sp)
4400  03a7 f6            	ld	a,(x)
4401  03a8 a143          	cp	a,#67
4402  03aa 261f          	jrne	L7352
4403  03ac               L1452:
4404                     ; 200 				lcd_stack[coordinate] = va_arg(marker,u16);
4406  03ac 7b09          	ld	a,(OFST+5,sp)
4407  03ae 97            	ld	xl,a
4408  03af 7b0a          	ld	a,(OFST+6,sp)
4409  03b1 1b04          	add	a,(OFST+0,sp)
4410  03b3 2401          	jrnc	L26
4411  03b5 5c            	incw	x
4412  03b6               L26:
4413  03b6 02            	rlwa	x,a
4414  03b7 1602          	ldw	y,(OFST-2,sp)
4415  03b9 72a90002      	addw	y,#2
4416  03bd 1702          	ldw	(OFST-2,sp),y
4417  03bf 1602          	ldw	y,(OFST-2,sp)
4418  03c1 905a          	decw	y
4419  03c3 905a          	decw	y
4420  03c5 90e601        	ld	a,(1,y)
4421  03c8 f7            	ld	(x),a
4423  03c9 2053          	jra	L5252
4424  03cb               L7352:
4425                     ; 202 			else if(*str == 'x' || *str == 'X')
4427  03cb 1e0b          	ldw	x,(OFST+7,sp)
4428  03cd f6            	ld	a,(x)
4429  03ce a178          	cp	a,#120
4430  03d0 2707          	jreq	L7452
4432  03d2 1e0b          	ldw	x,(OFST+7,sp)
4433  03d4 f6            	ld	a,(x)
4434  03d5 a158          	cp	a,#88
4435  03d7 2645          	jrne	L5252
4436  03d9               L7452:
4437                     ; 204 				str++;
4439  03d9 1e0b          	ldw	x,(OFST+7,sp)
4440  03db 1c0001        	addw	x,#1
4441  03de 1f0b          	ldw	(OFST+7,sp),x
4442                     ; 205 				hexToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str - '0'));
4444  03e0 1e0b          	ldw	x,(OFST+7,sp)
4445  03e2 f6            	ld	a,(x)
4446  03e3 a030          	sub	a,#48
4447  03e5 88            	push	a
4448  03e6 1e03          	ldw	x,(OFST-1,sp)
4449  03e8 1c0002        	addw	x,#2
4450  03eb 1f03          	ldw	(OFST-1,sp),x
4451  03ed 1e03          	ldw	x,(OFST-1,sp)
4452  03ef 5a            	decw	x
4453  03f0 5a            	decw	x
4454  03f1 fe            	ldw	x,(x)
4455  03f2 89            	pushw	x
4456  03f3 7b0c          	ld	a,(OFST+8,sp)
4457  03f5 97            	ld	xl,a
4458  03f6 7b0d          	ld	a,(OFST+9,sp)
4459  03f8 1b07          	add	a,(OFST+3,sp)
4460  03fa 2401          	jrnc	L46
4461  03fc 5c            	incw	x
4462  03fd               L46:
4463  03fd 02            	rlwa	x,a
4464  03fe cd0236        	call	_hexToAscii
4466  0401 5b03          	addw	sp,#3
4467                     ; 206 				coordinate += (*str - '0' - 1);
4469  0403 1e0b          	ldw	x,(OFST+7,sp)
4470  0405 f6            	ld	a,(x)
4471  0406 a031          	sub	a,#49
4472  0408 1b04          	add	a,(OFST+0,sp)
4473  040a 6b04          	ld	(OFST+0,sp),a
4474  040c 2010          	jra	L5252
4475  040e               L7252:
4476                     ; 212 			lcd_stack[coordinate] = *str;
4478  040e 7b09          	ld	a,(OFST+5,sp)
4479  0410 97            	ld	xl,a
4480  0411 7b0a          	ld	a,(OFST+6,sp)
4481  0413 1b04          	add	a,(OFST+0,sp)
4482  0415 2401          	jrnc	L66
4483  0417 5c            	incw	x
4484  0418               L66:
4485  0418 02            	rlwa	x,a
4486  0419 160b          	ldw	y,(OFST+7,sp)
4487  041b 90f6          	ld	a,(y)
4488  041d f7            	ld	(x),a
4489  041e               L5252:
4490                     ; 214 		str++;
4492  041e 1e0b          	ldw	x,(OFST+7,sp)
4493  0420 1c0001        	addw	x,#1
4494  0423 1f0b          	ldw	(OFST+7,sp),x
4495                     ; 215 		coordinate++;
4497  0425 0c04          	inc	(OFST+0,sp)
4498  0427               L5152:
4499                     ; 180 	while(*str != '\0')
4501  0427 1e0b          	ldw	x,(OFST+7,sp)
4502  0429 7d            	tnz	(x)
4503  042a 2703          	jreq	L27
4504  042c cc031d        	jp	L3152
4505  042f               L27:
4506  042f ac230323      	jpf	L7152
4596                     ; 71 void main(void)
4596                     ; 72 {
4597                     	switch	.text
4598  0433               _main:
4600  0433 88            	push	a
4601       00000001      OFST:	set	1
4604                     ; 75   unsigned char value = 100;
4606                     ; 77   in_range = (value >= 10) && (value <= 20);
4608  0434 72110001      	bres	_in_range
4609                     ; 78   p_valid = ptr;   /* p_valid is true if ptr not 0 */
4611  0438 ce0000        	ldw	x,_ptr
4612  043b 2602          	jrne	L201
4613  043d 2006          	jp	L67
4614  043f               L201:
4615  043f 72100000      	bset	_p_valid
4616  0443 2004          	jra	L001
4617  0445               L67:
4618  0445 72110000      	bres	_p_valid
4619  0449               L001:
4620                     ; 81 	CLK->CKDIVR = 0x00; // Main freq divided by 1 = Full Freq
4622  0449 725f50c6      	clr	20678
4623                     ; 83 	TSL_Init();
4625  044d cd0000        	call	_TSL_Init
4627                     ; 84 	ExtraCode_Init();
4629  0450 ad5c          	call	_ExtraCode_Init
4631                     ; 85 	delay_ms(900);
4633  0452 ae0384        	ldw	x,#900
4634  0455 cd0000        	call	_delay_ms
4636                     ; 86 	st7920LcdInit();

⌨️ 快捷键说明

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