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

📄 main.ls

📁 STM8全部资料
💻 LS
📖 第 1 页 / 共 3 页
字号:
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
4425  039d               L3752:
4426                     ; 198 			else if(*str == 'c' || *str == 'C')
4428  039d 1e0b          	ldw	x,(OFST+7,sp)
4429  039f f6            	ld	a,(x)
4430  03a0 a163          	cp	a,#99
4431  03a2 2707          	jreq	L3062
4433  03a4 1e0b          	ldw	x,(OFST+7,sp)
4434  03a6 f6            	ld	a,(x)
4435  03a7 a143          	cp	a,#67
4436  03a9 261f          	jrne	L1062
4437  03ab               L3062:
4438                     ; 200 				lcd_stack[coordinate] = va_arg(marker,u16);
4440  03ab 7b09          	ld	a,(OFST+5,sp)
4441  03ad 97            	ld	xl,a
4442  03ae 7b0a          	ld	a,(OFST+6,sp)
4443  03b0 1b04          	add	a,(OFST+0,sp)
4444  03b2 2401          	jrnc	L26
4445  03b4 5c            	incw	x
4446  03b5               L26:
4447  03b5 02            	rlwa	x,a
4448  03b6 1602          	ldw	y,(OFST-2,sp)
4449  03b8 72a90002      	addw	y,#2
4450  03bc 1702          	ldw	(OFST-2,sp),y
4451  03be 1602          	ldw	y,(OFST-2,sp)
4452  03c0 905a          	decw	y
4453  03c2 905a          	decw	y
4454  03c4 90e601        	ld	a,(1,y)
4455  03c7 f7            	ld	(x),a
4457  03c8 2053          	jra	L7652
4458  03ca               L1062:
4459                     ; 202 			else if(*str == 'x' || *str == 'X')
4461  03ca 1e0b          	ldw	x,(OFST+7,sp)
4462  03cc f6            	ld	a,(x)
4463  03cd a178          	cp	a,#120
4464  03cf 2707          	jreq	L1162
4466  03d1 1e0b          	ldw	x,(OFST+7,sp)
4467  03d3 f6            	ld	a,(x)
4468  03d4 a158          	cp	a,#88
4469  03d6 2645          	jrne	L7652
4470  03d8               L1162:
4471                     ; 204 				str++;
4473  03d8 1e0b          	ldw	x,(OFST+7,sp)
4474  03da 1c0001        	addw	x,#1
4475  03dd 1f0b          	ldw	(OFST+7,sp),x
4476                     ; 205 				hexToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str - '0'));
4478  03df 1e0b          	ldw	x,(OFST+7,sp)
4479  03e1 f6            	ld	a,(x)
4480  03e2 a030          	sub	a,#48
4481  03e4 88            	push	a
4482  03e5 1e03          	ldw	x,(OFST-1,sp)
4483  03e7 1c0002        	addw	x,#2
4484  03ea 1f03          	ldw	(OFST-1,sp),x
4485  03ec 1e03          	ldw	x,(OFST-1,sp)
4486  03ee 5a            	decw	x
4487  03ef 5a            	decw	x
4488  03f0 fe            	ldw	x,(x)
4489  03f1 89            	pushw	x
4490  03f2 7b0c          	ld	a,(OFST+8,sp)
4491  03f4 97            	ld	xl,a
4492  03f5 7b0d          	ld	a,(OFST+9,sp)
4493  03f7 1b07          	add	a,(OFST+3,sp)
4494  03f9 2401          	jrnc	L46
4495  03fb 5c            	incw	x
4496  03fc               L46:
4497  03fc 02            	rlwa	x,a
4498  03fd cd0235        	call	_hexToAscii
4500  0400 5b03          	addw	sp,#3
4501                     ; 206 				coordinate += (*str - '0' - 1);
4503  0402 1e0b          	ldw	x,(OFST+7,sp)
4504  0404 f6            	ld	a,(x)
4505  0405 a031          	sub	a,#49
4506  0407 1b04          	add	a,(OFST+0,sp)
4507  0409 6b04          	ld	(OFST+0,sp),a
4508  040b 2010          	jra	L7652
4509  040d               L1752:
4510                     ; 212 			lcd_stack[coordinate] = *str;
4512  040d 7b09          	ld	a,(OFST+5,sp)
4513  040f 97            	ld	xl,a
4514  0410 7b0a          	ld	a,(OFST+6,sp)
4515  0412 1b04          	add	a,(OFST+0,sp)
4516  0414 2401          	jrnc	L66
4517  0416 5c            	incw	x
4518  0417               L66:
4519  0417 02            	rlwa	x,a
4520  0418 160b          	ldw	y,(OFST+7,sp)
4521  041a 90f6          	ld	a,(y)
4522  041c f7            	ld	(x),a
4523  041d               L7652:
4524                     ; 214 		str++;
4526  041d 1e0b          	ldw	x,(OFST+7,sp)
4527  041f 1c0001        	addw	x,#1
4528  0422 1f0b          	ldw	(OFST+7,sp),x
4529                     ; 215 		coordinate++;
4531  0424 0c04          	inc	(OFST+0,sp)
4532  0426               L7552:
4533                     ; 180 	while(*str != '\0')
4535  0426 1e0b          	ldw	x,(OFST+7,sp)
4536  0428 7d            	tnz	(x)
4537  0429 2703          	jreq	L27
4538  042b cc031c        	jp	L5552
4539  042e               L27:
4540  042e ac220322      	jpf	L1652
4613                     ; 19 void main(void)
4613                     ; 20 {
4614                     	switch	.text
4615  0432               _main:
4619                     ; 21 	st7920LcdInit();
4621  0432 cd0082        	call	_st7920LcdInit
4623                     ; 22 	showLine(2,1,lcd_buffer,"深圳微雪电子");
4625  0435 ae000e        	ldw	x,#L7462
4626  0438 89            	pushw	x
4627  0439 ae0000        	ldw	x,#_lcd_buffer
4628  043c 89            	pushw	x
4629  043d ae0001        	ldw	x,#1
4630  0440 a602          	ld	a,#2
4631  0442 95            	ld	xh,a
4632  0443 cd02fb        	call	_showLine
4634  0446 5b04          	addw	sp,#4
4635                     ; 23 	showLine(2,2,lcd_buffer,"waveshare.net");
4637  0448 ae0000        	ldw	x,#L1562
4638  044b 89            	pushw	x
4639  044c ae0000        	ldw	x,#_lcd_buffer
4640  044f 89            	pushw	x
4641  0450 ae0002        	ldw	x,#2
4642  0453 a602          	ld	a,#2
4643  0455 95            	ld	xh,a
4644  0456 cd02fb        	call	_showLine
4646  0459 5b04          	addw	sp,#4
4647                     ; 24 	refreshLCD(lcd_buffer); //刷新LCD
4649  045b ae0000        	ldw	x,#_lcd_buffer
4650  045e cd011c        	call	_refreshLCD
4652  0461               L3562:
4653                     ; 25 	while (1);
4655  0461 20fe          	jra	L3562
4668                     	xdef	_main
4669                     	xdef	_SPI_rechar
4670                     	xdef	_SPI_sendchar
4671                     	xdef	_SPI_Init
4672                     	switch	.ubsct
4673  0000               _lcd_buffer:
4674  0000 000000000000  	ds.b	64
4675                     	xdef	_lcd_buffer
4676                     	xdef	_showLine
4677                     	xdef	_hexToAscii
4678                     	xdef	_decToAscii
4679                     	xdef	_refreshLCD
4680                     	xdef	_st7920LcdInit
4681                     	xdef	_sendDataST7920
4682                     	xdef	_sendCodeST7920
4683                     	xdef	_delay_us
4684                     	xdef	_delay_ms
4685                     .const:	section	.text
4686  0000               L1562:
4687  0000 776176657368  	dc.b	"waveshare.net",0
4688  000e               L7462:
4689  000e c9eedbdacea2  	dc.b	201,238,219,218,206,162
4690  0014 d1a9b5e7d7d3  	dc.b	209,169,181,231,215,211,0
4710                     	end

⌨️ 快捷键说明

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