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

📄 main.ls

📁 STM8全部资料
💻 LS
📖 第 1 页 / 共 3 页
字号:
4521  037f 1e03          	ldw	x,(OFST+1,sp)
4522  0381 f7            	ld	(x),a
4523  0382               L1062:
4524                     ; 165 		width--;
4526  0382 0a09          	dec	(OFST+7,sp)
4527                     ; 166 		str++;
4529  0384 1e03          	ldw	x,(OFST+1,sp)
4530  0386 1c0001        	addw	x,#1
4531  0389 1f03          	ldw	(OFST+1,sp),x
4532  038b               L3752:
4533                     ; 131 	while(width)
4535  038b 0d09          	tnz	(OFST+7,sp)
4536  038d 2703          	jreq	L26
4537  038f cc02d5        	jp	L1752
4538  0392               L26:
4539                     ; 168 }
4542  0392 5b04          	addw	sp,#4
4543  0394 81            	ret
4636                     ; 170 void showLine(const u8 x,const u8 y,u8* lcd_stack,char * str,...)
4636                     ; 171 {
4637                     	switch	.text
4638  0395               _showLine:
4640  0395 89            	pushw	x
4641  0396 5204          	subw	sp,#4
4642       00000004      OFST:	set	4
4645                     ; 172 	u8 coordinate = 16 * y + x;
4647  0398 9f            	ld	a,xl
4648  0399 97            	ld	xl,a
4649  039a a610          	ld	a,#16
4650  039c 42            	mul	x,a
4651  039d 9f            	ld	a,xl
4652  039e 1b05          	add	a,(OFST+1,sp)
4653  03a0 6b04          	ld	(OFST+0,sp),a
4654                     ; 175 	va_start(marker,str); // Initialize variable arguments.  
4656  03a2 96            	ldw	x,sp
4657  03a3 1c000d        	addw	x,#OFST+9
4658  03a6 1f02          	ldw	(OFST-2,sp),x
4659                     ; 176 	for(i=0;i<64;i++)
4661  03a8 0f01          	clr	(OFST-3,sp)
4662  03aa               L1762:
4665  03aa 0c01          	inc	(OFST-3,sp)
4668  03ac 7b01          	ld	a,(OFST-3,sp)
4669  03ae a140          	cp	a,#64
4670  03b0 25f8          	jrult	L1762
4672  03b2 acc004c0      	jpf	L1072
4673  03b6               L7762:
4674                     ; 182 		if(coordinate > 64) break;	//防止堆栈溢出
4676  03b6 7b04          	ld	a,(OFST+0,sp)
4677  03b8 a141          	cp	a,#65
4678  03ba 2503          	jrult	L5072
4680  03bc               L3072:
4681                     ; 217 	va_end( marker ); // Reset variable arguments. 
4683                     ; 218 } 
4686  03bc 5b06          	addw	sp,#6
4687  03be 81            	ret
4688  03bf               L5072:
4689                     ; 184 		if(*str == '\\')
4691  03bf 1e0b          	ldw	x,(OFST+7,sp)
4692  03c1 f6            	ld	a,(x)
4693  03c2 a15c          	cp	a,#92
4694  03c4 261b          	jrne	L7072
4695                     ; 186 			str++;
4697  03c6 1e0b          	ldw	x,(OFST+7,sp)
4698  03c8 1c0001        	addw	x,#1
4699  03cb 1f0b          	ldw	(OFST+7,sp),x
4700                     ; 187 			lcd_stack[coordinate] = *str;
4702  03cd 7b09          	ld	a,(OFST+5,sp)
4703  03cf 97            	ld	xl,a
4704  03d0 7b0a          	ld	a,(OFST+6,sp)
4705  03d2 1b04          	add	a,(OFST+0,sp)
4706  03d4 2401          	jrnc	L66
4707  03d6 5c            	incw	x
4708  03d7               L66:
4709  03d7 02            	rlwa	x,a
4710  03d8 160b          	ldw	y,(OFST+7,sp)
4711  03da 90f6          	ld	a,(y)
4712  03dc f7            	ld	(x),a
4714  03dd acb704b7      	jpf	L1172
4715  03e1               L7072:
4716                     ; 189 		else if(*str == '%')
4718  03e1 1e0b          	ldw	x,(OFST+7,sp)
4719  03e3 f6            	ld	a,(x)
4720  03e4 a125          	cp	a,#37
4721  03e6 2703          	jreq	L001
4722  03e8 cc04a7        	jp	L3172
4723  03eb               L001:
4724                     ; 191 			str++;
4726  03eb 1e0b          	ldw	x,(OFST+7,sp)
4727  03ed 1c0001        	addw	x,#1
4728  03f0 1f0b          	ldw	(OFST+7,sp),x
4729                     ; 192 			if (*str == 'd' || *str == 'D')
4731  03f2 1e0b          	ldw	x,(OFST+7,sp)
4732  03f4 f6            	ld	a,(x)
4733  03f5 a164          	cp	a,#100
4734  03f7 2707          	jreq	L7172
4736  03f9 1e0b          	ldw	x,(OFST+7,sp)
4737  03fb f6            	ld	a,(x)
4738  03fc a144          	cp	a,#68
4739  03fe 2637          	jrne	L5172
4740  0400               L7172:
4741                     ; 194 				str++;
4743  0400 1e0b          	ldw	x,(OFST+7,sp)
4744  0402 1c0001        	addw	x,#1
4745  0405 1f0b          	ldw	(OFST+7,sp),x
4746                     ; 195 				decToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str-'0'));
4748  0407 1e0b          	ldw	x,(OFST+7,sp)
4749  0409 f6            	ld	a,(x)
4750  040a a030          	sub	a,#48
4751  040c 88            	push	a
4752  040d 1e03          	ldw	x,(OFST-1,sp)
4753  040f 1c0002        	addw	x,#2
4754  0412 1f03          	ldw	(OFST-1,sp),x
4755  0414 1e03          	ldw	x,(OFST-1,sp)
4756  0416 5a            	decw	x
4757  0417 5a            	decw	x
4758  0418 fe            	ldw	x,(x)
4759  0419 89            	pushw	x
4760  041a 7b0c          	ld	a,(OFST+8,sp)
4761  041c 97            	ld	xl,a
4762  041d 7b0d          	ld	a,(OFST+9,sp)
4763  041f 1b07          	add	a,(OFST+3,sp)
4764  0421 2401          	jrnc	L07
4765  0423 5c            	incw	x
4766  0424               L07:
4767  0424 02            	rlwa	x,a
4768  0425 cd0226        	call	_decToAscii
4770  0428 5b03          	addw	sp,#3
4771                     ; 196 				coordinate += (*str-'0'-1);
4773  042a 1e0b          	ldw	x,(OFST+7,sp)
4774  042c f6            	ld	a,(x)
4775  042d a031          	sub	a,#49
4776  042f 1b04          	add	a,(OFST+0,sp)
4777  0431 6b04          	ld	(OFST+0,sp),a
4779  0433 acb704b7      	jpf	L1172
4780  0437               L5172:
4781                     ; 198 			else if(*str == 'c' || *str == 'C')
4783  0437 1e0b          	ldw	x,(OFST+7,sp)
4784  0439 f6            	ld	a,(x)
4785  043a a163          	cp	a,#99
4786  043c 2707          	jreq	L5272
4788  043e 1e0b          	ldw	x,(OFST+7,sp)
4789  0440 f6            	ld	a,(x)
4790  0441 a143          	cp	a,#67
4791  0443 261f          	jrne	L3272
4792  0445               L5272:
4793                     ; 200 				lcd_stack[coordinate] = va_arg(marker,u16);
4795  0445 7b09          	ld	a,(OFST+5,sp)
4796  0447 97            	ld	xl,a
4797  0448 7b0a          	ld	a,(OFST+6,sp)
4798  044a 1b04          	add	a,(OFST+0,sp)
4799  044c 2401          	jrnc	L27
4800  044e 5c            	incw	x
4801  044f               L27:
4802  044f 02            	rlwa	x,a
4803  0450 1602          	ldw	y,(OFST-2,sp)
4804  0452 72a90002      	addw	y,#2
4805  0456 1702          	ldw	(OFST-2,sp),y
4806  0458 1602          	ldw	y,(OFST-2,sp)
4807  045a 905a          	decw	y
4808  045c 905a          	decw	y
4809  045e 90e601        	ld	a,(1,y)
4810  0461 f7            	ld	(x),a
4812  0462 2053          	jra	L1172
4813  0464               L3272:
4814                     ; 202 			else if(*str == 'x' || *str == 'X')
4816  0464 1e0b          	ldw	x,(OFST+7,sp)
4817  0466 f6            	ld	a,(x)
4818  0467 a178          	cp	a,#120
4819  0469 2707          	jreq	L3372
4821  046b 1e0b          	ldw	x,(OFST+7,sp)
4822  046d f6            	ld	a,(x)
4823  046e a158          	cp	a,#88
4824  0470 2645          	jrne	L1172
4825  0472               L3372:
4826                     ; 204 				str++;
4828  0472 1e0b          	ldw	x,(OFST+7,sp)
4829  0474 1c0001        	addw	x,#1
4830  0477 1f0b          	ldw	(OFST+7,sp),x
4831                     ; 205 				hexToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str - '0'));
4833  0479 1e0b          	ldw	x,(OFST+7,sp)
4834  047b f6            	ld	a,(x)
4835  047c a030          	sub	a,#48
4836  047e 88            	push	a
4837  047f 1e03          	ldw	x,(OFST-1,sp)
4838  0481 1c0002        	addw	x,#2
4839  0484 1f03          	ldw	(OFST-1,sp),x
4840  0486 1e03          	ldw	x,(OFST-1,sp)
4841  0488 5a            	decw	x
4842  0489 5a            	decw	x
4843  048a fe            	ldw	x,(x)
4844  048b 89            	pushw	x
4845  048c 7b0c          	ld	a,(OFST+8,sp)
4846  048e 97            	ld	xl,a
4847  048f 7b0d          	ld	a,(OFST+9,sp)
4848  0491 1b07          	add	a,(OFST+3,sp)
4849  0493 2401          	jrnc	L47
4850  0495 5c            	incw	x
4851  0496               L47:
4852  0496 02            	rlwa	x,a
4853  0497 cd02cf        	call	_hexToAscii
4855  049a 5b03          	addw	sp,#3
4856                     ; 206 				coordinate += (*str - '0' - 1);
4858  049c 1e0b          	ldw	x,(OFST+7,sp)
4859  049e f6            	ld	a,(x)
4860  049f a031          	sub	a,#49
4861  04a1 1b04          	add	a,(OFST+0,sp)
4862  04a3 6b04          	ld	(OFST+0,sp),a
4863  04a5 2010          	jra	L1172
4864  04a7               L3172:
4865                     ; 212 			lcd_stack[coordinate] = *str;
4867  04a7 7b09          	ld	a,(OFST+5,sp)
4868  04a9 97            	ld	xl,a
4869  04aa 7b0a          	ld	a,(OFST+6,sp)
4870  04ac 1b04          	add	a,(OFST+0,sp)
4871  04ae 2401          	jrnc	L67
4872  04b0 5c            	incw	x
4873  04b1               L67:
4874  04b1 02            	rlwa	x,a
4875  04b2 160b          	ldw	y,(OFST+7,sp)
4876  04b4 90f6          	ld	a,(y)
4877  04b6 f7            	ld	(x),a
4878  04b7               L1172:
4879                     ; 214 		str++;
4881  04b7 1e0b          	ldw	x,(OFST+7,sp)
4882  04b9 1c0001        	addw	x,#1
4883  04bc 1f0b          	ldw	(OFST+7,sp),x
4884                     ; 215 		coordinate++;
4886  04be 0c04          	inc	(OFST+0,sp)
4887  04c0               L1072:
4888                     ; 180 	while(*str != '\0')
4890  04c0 1e0b          	ldw	x,(OFST+7,sp)
4891  04c2 7d            	tnz	(x)
4892  04c3 2703          	jreq	L201
4893  04c5 cc03b6        	jp	L7762
4894  04c8               L201:
4895  04c8 acbc03bc      	jpf	L3072
4983                     ; 21 main()
4983                     ; 22 {
4984                     	switch	.text
4985  04cc               _main:
4987  04cc 88            	push	a
4988       00000001      OFST:	set	1
4991                     ; 24 	u8 tmp = 10;
4993  04cd a60a          	ld	a,#10
4994  04cf 6b01          	ld	(OFST+0,sp),a
4995                     ; 26 	hc164Init();	 //74HC164初始化
4997  04d1 cd0078        	call	_hc164Init
4999                     ; 27 	hc165Init();	 //74HC165初始化
5001  04d4 cd00c1        	call	_hc165Init
5003                     ; 28 	hc164SetDat(tmp);
5005  04d7 7b01          	ld	a,(OFST+0,sp)
5006  04d9 cd004c        	call	_hc164SetDat
5008                     ; 29 	tmp = hc165GetDat();
5010  04dc cd0091        	call	_hc165GetDat
5012  04df 6b01          	ld	(OFST+0,sp),a
5013                     ; 31 	st7920LcdInit(); //LCD初始化
5015  04e1 cd011c        	call	_st7920LcdInit
5017                     ; 33 	showLine(0,0,lcd_buffer,"74HC164--74HC165");
5019  04e4 ae002f        	ldw	x,#L7772
5020  04e7 89            	pushw	x
5021  04e8 ae0000        	ldw	x,#_lcd_buffer
5022  04eb 89            	pushw	x
5023  04ec 5f            	clrw	x
5024  04ed 4f            	clr	a
5025  04ee 95            	ld	xh,a
5026  04ef cd0395        	call	_showLine
5028  04f2 5b04          	addw	sp,#4
5029                     ; 34 	showLine(0,1,lcd_buffer,"Serial→Parallel");
5031  04f4 ae001e        	ldw	x,#L1003
5032  04f7 89            	pushw	x
5033  04f8 ae0000        	ldw	x,#_lcd_buffer
5034  04fb 89            	pushw	x
5035  04fc ae0001        	ldw	x,#1
5036  04ff 4f            	clr	a
5037  0500 95            	ld	xh,a
5038  0501 cd0395        	call	_showLine
5040  0504 5b04          	addw	sp,#4
5041                     ; 35 	showLine(0,2,lcd_buffer,"Parallel→Serial");
5043  0506 ae000d        	ldw	x,#L3003
5044  0509 89            	pushw	x
5045  050a ae0000        	ldw	x,#_lcd_buffer
5046  050d 89            	pushw	x
5047  050e ae0002        	ldw	x,#2
5048  0511 4f            	clr	a
5049  0512 95            	ld	xh,a
5050  0513 cd0395        	call	_showLine
5052  0516 5b04          	addw	sp,#4
5053                     ; 36 	showLine(0,3,lcd_buffer,"Data: ");
5055  0518 ae0006        	ldw	x,#L5003
5056  051b 89            	pushw	x
5057  051c ae0000        	ldw	x,#_lcd_buffer
5058  051f 89            	pushw	x
5059  0520 ae0003        	ldw	x,#3
5060  0523 4f            	clr	a
5061  0524 95            	ld	xh,a
5062  0525 cd0395        	call	_showLine
5064  0528 5b04          	addw	sp,#4
5065                     ; 37 	showLine(5,3,lcd_buffer,"0x%x2",tmp);
5067  052a 7b01          	ld	a,(OFST+0,sp)
5068  052c 88            	push	a
5069  052d ae0000        	ldw	x,#L7003
5070  0530 89            	pushw	x
5071  0531 ae0000        	ldw	x,#_lcd_buffer
5072  0534 89            	pushw	x
5073  0535 ae0003        	ldw	x,#3
5074  0538 a605          	ld	a,#5
5075  053a 95            	ld	xh,a
5076  053b cd0395        	call	_showLine
5078  053e 5b05          	addw	sp,#5
5079                     ; 38 	refreshLCD(lcd_buffer); //刷新LCD*/
5081  0540 ae0000        	ldw	x,#_lcd_buffer
5082  0543 cd01b6        	call	_refreshLCD
5084  0546               L1103:
5085                     ; 39 	while(1);
5087  0546 20fe          	jra	L1103
5100                     	xdef	_main
5101                     	xdef	_SPI_rechar
5102                     	xdef	_SPI_sendchar
5103                     	xdef	_SPI_Init
5104                     	switch	.ubsct
5105  0000               _lcd_buffer:
5106  0000 000000000000  	ds.b	64
5107                     	xdef	_lcd_buffer
5108                     	xdef	_showLine
5109                     	xdef	_hexToAscii
5110                     	xdef	_decToAscii
5111                     	xdef	_refreshLCD
5112                     	xdef	_st7920LcdInit
5113                     	xdef	_sendDataST7920
5114                     	xdef	_sendCodeST7920
5115                     	xdef	_hc165Init
5116                     	xdef	_hc165GetDat
5117                     	xdef	_hc164Init
5118                     	xdef	_hc164SetDat
5119                     	xdef	_delay_us
5120                     	xdef	_delay_ms
5121                     .const:	section	.text
5122  0000               L7003:
5123  0000 307825783200  	dc.b	"0x%x2",0
5124  0006               L5003:
5125  0006 446174613a20  	dc.b	"Data: ",0
5126  000d               L3003:
5127  000d 506172616c6c  	dc.b	"Parallel",161
5128  0016 fa5365726961  	dc.b	250,83,101,114,105,97
5129  001c 6c00          	dc.b	"l",0
5130  001e               L1003:
5131  001e 53657269616c  	dc.b	"Serial",161
5132  0025 fa506172616c  	dc.b	250,80,97,114,97,108
5133  002b 6c656c00      	dc.b	"lel",0
5134  002f               L7772:
5135  002f 373448433136  	dc.b	"74HC164--74HC165",0
5155                     	end

⌨️ 快捷键说明

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