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

📄 main.ls

📁 STM8全部资料
💻 LS
📖 第 1 页 / 共 4 页
字号:
3715  0131 c65203        	ld	a,_SPI_SR
3716  0134 a501          	bcp	a,#1
3717  0136 27f9          	jreq	L1342
3718                     ; 40 	return data;
3720  0138 7b01          	ld	a,(OFST+0,sp)
3723  013a 5b01          	addw	sp,#1
3724  013c 81            	ret
3783                     ; 21 void st7920LcdInit(void)
3783                     ; 22 {
3784                     	switch	.text
3785  013d               _st7920LcdInit:
3787  013d 88            	push	a
3788       00000001      OFST:	set	1
3791                     ; 24 	SPI_Init();
3793  013e adc7          	call	_SPI_Init
3795                     ; 25 	delay_ms(100);
3797  0140 ae0064        	ldw	x,#100
3798  0143 cd0000        	call	_delay_ms
3800                     ; 26 	PE_DDR|=0x20;
3802  0146 721a5016      	bset	_PE_DDR,#5
3803                     ; 27 	PE_CR1|=0x20;
3805  014a 721a5017      	bset	_PE_CR1,#5
3806                     ; 28 	PE_CR2|=0x20;
3808  014e 721a5018      	bset	_PE_CR2,#5
3809                     ; 29 	sendCodeST7920(0x0c);//整体显示
3811  0152 a60c          	ld	a,#12
3812  0154 ad1c          	call	_sendCodeST7920
3814                     ; 30 	sendCodeST7920(0x01);//清屏
3816  0156 a601          	ld	a,#1
3817  0158 ad18          	call	_sendCodeST7920
3819                     ; 31 	sendCodeST7920(0x02);
3821  015a a602          	ld	a,#2
3822  015c ad14          	call	_sendCodeST7920
3824                     ; 32 	for(i=0;i<64;i++)
3826  015e 0f01          	clr	(OFST+0,sp)
3827  0160               L1642:
3828                     ; 33 		lcd_buffer[i]=' ';
3830  0160 7b01          	ld	a,(OFST+0,sp)
3831  0162 5f            	clrw	x
3832  0163 97            	ld	xl,a
3833  0164 a620          	ld	a,#32
3834  0166 e700          	ld	(_lcd_buffer,x),a
3835                     ; 32 	for(i=0;i<64;i++)
3837  0168 0c01          	inc	(OFST+0,sp)
3840  016a 7b01          	ld	a,(OFST+0,sp)
3841  016c a140          	cp	a,#64
3842  016e 25f0          	jrult	L1642
3843                     ; 35 }
3846  0170 84            	pop	a
3847  0171 81            	ret
3884                     ; 37 void sendCodeST7920(u8 Lcd_cmd)
3884                     ; 38 {
3885                     	switch	.text
3886  0172               _sendCodeST7920:
3888  0172 88            	push	a
3889       00000000      OFST:	set	0
3892                     ; 39 	E_CLK
3894  0173 721b5014      	bres	_PE_ODR,#5
3895                     ; 40 	LCD_DELAY()
3898  0177 9d            nop
3903  0178 9d            nop
3908  0179 9d            nop
3913  017a 9d            nop
3918  017b 9d            nop
3920                     ; 41 	E_SET
3922  017c 721a5014      	bset	_PE_ODR,#5
3923                     ; 42 	SPI_sendchar(0xF8);
3925  0180 a6f8          	ld	a,#248
3926  0182 ad9c          	call	_SPI_sendchar
3928                     ; 43 	SPI_sendchar(Lcd_cmd & 0xF0);
3930  0184 7b01          	ld	a,(OFST+1,sp)
3931  0186 a4f0          	and	a,#240
3932  0188 ad96          	call	_SPI_sendchar
3934                     ; 44 	SPI_sendchar(Lcd_cmd << 4);
3936  018a 7b01          	ld	a,(OFST+1,sp)
3937  018c 97            	ld	xl,a
3938  018d a610          	ld	a,#16
3939  018f 42            	mul	x,a
3940  0190 9f            	ld	a,xl
3941  0191 ad8d          	call	_SPI_sendchar
3943                     ; 45 	LCD_DELAY()
3946  0193 9d            nop
3951  0194 9d            nop
3956  0195 9d            nop
3961  0196 9d            nop
3966  0197 9d            nop
3968                     ; 46 	E_CLK
3970  0198 721b5014      	bres	_PE_ODR,#5
3971                     ; 47 	LCD_DELAY()
3974  019c 9d            nop
3979  019d 9d            nop
3984  019e 9d            nop
3989  019f 9d            nop
3994  01a0 9d            nop
3996                     ; 48 }
3999  01a1 84            	pop	a
4000  01a2 81            	ret
4037                     ; 50 void sendDataST7920(u8 Lcd_data)
4037                     ; 51 {
4038                     	switch	.text
4039  01a3               _sendDataST7920:
4041  01a3 88            	push	a
4042       00000000      OFST:	set	0
4045                     ; 52 	E_CLK
4047  01a4 721b5014      	bres	_PE_ODR,#5
4048                     ; 53 	LCD_DELAY()
4051  01a8 9d            nop
4056  01a9 9d            nop
4061  01aa 9d            nop
4066  01ab 9d            nop
4071  01ac 9d            nop
4073                     ; 54 	E_SET
4075  01ad 721a5014      	bset	_PE_ODR,#5
4076                     ; 55 	SPI_sendchar(0xFA);
4078  01b1 a6fa          	ld	a,#250
4079  01b3 cd0120        	call	_SPI_sendchar
4081                     ; 56 	SPI_sendchar(Lcd_data & 0xF0);
4083  01b6 7b01          	ld	a,(OFST+1,sp)
4084  01b8 a4f0          	and	a,#240
4085  01ba cd0120        	call	_SPI_sendchar
4087                     ; 57 	SPI_sendchar(Lcd_data << 4);
4089  01bd 7b01          	ld	a,(OFST+1,sp)
4090  01bf 97            	ld	xl,a
4091  01c0 a610          	ld	a,#16
4092  01c2 42            	mul	x,a
4093  01c3 9f            	ld	a,xl
4094  01c4 cd0120        	call	_SPI_sendchar
4096                     ; 58 	LCD_DELAY()
4099  01c7 9d            nop
4104  01c8 9d            nop
4109  01c9 9d            nop
4114  01ca 9d            nop
4119  01cb 9d            nop
4121                     ; 59 	E_CLK
4123  01cc 721b5014      	bres	_PE_ODR,#5
4124                     ; 60 	LCD_DELAY()
4127  01d0 9d            nop
4132  01d1 9d            nop
4137  01d2 9d            nop
4142  01d3 9d            nop
4147  01d4 9d            nop
4149                     ; 61 }
4152  01d5 84            	pop	a
4153  01d6 81            	ret
4199                     ; 63 void refreshLCD(const u8 *lcd_stack)
4199                     ; 64 {
4200                     	switch	.text
4201  01d7               _refreshLCD:
4203  01d7 89            	pushw	x
4204  01d8 88            	push	a
4205       00000001      OFST:	set	1
4208                     ; 66 	sendCodeST7920(0x02);	//地址归位
4210  01d9 a602          	ld	a,#2
4211  01db ad95          	call	_sendCodeST7920
4213                     ; 67 	for(addr=0;addr<16;addr++)
4215  01dd 0f01          	clr	(OFST+0,sp)
4216  01df               L5452:
4217                     ; 69 		sendDataST7920(*(lcd_stack + addr));
4219  01df 7b02          	ld	a,(OFST+1,sp)
4220  01e1 97            	ld	xl,a
4221  01e2 7b03          	ld	a,(OFST+2,sp)
4222  01e4 1b01          	add	a,(OFST+0,sp)
4223  01e6 2401          	jrnc	L64
4224  01e8 5c            	incw	x
4225  01e9               L64:
4226  01e9 02            	rlwa	x,a
4227  01ea f6            	ld	a,(x)
4228  01eb adb6          	call	_sendDataST7920
4230                     ; 67 	for(addr=0;addr<16;addr++)
4232  01ed 0c01          	inc	(OFST+0,sp)
4235  01ef 7b01          	ld	a,(OFST+0,sp)
4236  01f1 a110          	cp	a,#16
4237  01f3 25ea          	jrult	L5452
4238                     ; 71 	for(addr=32;addr<48;addr++)
4240  01f5 a620          	ld	a,#32
4241  01f7 6b01          	ld	(OFST+0,sp),a
4242  01f9               L3552:
4243                     ; 73 		sendDataST7920(*(lcd_stack + addr));
4245  01f9 7b02          	ld	a,(OFST+1,sp)
4246  01fb 97            	ld	xl,a
4247  01fc 7b03          	ld	a,(OFST+2,sp)
4248  01fe 1b01          	add	a,(OFST+0,sp)
4249  0200 2401          	jrnc	L05
4250  0202 5c            	incw	x
4251  0203               L05:
4252  0203 02            	rlwa	x,a
4253  0204 f6            	ld	a,(x)
4254  0205 ad9c          	call	_sendDataST7920
4256                     ; 71 	for(addr=32;addr<48;addr++)
4258  0207 0c01          	inc	(OFST+0,sp)
4261  0209 7b01          	ld	a,(OFST+0,sp)
4262  020b a130          	cp	a,#48
4263  020d 25ea          	jrult	L3552
4264                     ; 75 	for(addr=16;addr<32;addr++)
4266  020f a610          	ld	a,#16
4267  0211 6b01          	ld	(OFST+0,sp),a
4268  0213               L1652:
4269                     ; 77 		sendDataST7920(*(lcd_stack + addr));
4271  0213 7b02          	ld	a,(OFST+1,sp)
4272  0215 97            	ld	xl,a
4273  0216 7b03          	ld	a,(OFST+2,sp)
4274  0218 1b01          	add	a,(OFST+0,sp)
4275  021a 2401          	jrnc	L25
4276  021c 5c            	incw	x
4277  021d               L25:
4278  021d 02            	rlwa	x,a
4279  021e f6            	ld	a,(x)
4280  021f ad82          	call	_sendDataST7920
4282                     ; 75 	for(addr=16;addr<32;addr++)
4284  0221 0c01          	inc	(OFST+0,sp)
4287  0223 7b01          	ld	a,(OFST+0,sp)
4288  0225 a120          	cp	a,#32
4289  0227 25ea          	jrult	L1652
4290                     ; 80 	for(addr=48;addr<64;addr++)
4292  0229 a630          	ld	a,#48
4293  022b 6b01          	ld	(OFST+0,sp),a
4294  022d               L7652:
4295                     ; 82 		sendDataST7920(*(lcd_stack + addr));
4297  022d 7b02          	ld	a,(OFST+1,sp)
4298  022f 97            	ld	xl,a
4299  0230 7b03          	ld	a,(OFST+2,sp)
4300  0232 1b01          	add	a,(OFST+0,sp)
4301  0234 2401          	jrnc	L45
4302  0236 5c            	incw	x
4303  0237               L45:
4304  0237 02            	rlwa	x,a
4305  0238 f6            	ld	a,(x)
4306  0239 cd01a3        	call	_sendDataST7920
4308                     ; 80 	for(addr=48;addr<64;addr++)
4310  023c 0c01          	inc	(OFST+0,sp)
4313  023e 7b01          	ld	a,(OFST+0,sp)
4314  0240 a140          	cp	a,#64
4315  0242 25e9          	jrult	L7652
4316                     ; 84 }
4319  0244 5b03          	addw	sp,#3
4320  0246 81            	ret
4373                     ; 86 void decToAscii(u8* str,u16 dec,u8 width)
4373                     ; 87 {
4374                     	switch	.text
4375  0247               _decToAscii:
4377  0247 89            	pushw	x
4378       00000000      OFST:	set	0
4381  0248 ace702e7      	jpf	L1462
4382  024c               L7362:
4383                     ; 90 		switch(width)
4385  024c 7b07          	ld	a,(OFST+7,sp)
4387                     ; 121 			default: *str = '0';
4388  024e 4a            	dec	a
4389  024f 2603cc02d7    	jreq	L5062
4390  0254 4a            	dec	a
4391  0255 2764          	jreq	L3062
4392  0257 4a            	dec	a
4393  0258 2745          	jreq	L1062
4394  025a 4a            	dec	a
4395  025b 2726          	jreq	L7752
4396  025d 4a            	dec	a
4397  025e 2707          	jreq	L5752
4398  0260               L7062:
4401  0260 1e01          	ldw	x,(OFST+1,sp)
4402  0262 a630          	ld	a,#48
4403  0264 f7            	ld	(x),a
4404  0265 2077          	jra	L7462
4405  0267               L5752:
4406                     ; 94 				*str = (dec / 10000 + '0');
4408  0267 1e05          	ldw	x,(OFST+5,sp)
4409  0269 90ae2710      	ldw	y,#10000
4410  026d 65            	divw	x,y
4411  026e 1c0030        	addw	x,#48
4412  0271 1601          	ldw	y,(OFST+1,sp)
4413  0273 01            	rrwa	x,a
4414  0274 90f7          	ld	(y),a
4415  0276 02            	rlwa	x,a
4416                     ; 95 				dec %= 10000;
4418  0277 1e05          	ldw	x,(OFST+5,sp)
4419  0279 90ae2710      	ldw	y,#10000
4420  027d 65            	divw	x,y
4421  027e 51            	exgw	x,y
4422  027f 1f05          	ldw	(OFST+5,sp),x
4423                     ; 96 				break;
4425  0281 205b          	jra	L7462
4426  0283               L7752:
4427                     ; 100 				*str = (dec / 1000 + '0');

⌨️ 快捷键说明

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