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

📄 main.ls

📁 STM8全部资料
💻 LS
📖 第 1 页 / 共 3 页
字号:
4641  037c 97            	ld	xl,a
4642  037d 1f01          	ldw	(OFST-1,sp),x
4643                     ; 152 				if(tmp > 9) *str = tmp + ('A' - 10);
4645  037f 1e01          	ldw	x,(OFST-1,sp)
4646  0381 a3000a        	cpw	x,#10
4647  0384 2509          	jrult	L7762
4650  0386 7b02          	ld	a,(OFST+0,sp)
4651  0388 ab37          	add	a,#55
4652  038a 1e03          	ldw	x,(OFST+1,sp)
4653  038c f7            	ld	(x),a
4655  038d 202c          	jra	L5662
4656  038f               L7762:
4657                     ; 153 				else *str = tmp + '0';
4659  038f 7b02          	ld	a,(OFST+0,sp)
4660  0391 ab30          	add	a,#48
4661  0393 1e03          	ldw	x,(OFST+1,sp)
4662  0395 f7            	ld	(x),a
4663  0396 2023          	jra	L5662
4664  0398               L7162:
4665                     ; 158 				tmp = hex & 0x000F;
4667  0398 7b07          	ld	a,(OFST+5,sp)
4668  039a 97            	ld	xl,a
4669  039b 7b08          	ld	a,(OFST+6,sp)
4670  039d a40f          	and	a,#15
4671  039f 5f            	clrw	x
4672  03a0 02            	rlwa	x,a
4673  03a1 1f01          	ldw	(OFST-1,sp),x
4674  03a3 01            	rrwa	x,a
4675                     ; 159 				if(tmp > 9) *str = tmp + ('A' - 10);
4677  03a4 1e01          	ldw	x,(OFST-1,sp)
4678  03a6 a3000a        	cpw	x,#10
4679  03a9 2509          	jrult	L3072
4682  03ab 7b02          	ld	a,(OFST+0,sp)
4683  03ad ab37          	add	a,#55
4684  03af 1e03          	ldw	x,(OFST+1,sp)
4685  03b1 f7            	ld	(x),a
4687  03b2 2007          	jra	L5662
4688  03b4               L3072:
4689                     ; 160 				else *str = tmp + '0';
4691  03b4 7b02          	ld	a,(OFST+0,sp)
4692  03b6 ab30          	add	a,#48
4693  03b8 1e03          	ldw	x,(OFST+1,sp)
4694  03ba f7            	ld	(x),a
4695  03bb               L5662:
4696                     ; 165 		width--;
4698  03bb 0a09          	dec	(OFST+7,sp)
4699                     ; 166 		str++;
4701  03bd 1e03          	ldw	x,(OFST+1,sp)
4702  03bf 1c0001        	addw	x,#1
4703  03c2 1f03          	ldw	(OFST+1,sp),x
4704  03c4               L7562:
4705                     ; 131 	while(width)
4707  03c4 0d09          	tnz	(OFST+7,sp)
4708  03c6 2703          	jreq	L66
4709  03c8 cc030e        	jp	L5562
4710  03cb               L66:
4711                     ; 168 }
4714  03cb 5b04          	addw	sp,#4
4715  03cd 81            	ret
4808                     ; 170 void showLine(const u8 x,const u8 y,u8* lcd_stack,char * str,...)
4808                     ; 171 {
4809                     	switch	.text
4810  03ce               _showLine:
4812  03ce 89            	pushw	x
4813  03cf 5204          	subw	sp,#4
4814       00000004      OFST:	set	4
4817                     ; 172 	u8 coordinate = 16 * y + x;
4819  03d1 9f            	ld	a,xl
4820  03d2 97            	ld	xl,a
4821  03d3 a610          	ld	a,#16
4822  03d5 42            	mul	x,a
4823  03d6 9f            	ld	a,xl
4824  03d7 1b05          	add	a,(OFST+1,sp)
4825  03d9 6b04          	ld	(OFST+0,sp),a
4826                     ; 175 	va_start(marker,str); // Initialize variable arguments.  
4828  03db 96            	ldw	x,sp
4829  03dc 1c000d        	addw	x,#OFST+9
4830  03df 1f02          	ldw	(OFST-2,sp),x
4831                     ; 176 	for(i=0;i<64;i++)
4833  03e1 0f01          	clr	(OFST-3,sp)
4834  03e3               L5572:
4837  03e3 0c01          	inc	(OFST-3,sp)
4840  03e5 7b01          	ld	a,(OFST-3,sp)
4841  03e7 a140          	cp	a,#64
4842  03e9 25f8          	jrult	L5572
4844  03eb acf904f9      	jpf	L5672
4845  03ef               L3672:
4846                     ; 182 		if(coordinate > 64) break;	//防止堆栈溢出
4848  03ef 7b04          	ld	a,(OFST+0,sp)
4849  03f1 a141          	cp	a,#65
4850  03f3 2503          	jrult	L1772
4852  03f5               L7672:
4853                     ; 217 	va_end( marker ); // Reset variable arguments. 
4855                     ; 218 } 
4858  03f5 5b06          	addw	sp,#6
4859  03f7 81            	ret
4860  03f8               L1772:
4861                     ; 184 		if(*str == '\\')
4863  03f8 1e0b          	ldw	x,(OFST+7,sp)
4864  03fa f6            	ld	a,(x)
4865  03fb a15c          	cp	a,#92
4866  03fd 261b          	jrne	L3772
4867                     ; 186 			str++;
4869  03ff 1e0b          	ldw	x,(OFST+7,sp)
4870  0401 1c0001        	addw	x,#1
4871  0404 1f0b          	ldw	(OFST+7,sp),x
4872                     ; 187 			lcd_stack[coordinate] = *str;
4874  0406 7b09          	ld	a,(OFST+5,sp)
4875  0408 97            	ld	xl,a
4876  0409 7b0a          	ld	a,(OFST+6,sp)
4877  040b 1b04          	add	a,(OFST+0,sp)
4878  040d 2401          	jrnc	L27
4879  040f 5c            	incw	x
4880  0410               L27:
4881  0410 02            	rlwa	x,a
4882  0411 160b          	ldw	y,(OFST+7,sp)
4883  0413 90f6          	ld	a,(y)
4884  0415 f7            	ld	(x),a
4886  0416 acf004f0      	jpf	L5772
4887  041a               L3772:
4888                     ; 189 		else if(*str == '%')
4890  041a 1e0b          	ldw	x,(OFST+7,sp)
4891  041c f6            	ld	a,(x)
4892  041d a125          	cp	a,#37
4893  041f 2703          	jreq	L401
4894  0421 cc04e0        	jp	L7772
4895  0424               L401:
4896                     ; 191 			str++;
4898  0424 1e0b          	ldw	x,(OFST+7,sp)
4899  0426 1c0001        	addw	x,#1
4900  0429 1f0b          	ldw	(OFST+7,sp),x
4901                     ; 192 			if (*str == 'd' || *str == 'D')
4903  042b 1e0b          	ldw	x,(OFST+7,sp)
4904  042d f6            	ld	a,(x)
4905  042e a164          	cp	a,#100
4906  0430 2707          	jreq	L3003
4908  0432 1e0b          	ldw	x,(OFST+7,sp)
4909  0434 f6            	ld	a,(x)
4910  0435 a144          	cp	a,#68
4911  0437 2637          	jrne	L1003
4912  0439               L3003:
4913                     ; 194 				str++;
4915  0439 1e0b          	ldw	x,(OFST+7,sp)
4916  043b 1c0001        	addw	x,#1
4917  043e 1f0b          	ldw	(OFST+7,sp),x
4918                     ; 195 				decToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str-'0'));
4920  0440 1e0b          	ldw	x,(OFST+7,sp)
4921  0442 f6            	ld	a,(x)
4922  0443 a030          	sub	a,#48
4923  0445 88            	push	a
4924  0446 1e03          	ldw	x,(OFST-1,sp)
4925  0448 1c0002        	addw	x,#2
4926  044b 1f03          	ldw	(OFST-1,sp),x
4927  044d 1e03          	ldw	x,(OFST-1,sp)
4928  044f 5a            	decw	x
4929  0450 5a            	decw	x
4930  0451 fe            	ldw	x,(x)
4931  0452 89            	pushw	x
4932  0453 7b0c          	ld	a,(OFST+8,sp)
4933  0455 97            	ld	xl,a
4934  0456 7b0d          	ld	a,(OFST+9,sp)
4935  0458 1b07          	add	a,(OFST+3,sp)
4936  045a 2401          	jrnc	L47
4937  045c 5c            	incw	x
4938  045d               L47:
4939  045d 02            	rlwa	x,a
4940  045e cd025f        	call	_decToAscii
4942  0461 5b03          	addw	sp,#3
4943                     ; 196 				coordinate += (*str-'0'-1);
4945  0463 1e0b          	ldw	x,(OFST+7,sp)
4946  0465 f6            	ld	a,(x)
4947  0466 a031          	sub	a,#49
4948  0468 1b04          	add	a,(OFST+0,sp)
4949  046a 6b04          	ld	(OFST+0,sp),a
4951  046c acf004f0      	jpf	L5772
4952  0470               L1003:
4953                     ; 198 			else if(*str == 'c' || *str == 'C')
4955  0470 1e0b          	ldw	x,(OFST+7,sp)
4956  0472 f6            	ld	a,(x)
4957  0473 a163          	cp	a,#99
4958  0475 2707          	jreq	L1103
4960  0477 1e0b          	ldw	x,(OFST+7,sp)
4961  0479 f6            	ld	a,(x)
4962  047a a143          	cp	a,#67
4963  047c 261f          	jrne	L7003
4964  047e               L1103:
4965                     ; 200 				lcd_stack[coordinate] = va_arg(marker,u16);
4967  047e 7b09          	ld	a,(OFST+5,sp)
4968  0480 97            	ld	xl,a
4969  0481 7b0a          	ld	a,(OFST+6,sp)
4970  0483 1b04          	add	a,(OFST+0,sp)
4971  0485 2401          	jrnc	L67
4972  0487 5c            	incw	x
4973  0488               L67:
4974  0488 02            	rlwa	x,a
4975  0489 1602          	ldw	y,(OFST-2,sp)
4976  048b 72a90002      	addw	y,#2
4977  048f 1702          	ldw	(OFST-2,sp),y
4978  0491 1602          	ldw	y,(OFST-2,sp)
4979  0493 905a          	decw	y
4980  0495 905a          	decw	y
4981  0497 90e601        	ld	a,(1,y)
4982  049a f7            	ld	(x),a
4984  049b 2053          	jra	L5772
4985  049d               L7003:
4986                     ; 202 			else if(*str == 'x' || *str == 'X')
4988  049d 1e0b          	ldw	x,(OFST+7,sp)
4989  049f f6            	ld	a,(x)
4990  04a0 a178          	cp	a,#120
4991  04a2 2707          	jreq	L7103
4993  04a4 1e0b          	ldw	x,(OFST+7,sp)
4994  04a6 f6            	ld	a,(x)
4995  04a7 a158          	cp	a,#88
4996  04a9 2645          	jrne	L5772
4997  04ab               L7103:
4998                     ; 204 				str++;
5000  04ab 1e0b          	ldw	x,(OFST+7,sp)
5001  04ad 1c0001        	addw	x,#1
5002  04b0 1f0b          	ldw	(OFST+7,sp),x
5003                     ; 205 				hexToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str - '0'));
5005  04b2 1e0b          	ldw	x,(OFST+7,sp)
5006  04b4 f6            	ld	a,(x)
5007  04b5 a030          	sub	a,#48
5008  04b7 88            	push	a
5009  04b8 1e03          	ldw	x,(OFST-1,sp)
5010  04ba 1c0002        	addw	x,#2
5011  04bd 1f03          	ldw	(OFST-1,sp),x
5012  04bf 1e03          	ldw	x,(OFST-1,sp)
5013  04c1 5a            	decw	x
5014  04c2 5a            	decw	x
5015  04c3 fe            	ldw	x,(x)
5016  04c4 89            	pushw	x
5017  04c5 7b0c          	ld	a,(OFST+8,sp)
5018  04c7 97            	ld	xl,a
5019  04c8 7b0d          	ld	a,(OFST+9,sp)
5020  04ca 1b07          	add	a,(OFST+3,sp)
5021  04cc 2401          	jrnc	L001
5022  04ce 5c            	incw	x
5023  04cf               L001:
5024  04cf 02            	rlwa	x,a
5025  04d0 cd0308        	call	_hexToAscii
5027  04d3 5b03          	addw	sp,#3
5028                     ; 206 				coordinate += (*str - '0' - 1);
5030  04d5 1e0b          	ldw	x,(OFST+7,sp)
5031  04d7 f6            	ld	a,(x)
5032  04d8 a031          	sub	a,#49
5033  04da 1b04          	add	a,(OFST+0,sp)
5034  04dc 6b04          	ld	(OFST+0,sp),a
5035  04de 2010          	jra	L5772
5036  04e0               L7772:
5037                     ; 212 			lcd_stack[coordinate] = *str;
5039  04e0 7b09          	ld	a,(OFST+5,sp)
5040  04e2 97            	ld	xl,a
5041  04e3 7b0a          	ld	a,(OFST+6,sp)
5042  04e5 1b04          	add	a,(OFST+0,sp)
5043  04e7 2401          	jrnc	L201
5044  04e9 5c            	incw	x
5045  04ea               L201:
5046  04ea 02            	rlwa	x,a
5047  04eb 160b          	ldw	y,(OFST+7,sp)
5048  04ed 90f6          	ld	a,(y)
5049  04ef f7            	ld	(x),a
5050  04f0               L5772:
5051                     ; 214 		str++;
5053  04f0 1e0b          	ldw	x,(OFST+7,sp)
5054  04f2 1c0001        	addw	x,#1
5055  04f5 1f0b          	ldw	(OFST+7,sp),x
5056                     ; 215 		coordinate++;
5058  04f7 0c04          	inc	(OFST+0,sp)
5059  04f9               L5672:
5060                     ; 180 	while(*str != '\0')
5062  04f9 1e0b          	ldw	x,(OFST+7,sp)
5063  04fb 7d            	tnz	(x)
5064  04fc 2703          	jreq	L601
5065  04fe cc03ef        	jp	L3672
5066  0501               L601:
5067  0501 acf503f5      	jpf	L7672
5142                     ; 20 main()
5142                     ; 21 {	
5143                     	switch	.text
5144  0505               _main:
5148                     ; 22 	st7920LcdInit(); /*LCD初始化*/
5150  0505 cd0155        	call	_st7920LcdInit
5152                     ; 23 	showLine(0,0,lcd_buffer,"DS18B20");
5154  0508 ae002e        	ldw	x,#L5503
5155  050b 89            	pushw	x
5156  050c ae0000        	ldw	x,#_lcd_buffer
5157  050f 89            	pushw	x
5158  0510 5f            	clrw	x
5159  0511 4f            	clr	a
5160  0512 95            	ld	xh,a
5161  0513 cd03ce        	call	_showLine
5163  0516 5b04          	addw	sp,#4
5164                     ; 24 	showLine(0,1,lcd_buffer,"Temperature Measure Experiment");
5166  0518 ae000f        	ldw	x,#L7503
5167  051b 89            	pushw	x
5168  051c ae0000        	ldw	x,#_lcd_buffer
5169  051f 89            	pushw	x
5170  0520 ae0001        	ldw	x,#1
5171  0523 4f            	clr	a
5172  0524 95            	ld	xh,a
5173  0525 cd03ce        	call	_showLine
5175  0528 5b04          	addw	sp,#4
5176                     ; 25 	showLine(0,3,lcd_buffer,"TEMP:   ℃");
5178  052a ae0004        	ldw	x,#L1603
5179  052d 89            	pushw	x
5180  052e ae0000        	ldw	x,#_lcd_buffer
5181  0531 89            	pushw	x
5182  0532 ae0003        	ldw	x,#3
5183  0535 4f            	clr	a
5184  0536 95            	ld	xh,a
5185  0537 cd03ce        	call	_showLine
5187  053a 5b04          	addw	sp,#4
5188  053c               L3603:
5189                     ; 28 		showLine(6,3,lcd_buffer,"%d2",(u16)readTemp());
5191  053c cd00ed        	call	_readTemp
5193  053f 5f            	clrw	x
5194  0540 97            	ld	xl,a
5195  0541 89            	pushw	x
5196  0542 ae0000        	ldw	x,#L7603
5197  0545 89            	pushw	x
5198  0546 ae0000        	ldw	x,#_lcd_buffer
5199  0549 89            	pushw	x
5200  054a ae0003        	ldw	x,#3
5201  054d a606          	ld	a,#6
5202  054f 95            	ld	xh,a
5203  0550 cd03ce        	call	_showLine
5205  0553 5b06          	addw	sp,#6
5206                     ; 29 		refreshLCD(lcd_buffer); /*刷新LCD*/
5208  0555 ae0000        	ldw	x,#_lcd_buffer
5209  0558 cd01ef        	call	_refreshLCD
5211                     ; 30 		delay_ms(1000);
5213  055b ae03e8        	ldw	x,#1000
5214  055e cd0000        	call	_delay_ms
5217  0561 20d9          	jra	L3603
5230                     	xdef	_main
5231                     	xdef	_SPI_rechar
5232                     	xdef	_SPI_sendchar
5233                     	xdef	_SPI_Init
5234                     	switch	.ubsct
5235  0000               _lcd_buffer:
5236  0000 000000000000  	ds.b	64
5237                     	xdef	_lcd_buffer
5238                     	xdef	_showLine
5239                     	xdef	_hexToAscii
5240                     	xdef	_decToAscii
5241                     	xdef	_refreshLCD
5242                     	xdef	_st7920LcdInit
5243                     	xdef	_sendDataST7920
5244                     	xdef	_sendCodeST7920
5245                     	xdef	_readTemp
5246                     	xdef	_convertDs18b20
5247                     	xdef	_wOnewire
5248                     	xdef	_rOnewire
5249                     	xdef	_resetOnewire
5250                     	xdef	__delay_us
5251                     	xdef	_delay_us
5252                     	xdef	_delay_ms
5253                     .const:	section	.text
5254  0000               L7603:
5255  0000 25643200      	dc.b	"%d2",0
5256  0004               L1603:
5257  0004 54454d503a20  	dc.b	"TEMP:   ",161
5258  000d e600          	dc.b	230,0
5259  000f               L7503:
5260  000f 54656d706572  	dc.b	"Temperature Measur"
5261  0021 652045787065  	dc.b	"e Experiment",0
5262  002e               L5503:
5263  002e 445331384232  	dc.b	"DS18B20",0
5283                     	end

⌨️ 快捷键说明

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