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

📄 main.ls

📁 STM8全部资料
💻 LS
📖 第 1 页 / 共 4 页
字号:
5196  04df 1b05          	add	a,(OFST+1,sp)
5197  04e1 6b04          	ld	(OFST+0,sp),a
5198                     ; 175 	va_start(marker,str); // Initialize variable arguments.  
5200  04e3 96            	ldw	x,sp
5201  04e4 1c000d        	addw	x,#OFST+9
5202  04e7 1f02          	ldw	(OFST-2,sp),x
5203                     ; 176 	for(i=0;i<64;i++)
5205  04e9 0f01          	clr	(OFST-3,sp)
5206  04eb               L7603:
5209  04eb 0c01          	inc	(OFST-3,sp)
5212  04ed 7b01          	ld	a,(OFST-3,sp)
5213  04ef a140          	cp	a,#64
5214  04f1 25f8          	jrult	L7603
5216  04f3 ac010601      	jpf	L7703
5217  04f7               L5703:
5218                     ; 182 		if(coordinate > 64) break;	//防止堆栈溢出
5220  04f7 7b04          	ld	a,(OFST+0,sp)
5221  04f9 a141          	cp	a,#65
5222  04fb 2503          	jrult	L3013
5224  04fd               L1013:
5225                     ; 217 	va_end( marker ); // Reset variable arguments. 
5227                     ; 218 } 
5230  04fd 5b06          	addw	sp,#6
5231  04ff 81            	ret
5232  0500               L3013:
5233                     ; 184 		if(*str == '\\')
5235  0500 1e0b          	ldw	x,(OFST+7,sp)
5236  0502 f6            	ld	a,(x)
5237  0503 a15c          	cp	a,#92
5238  0505 261b          	jrne	L5013
5239                     ; 186 			str++;
5241  0507 1e0b          	ldw	x,(OFST+7,sp)
5242  0509 1c0001        	addw	x,#1
5243  050c 1f0b          	ldw	(OFST+7,sp),x
5244                     ; 187 			lcd_stack[coordinate] = *str;
5246  050e 7b09          	ld	a,(OFST+5,sp)
5247  0510 97            	ld	xl,a
5248  0511 7b0a          	ld	a,(OFST+6,sp)
5249  0513 1b04          	add	a,(OFST+0,sp)
5250  0515 2401          	jrnc	L401
5251  0517 5c            	incw	x
5252  0518               L401:
5253  0518 02            	rlwa	x,a
5254  0519 160b          	ldw	y,(OFST+7,sp)
5255  051b 90f6          	ld	a,(y)
5256  051d f7            	ld	(x),a
5258  051e acf805f8      	jpf	L7013
5259  0522               L5013:
5260                     ; 189 		else if(*str == '%')
5262  0522 1e0b          	ldw	x,(OFST+7,sp)
5263  0524 f6            	ld	a,(x)
5264  0525 a125          	cp	a,#37
5265  0527 2703          	jreq	L611
5266  0529 cc05e8        	jp	L1113
5267  052c               L611:
5268                     ; 191 			str++;
5270  052c 1e0b          	ldw	x,(OFST+7,sp)
5271  052e 1c0001        	addw	x,#1
5272  0531 1f0b          	ldw	(OFST+7,sp),x
5273                     ; 192 			if (*str == 'd' || *str == 'D')
5275  0533 1e0b          	ldw	x,(OFST+7,sp)
5276  0535 f6            	ld	a,(x)
5277  0536 a164          	cp	a,#100
5278  0538 2707          	jreq	L5113
5280  053a 1e0b          	ldw	x,(OFST+7,sp)
5281  053c f6            	ld	a,(x)
5282  053d a144          	cp	a,#68
5283  053f 2637          	jrne	L3113
5284  0541               L5113:
5285                     ; 194 				str++;
5287  0541 1e0b          	ldw	x,(OFST+7,sp)
5288  0543 1c0001        	addw	x,#1
5289  0546 1f0b          	ldw	(OFST+7,sp),x
5290                     ; 195 				decToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str-'0'));
5292  0548 1e0b          	ldw	x,(OFST+7,sp)
5293  054a f6            	ld	a,(x)
5294  054b a030          	sub	a,#48
5295  054d 88            	push	a
5296  054e 1e03          	ldw	x,(OFST-1,sp)
5297  0550 1c0002        	addw	x,#2
5298  0553 1f03          	ldw	(OFST-1,sp),x
5299  0555 1e03          	ldw	x,(OFST-1,sp)
5300  0557 5a            	decw	x
5301  0558 5a            	decw	x
5302  0559 fe            	ldw	x,(x)
5303  055a 89            	pushw	x
5304  055b 7b0c          	ld	a,(OFST+8,sp)
5305  055d 97            	ld	xl,a
5306  055e 7b0d          	ld	a,(OFST+9,sp)
5307  0560 1b07          	add	a,(OFST+3,sp)
5308  0562 2401          	jrnc	L601
5309  0564 5c            	incw	x
5310  0565               L601:
5311  0565 02            	rlwa	x,a
5312  0566 cd0367        	call	_decToAscii
5314  0569 5b03          	addw	sp,#3
5315                     ; 196 				coordinate += (*str-'0'-1);
5317  056b 1e0b          	ldw	x,(OFST+7,sp)
5318  056d f6            	ld	a,(x)
5319  056e a031          	sub	a,#49
5320  0570 1b04          	add	a,(OFST+0,sp)
5321  0572 6b04          	ld	(OFST+0,sp),a
5323  0574 acf805f8      	jpf	L7013
5324  0578               L3113:
5325                     ; 198 			else if(*str == 'c' || *str == 'C')
5327  0578 1e0b          	ldw	x,(OFST+7,sp)
5328  057a f6            	ld	a,(x)
5329  057b a163          	cp	a,#99
5330  057d 2707          	jreq	L3213
5332  057f 1e0b          	ldw	x,(OFST+7,sp)
5333  0581 f6            	ld	a,(x)
5334  0582 a143          	cp	a,#67
5335  0584 261f          	jrne	L1213
5336  0586               L3213:
5337                     ; 200 				lcd_stack[coordinate] = va_arg(marker,u16);
5339  0586 7b09          	ld	a,(OFST+5,sp)
5340  0588 97            	ld	xl,a
5341  0589 7b0a          	ld	a,(OFST+6,sp)
5342  058b 1b04          	add	a,(OFST+0,sp)
5343  058d 2401          	jrnc	L011
5344  058f 5c            	incw	x
5345  0590               L011:
5346  0590 02            	rlwa	x,a
5347  0591 1602          	ldw	y,(OFST-2,sp)
5348  0593 72a90002      	addw	y,#2
5349  0597 1702          	ldw	(OFST-2,sp),y
5350  0599 1602          	ldw	y,(OFST-2,sp)
5351  059b 905a          	decw	y
5352  059d 905a          	decw	y
5353  059f 90e601        	ld	a,(1,y)
5354  05a2 f7            	ld	(x),a
5356  05a3 2053          	jra	L7013
5357  05a5               L1213:
5358                     ; 202 			else if(*str == 'x' || *str == 'X')
5360  05a5 1e0b          	ldw	x,(OFST+7,sp)
5361  05a7 f6            	ld	a,(x)
5362  05a8 a178          	cp	a,#120
5363  05aa 2707          	jreq	L1313
5365  05ac 1e0b          	ldw	x,(OFST+7,sp)
5366  05ae f6            	ld	a,(x)
5367  05af a158          	cp	a,#88
5368  05b1 2645          	jrne	L7013
5369  05b3               L1313:
5370                     ; 204 				str++;
5372  05b3 1e0b          	ldw	x,(OFST+7,sp)
5373  05b5 1c0001        	addw	x,#1
5374  05b8 1f0b          	ldw	(OFST+7,sp),x
5375                     ; 205 				hexToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str - '0'));
5377  05ba 1e0b          	ldw	x,(OFST+7,sp)
5378  05bc f6            	ld	a,(x)
5379  05bd a030          	sub	a,#48
5380  05bf 88            	push	a
5381  05c0 1e03          	ldw	x,(OFST-1,sp)
5382  05c2 1c0002        	addw	x,#2
5383  05c5 1f03          	ldw	(OFST-1,sp),x
5384  05c7 1e03          	ldw	x,(OFST-1,sp)
5385  05c9 5a            	decw	x
5386  05ca 5a            	decw	x
5387  05cb fe            	ldw	x,(x)
5388  05cc 89            	pushw	x
5389  05cd 7b0c          	ld	a,(OFST+8,sp)
5390  05cf 97            	ld	xl,a
5391  05d0 7b0d          	ld	a,(OFST+9,sp)
5392  05d2 1b07          	add	a,(OFST+3,sp)
5393  05d4 2401          	jrnc	L211
5394  05d6 5c            	incw	x
5395  05d7               L211:
5396  05d7 02            	rlwa	x,a
5397  05d8 cd0410        	call	_hexToAscii
5399  05db 5b03          	addw	sp,#3
5400                     ; 206 				coordinate += (*str - '0' - 1);
5402  05dd 1e0b          	ldw	x,(OFST+7,sp)
5403  05df f6            	ld	a,(x)
5404  05e0 a031          	sub	a,#49
5405  05e2 1b04          	add	a,(OFST+0,sp)
5406  05e4 6b04          	ld	(OFST+0,sp),a
5407  05e6 2010          	jra	L7013
5408  05e8               L1113:
5409                     ; 212 			lcd_stack[coordinate] = *str;
5411  05e8 7b09          	ld	a,(OFST+5,sp)
5412  05ea 97            	ld	xl,a
5413  05eb 7b0a          	ld	a,(OFST+6,sp)
5414  05ed 1b04          	add	a,(OFST+0,sp)
5415  05ef 2401          	jrnc	L411
5416  05f1 5c            	incw	x
5417  05f2               L411:
5418  05f2 02            	rlwa	x,a
5419  05f3 160b          	ldw	y,(OFST+7,sp)
5420  05f5 90f6          	ld	a,(y)
5421  05f7 f7            	ld	(x),a
5422  05f8               L7013:
5423                     ; 214 		str++;
5425  05f8 1e0b          	ldw	x,(OFST+7,sp)
5426  05fa 1c0001        	addw	x,#1
5427  05fd 1f0b          	ldw	(OFST+7,sp),x
5428                     ; 215 		coordinate++;
5430  05ff 0c04          	inc	(OFST+0,sp)
5431  0601               L7703:
5432                     ; 180 	while(*str != '\0')
5434  0601 1e0b          	ldw	x,(OFST+7,sp)
5435  0603 7d            	tnz	(x)
5436  0604 2703          	jreq	L021
5437  0606 cc04f7        	jp	L5703
5438  0609               L021:
5439  0609 acfd04fd      	jpf	L1013
5535                     ; 21 main()
5535                     ; 22 {
5536                     	switch	.text
5537  060d               _main:
5539  060d 5204          	subw	sp,#4
5540       00000004      OFST:	set	4
5543                     ; 23 	u8 time[3],tmp=0;
5545  060f 0f01          	clr	(OFST-3,sp)
5546                     ; 24 	PCF8563_init(1,2,3);   //初始化PCF8563
5548  0611 4b03          	push	#3
5549  0613 ae0002        	ldw	x,#2
5550  0616 a601          	ld	a,#1
5551  0618 95            	ld	xh,a
5552  0619 cd0207        	call	_PCF8563_init
5554  061c 84            	pop	a
5555                     ; 25 	st7920LcdInit();
5557  061d cd025d        	call	_st7920LcdInit
5559                     ; 26 	showLine(0,0,lcd_buffer,"PCF8563 Example");
5561  0620 ae0024        	ldw	x,#L1023
5562  0623 89            	pushw	x
5563  0624 ae0000        	ldw	x,#_lcd_buffer
5564  0627 89            	pushw	x
5565  0628 5f            	clrw	x
5566  0629 4f            	clr	a
5567  062a 95            	ld	xh,a
5568  062b cd04d6        	call	_showLine
5570  062e 5b04          	addw	sp,#4
5571                     ; 27 	showLine(0,1,lcd_buffer,"Set Time: OK");
5573  0630 ae0017        	ldw	x,#L3023
5574  0633 89            	pushw	x
5575  0634 ae0000        	ldw	x,#_lcd_buffer
5576  0637 89            	pushw	x
5577  0638 ae0001        	ldw	x,#1
5578  063b 4f            	clr	a
5579  063c 95            	ld	xh,a
5580  063d cd04d6        	call	_showLine
5582  0640 5b04          	addw	sp,#4
5583                     ; 28 	showLine(0,2,lcd_buffer,"Read Time:");
5585  0642 ae000c        	ldw	x,#L5023
5586  0645 89            	pushw	x
5587  0646 ae0000        	ldw	x,#_lcd_buffer
5588  0649 89            	pushw	x
5589  064a ae0002        	ldw	x,#2
5590  064d 4f            	clr	a
5591  064e 95            	ld	xh,a
5592  064f cd04d6        	call	_showLine
5594  0652 5b04          	addw	sp,#4
5595                     ; 29 	refreshLCD(lcd_buffer); //刷新LCD
5597  0654 ae0000        	ldw	x,#_lcd_buffer
5598  0657 cd02f7        	call	_refreshLCD
5600  065a               L7023:
5601                     ; 32 		PCF8563_getTime(time);
5603  065a 96            	ldw	x,sp
5604  065b 1c0002        	addw	x,#OFST-2
5605  065e cd00dd        	call	_PCF8563_getTime
5607                     ; 33 		if(time[0]!=tmp)
5609  0661 7b02          	ld	a,(OFST-2,sp)
5610  0663 1101          	cp	a,(OFST-3,sp)
5611  0665 2728          	jreq	L3123
5612                     ; 35 			showLine(8,3,lcd_buffer,"%d2:%d2:%d2",(u16)time[2],(u16)time[1],(u16)time[0]);
5614  0667 7b02          	ld	a,(OFST-2,sp)
5615  0669 5f            	clrw	x
5616  066a 97            	ld	xl,a
5617  066b 89            	pushw	x
5618  066c 7b05          	ld	a,(OFST+1,sp)
5619  066e 5f            	clrw	x
5620  066f 97            	ld	xl,a
5621  0670 89            	pushw	x
5622  0671 7b08          	ld	a,(OFST+4,sp)
5623  0673 5f            	clrw	x
5624  0674 97            	ld	xl,a
5625  0675 89            	pushw	x
5626  0676 ae0000        	ldw	x,#L5123
5627  0679 89            	pushw	x
5628  067a ae0000        	ldw	x,#_lcd_buffer
5629  067d 89            	pushw	x
5630  067e ae0003        	ldw	x,#3
5631  0681 a608          	ld	a,#8
5632  0683 95            	ld	xh,a
5633  0684 cd04d6        	call	_showLine
5635  0687 5b0a          	addw	sp,#10
5636                     ; 36 			refreshLCD(lcd_buffer); /*刷新LCD*/
5638  0689 ae0000        	ldw	x,#_lcd_buffer
5639  068c cd02f7        	call	_refreshLCD
5641  068f               L3123:
5642                     ; 38 		tmp=time[0];
5644  068f 7b02          	ld	a,(OFST-2,sp)
5645  0691 6b01          	ld	(OFST-3,sp),a
5647  0693 20c5          	jra	L7023
5660                     	xdef	_main
5661                     	xdef	_SPI_rechar
5662                     	xdef	_SPI_sendchar
5663                     	xdef	_SPI_Init
5664                     	switch	.ubsct
5665  0000               _lcd_buffer:
5666  0000 000000000000  	ds.b	64
5667                     	xdef	_lcd_buffer
5668                     	xdef	_showLine
5669                     	xdef	_hexToAscii
5670                     	xdef	_decToAscii
5671                     	xdef	_refreshLCD
5672                     	xdef	_st7920LcdInit
5673                     	xdef	_sendDataST7920
5674                     	xdef	_sendCodeST7920
5675                     	xdef	_PCF8563_init
5676                     	xdef	_PCF8563_setTime
5677                     	xdef	_PCF8563_getTime
5678                     	xdef	_WriteAByte
5679                     	xdef	_I2C_RcvDat
5680                     	xdef	_I2C_SendDat
5681                     	xdef	_I2C_SendDAdr
5682                     	xdef	_I2C_Start
5683                     	xdef	_I2C_Init
5684                     	xdef	_delay_us
5685                     	xdef	_delay_ms
5686                     .const:	section	.text
5687  0000               L5123:
5688  0000 2564323a2564  	dc.b	"%d2:%d2:%d2",0
5689  000c               L5023:
5690  000c 526561642054  	dc.b	"Read Time:",0
5691  0017               L3023:
5692  0017 536574205469  	dc.b	"Set Time: OK",0
5693  0024               L1023:
5694  0024 504346383536  	dc.b	"PCF8563 Example",0
5695                     	xref.b	c_x
5715                     	xref	c_smodx
5716                     	xref	c_smody
5717                     	xref	c_sdivx
5718                     	end

⌨️ 快捷键说明

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