📄 main.ls
字号:
3890 01a7 42 mul x,a
3891 01a8 9f ld a,xl
3892 01a9 ad8d call _SPI_sendchar
3894 ; 45 LCD_DELAY()
3897 01ab 9d nop
3902 01ac 9d nop
3907 01ad 9d nop
3912 01ae 9d nop
3917 01af 9d nop
3919 ; 46 E_CLK
3921 01b0 721b5014 bres _PE_ODR,#5
3922 ; 47 LCD_DELAY()
3925 01b4 9d nop
3930 01b5 9d nop
3935 01b6 9d nop
3940 01b7 9d nop
3945 01b8 9d nop
3947 ; 48 }
3950 01b9 84 pop a
3951 01ba 81 ret
3988 ; 50 void sendDataST7920(u8 Lcd_data)
3988 ; 51 {
3989 switch .text
3990 01bb _sendDataST7920:
3992 01bb 88 push a
3993 00000000 OFST: set 0
3996 ; 52 E_CLK
3998 01bc 721b5014 bres _PE_ODR,#5
3999 ; 53 LCD_DELAY()
4002 01c0 9d nop
4007 01c1 9d nop
4012 01c2 9d nop
4017 01c3 9d nop
4022 01c4 9d nop
4024 ; 54 E_SET
4026 01c5 721a5014 bset _PE_ODR,#5
4027 ; 55 SPI_sendchar(0xFA);
4029 01c9 a6fa ld a,#250
4030 01cb cd0138 call _SPI_sendchar
4032 ; 56 SPI_sendchar(Lcd_data & 0xF0);
4034 01ce 7b01 ld a,(OFST+1,sp)
4035 01d0 a4f0 and a,#240
4036 01d2 cd0138 call _SPI_sendchar
4038 ; 57 SPI_sendchar(Lcd_data << 4);
4040 01d5 7b01 ld a,(OFST+1,sp)
4041 01d7 97 ld xl,a
4042 01d8 a610 ld a,#16
4043 01da 42 mul x,a
4044 01db 9f ld a,xl
4045 01dc cd0138 call _SPI_sendchar
4047 ; 58 LCD_DELAY()
4050 01df 9d nop
4055 01e0 9d nop
4060 01e1 9d nop
4065 01e2 9d nop
4070 01e3 9d nop
4072 ; 59 E_CLK
4074 01e4 721b5014 bres _PE_ODR,#5
4075 ; 60 LCD_DELAY()
4078 01e8 9d nop
4083 01e9 9d nop
4088 01ea 9d nop
4093 01eb 9d nop
4098 01ec 9d nop
4100 ; 61 }
4103 01ed 84 pop a
4104 01ee 81 ret
4150 ; 63 void refreshLCD(const u8 *lcd_stack)
4150 ; 64 {
4151 switch .text
4152 01ef _refreshLCD:
4154 01ef 89 pushw x
4155 01f0 88 push a
4156 00000001 OFST: set 1
4159 ; 66 sendCodeST7920(0x02); //地址归位
4161 01f1 a602 ld a,#2
4162 01f3 ad95 call _sendCodeST7920
4164 ; 67 for(addr=0;addr<16;addr++)
4166 01f5 0f01 clr (OFST+0,sp)
4167 01f7 L5052:
4168 ; 69 sendDataST7920(*(lcd_stack + addr));
4170 01f7 7b02 ld a,(OFST+1,sp)
4171 01f9 97 ld xl,a
4172 01fa 7b03 ld a,(OFST+2,sp)
4173 01fc 1b01 add a,(OFST+0,sp)
4174 01fe 2401 jrnc L24
4175 0200 5c incw x
4176 0201 L24:
4177 0201 02 rlwa x,a
4178 0202 f6 ld a,(x)
4179 0203 adb6 call _sendDataST7920
4181 ; 67 for(addr=0;addr<16;addr++)
4183 0205 0c01 inc (OFST+0,sp)
4186 0207 7b01 ld a,(OFST+0,sp)
4187 0209 a110 cp a,#16
4188 020b 25ea jrult L5052
4189 ; 71 for(addr=32;addr<48;addr++)
4191 020d a620 ld a,#32
4192 020f 6b01 ld (OFST+0,sp),a
4193 0211 L3152:
4194 ; 73 sendDataST7920(*(lcd_stack + addr));
4196 0211 7b02 ld a,(OFST+1,sp)
4197 0213 97 ld xl,a
4198 0214 7b03 ld a,(OFST+2,sp)
4199 0216 1b01 add a,(OFST+0,sp)
4200 0218 2401 jrnc L44
4201 021a 5c incw x
4202 021b L44:
4203 021b 02 rlwa x,a
4204 021c f6 ld a,(x)
4205 021d ad9c call _sendDataST7920
4207 ; 71 for(addr=32;addr<48;addr++)
4209 021f 0c01 inc (OFST+0,sp)
4212 0221 7b01 ld a,(OFST+0,sp)
4213 0223 a130 cp a,#48
4214 0225 25ea jrult L3152
4215 ; 75 for(addr=16;addr<32;addr++)
4217 0227 a610 ld a,#16
4218 0229 6b01 ld (OFST+0,sp),a
4219 022b L1252:
4220 ; 77 sendDataST7920(*(lcd_stack + addr));
4222 022b 7b02 ld a,(OFST+1,sp)
4223 022d 97 ld xl,a
4224 022e 7b03 ld a,(OFST+2,sp)
4225 0230 1b01 add a,(OFST+0,sp)
4226 0232 2401 jrnc L64
4227 0234 5c incw x
4228 0235 L64:
4229 0235 02 rlwa x,a
4230 0236 f6 ld a,(x)
4231 0237 ad82 call _sendDataST7920
4233 ; 75 for(addr=16;addr<32;addr++)
4235 0239 0c01 inc (OFST+0,sp)
4238 023b 7b01 ld a,(OFST+0,sp)
4239 023d a120 cp a,#32
4240 023f 25ea jrult L1252
4241 ; 80 for(addr=48;addr<64;addr++)
4243 0241 a630 ld a,#48
4244 0243 6b01 ld (OFST+0,sp),a
4245 0245 L7252:
4246 ; 82 sendDataST7920(*(lcd_stack + addr));
4248 0245 7b02 ld a,(OFST+1,sp)
4249 0247 97 ld xl,a
4250 0248 7b03 ld a,(OFST+2,sp)
4251 024a 1b01 add a,(OFST+0,sp)
4252 024c 2401 jrnc L05
4253 024e 5c incw x
4254 024f L05:
4255 024f 02 rlwa x,a
4256 0250 f6 ld a,(x)
4257 0251 cd01bb call _sendDataST7920
4259 ; 80 for(addr=48;addr<64;addr++)
4261 0254 0c01 inc (OFST+0,sp)
4264 0256 7b01 ld a,(OFST+0,sp)
4265 0258 a140 cp a,#64
4266 025a 25e9 jrult L7252
4267 ; 84 }
4270 025c 5b03 addw sp,#3
4271 025e 81 ret
4324 ; 86 void decToAscii(u8* str,u16 dec,u8 width)
4324 ; 87 {
4325 switch .text
4326 025f _decToAscii:
4328 025f 89 pushw x
4329 00000000 OFST: set 0
4332 0260 acff02ff jpf L1062
4333 0264 L7752:
4334 ; 90 switch(width)
4336 0264 7b07 ld a,(OFST+7,sp)
4338 ; 121 default: *str = '0';
4339 0266 4a dec a
4340 0267 2603cc02ef jreq L5452
4341 026c 4a dec a
4342 026d 2764 jreq L3452
4343 026f 4a dec a
4344 0270 2745 jreq L1452
4345 0272 4a dec a
4346 0273 2726 jreq L7352
4347 0275 4a dec a
4348 0276 2707 jreq L5352
4349 0278 L7452:
4352 0278 1e01 ldw x,(OFST+1,sp)
4353 027a a630 ld a,#48
4354 027c f7 ld (x),a
4355 027d 2077 jra L7062
4356 027f L5352:
4357 ; 94 *str = (dec / 10000 + '0');
4359 027f 1e05 ldw x,(OFST+5,sp)
4360 0281 90ae2710 ldw y,#10000
4361 0285 65 divw x,y
4362 0286 1c0030 addw x,#48
4363 0289 1601 ldw y,(OFST+1,sp)
4364 028b 01 rrwa x,a
4365 028c 90f7 ld (y),a
4366 028e 02 rlwa x,a
4367 ; 95 dec %= 10000;
4369 028f 1e05 ldw x,(OFST+5,sp)
4370 0291 90ae2710 ldw y,#10000
4371 0295 65 divw x,y
4372 0296 51 exgw x,y
4373 0297 1f05 ldw (OFST+5,sp),x
4374 ; 96 break;
4376 0299 205b jra L7062
4377 029b L7352:
4378 ; 100 *str = (dec / 1000 + '0');
4380 029b 1e05 ldw x,(OFST+5,sp)
4381 029d 90ae03e8 ldw y,#1000
4382 02a1 65 divw x,y
4383 02a2 1c0030 addw x,#48
4384 02a5 1601 ldw y,(OFST+1,sp)
4385 02a7 01 rrwa x,a
4386 02a8 90f7 ld (y),a
4387 02aa 02 rlwa x,a
4388 ; 101 dec %= 1000;
4390 02ab 1e05 ldw x,(OFST+5,sp)
4391 02ad 90ae03e8 ldw y,#1000
4392 02b1 65 divw x,y
4393 02b2 51 exgw x,y
4394 02b3 1f05 ldw (OFST+5,sp),x
4395 ; 102 break;
4397 02b5 203f jra L7062
4398 02b7 L1452:
4399 ; 106 *str = (dec/100+'0');
4401 02b7 1e05 ldw x,(OFST+5,sp)
4402 02b9 90ae0064 ldw y,#100
4403 02bd 65 divw x,y
4404 02be 1c0030 addw x,#48
4405 02c1 1601 ldw y,(OFST+1,sp)
4406 02c3 01 rrwa x,a
4407 02c4 90f7 ld (y),a
4408 02c6 02 rlwa x,a
4409 ; 107 dec %= 100;
4411 02c7 1e05 ldw x,(OFST+5,sp)
4412 02c9 90ae0064 ldw y,#100
4413 02cd 65 divw x,y
4414 02ce 51 exgw x,y
4415 02cf 1f05 ldw (OFST+5,sp),x
4416 ; 108 break;
4418 02d1 2023 jra L7062
4419 02d3 L3452:
4420 ; 112 *str = (dec/10+'0');
4422 02d3 1e05 ldw x,(OFST+5,sp)
4423 02d5 90ae000a ldw y,#10
4424 02d9 65 divw x,y
4425 02da 1c0030 addw x,#48
4426 02dd 1601 ldw y,(OFST+1,sp)
4427 02df 01 rrwa x,a
4428 02e0 90f7 ld (y),a
4429 02e2 02 rlwa x,a
4430 ; 113 dec %= 10;
4432 02e3 1e05 ldw x,(OFST+5,sp)
4433 02e5 90ae000a ldw y,#10
4434 02e9 65 divw x,y
4435 02ea 51 exgw x,y
4436 02eb 1f05 ldw (OFST+5,sp),x
4437 ; 114 break;
4439 02ed 2007 jra L7062
4440 02ef L5452:
4441 ; 118 *str = (dec+'0');
4443 02ef 7b06 ld a,(OFST+6,sp)
4444 02f1 ab30 add a,#48
4445 02f3 1e01 ldw x,(OFST+1,sp)
4446 02f5 f7 ld (x),a
4447 ; 119 break;
4449 02f6 L7062:
4450 ; 123 width--;
4452 02f6 0a07 dec (OFST+7,sp)
4453 ; 124 str++;
4455 02f8 1e01 ldw x,(OFST+1,sp)
4456 02fa 1c0001 addw x,#1
4457 02fd 1f01 ldw (OFST+1,sp),x
4458 02ff L1062:
4459 ; 88 while(width)
4461 02ff 0d07 tnz (OFST+7,sp)
4462 0301 2703 jreq L65
4463 0303 cc0264 jp L7752
4464 0306 L65:
4465 ; 126 }
4468 0306 85 popw x
4469 0307 81 ret
4531 ; 128 void hexToAscii(u8* str,u16 hex,u8 width)
4531 ; 129 {
4532 switch .text
4533 0308 _hexToAscii:
4535 0308 89 pushw x
4536 0309 89 pushw x
4537 00000002 OFST: set 2
4540 030a acc403c4 jpf L7562
4541 030e L5562:
4542 ; 133 switch(width)
4544 030e 7b09 ld a,(OFST+7,sp)
4546 ; 163 default: *str = '0';
4547 0310 4a dec a
4548 0311 2603 jrne L46
4549 0313 cc0398 jp L7162
4550 0316 L46:
4551 0316 4a dec a
4552 0317 2758 jreq L5162
4553 0319 4a dec a
4554 031a 2730 jreq L3162
4555 031c 4a dec a
4556 031d 2709 jreq L1162
4557 031f L1262:
4560 031f 1e03 ldw x,(OFST+1,sp)
4561 0321 a630 ld a,#48
4562 0323 f7 ld (x),a
4563 0324 acbb03bb jpf L5662
4564 0328 L1162:
4565 ; 137 tmp = (hex >> 12);
4567 0328 1e07 ldw x,(OFST+5,sp)
4568 032a 01 rrwa x,a
4569 032b 4f clr a
4570 032c 41 exg a,xl
4571 032d 4e swap a
4572 032e a40f and a,#15
4573 0330 02 rlwa x,a
4574 0331 1f01 ldw (OFST-1,sp),x
4575 ; 138 if(tmp > 9) *str = tmp + ('A' - 10);
4577 0333 1e01 ldw x,(OFST-1,sp)
4578 0335 a3000a cpw x,#10
4579 0338 2509 jrult L7662
4582 033a 7b02 ld a,(OFST+0,sp)
4583 033c ab37 add a,#55
4584 033e 1e03 ldw x,(OFST+1,sp)
4585 0340 f7 ld (x),a
4587 0341 2078 jra L5662
4588 0343 L7662:
4589 ; 139 else *str = tmp + '0';
4591 0343 7b02 ld a,(OFST+0,sp)
4592 0345 ab30 add a,#48
4593 0347 1e03 ldw x,(OFST+1,sp)
4594 0349 f7 ld (x),a
4595 034a 206f jra L5662
4596 034c L3162:
4597 ; 144 tmp = (hex >> 8) & 0x000F;
4599 034c 1e07 ldw x,(OFST+5,sp)
4600 034e 4f clr a
4601 034f 01 rrwa x,a
4602 0350 01 rrwa x,a
4603 0351 a40f and a,#15
4604 0353 5f clrw x
4605 0354 02 rlwa x,a
4606 0355 1f01 ldw (OFST-1,sp),x
4607 0357 01 rrwa x,a
4608 ; 145 if(tmp > 9) *str = tmp + ('A' - 10);
4610 0358 1e01 ldw x,(OFST-1,sp)
4611 035a a3000a cpw x,#10
4612 035d 2509 jrult L3762
4615 035f 7b02 ld a,(OFST+0,sp)
4616 0361 ab37 add a,#55
4617 0363 1e03 ldw x,(OFST+1,sp)
4618 0365 f7 ld (x),a
4620 0366 2053 jra L5662
4621 0368 L3762:
4622 ; 146 else *str = tmp + '0';
4624 0368 7b02 ld a,(OFST+0,sp)
4625 036a ab30 add a,#48
4626 036c 1e03 ldw x,(OFST+1,sp)
4627 036e f7 ld (x),a
4628 036f 204a jra L5662
4629 0371 L5162:
4630 ; 151 tmp = (hex >> 4) & 0x000F;
4632 0371 1e07 ldw x,(OFST+5,sp)
4633 0373 54 srlw x
4634 0374 54 srlw x
4635 0375 54 srlw x
4636 0376 54 srlw x
4637 0377 01 rrwa x,a
4638 0378 a40f and a,#15
4639 037a 5f clrw x
4640 037b 5f clrw x
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -