📄 main.ls
字号:
3987 0199 9d nop
3992 019a 9d nop
3997 019b 9d nop
3999 ; 48 }
4002 019c 84 pop a
4003 019d 81 ret
4040 ; 50 void sendDataST7920(u8 Lcd_data)
4040 ; 51 {
4041 switch .text
4042 019e _sendDataST7920:
4044 019e 88 push a
4045 00000000 OFST: set 0
4048 ; 52 E_CLK
4050 019f 721b5014 bres _PE_ODR,#5
4051 ; 53 LCD_DELAY()
4054 01a3 9d nop
4059 01a4 9d nop
4064 01a5 9d nop
4069 01a6 9d nop
4074 01a7 9d nop
4076 ; 54 E_SET
4078 01a8 721a5014 bset _PE_ODR,#5
4079 ; 55 SPI_sendchar(0xFA);
4081 01ac a6fa ld a,#250
4082 01ae cd011b call _SPI_sendchar
4084 ; 56 SPI_sendchar(Lcd_data & 0xF0);
4086 01b1 7b01 ld a,(OFST+1,sp)
4087 01b3 a4f0 and a,#240
4088 01b5 cd011b call _SPI_sendchar
4090 ; 57 SPI_sendchar(Lcd_data << 4);
4092 01b8 7b01 ld a,(OFST+1,sp)
4093 01ba 97 ld xl,a
4094 01bb a610 ld a,#16
4095 01bd 42 mul x,a
4096 01be 9f ld a,xl
4097 01bf cd011b call _SPI_sendchar
4099 ; 58 LCD_DELAY()
4102 01c2 9d nop
4107 01c3 9d nop
4112 01c4 9d nop
4117 01c5 9d nop
4122 01c6 9d nop
4124 ; 59 E_CLK
4126 01c7 721b5014 bres _PE_ODR,#5
4127 ; 60 LCD_DELAY()
4130 01cb 9d nop
4135 01cc 9d nop
4140 01cd 9d nop
4145 01ce 9d nop
4150 01cf 9d nop
4152 ; 61 }
4155 01d0 84 pop a
4156 01d1 81 ret
4202 ; 63 void refreshLCD(const u8 *lcd_stack)
4202 ; 64 {
4203 switch .text
4204 01d2 _refreshLCD:
4206 01d2 89 pushw x
4207 01d3 88 push a
4208 00000001 OFST: set 1
4211 ; 66 sendCodeST7920(0x02); //地址归位
4213 01d4 a602 ld a,#2
4214 01d6 ad95 call _sendCodeST7920
4216 ; 67 for(addr=0;addr<16;addr++)
4218 01d8 0f01 clr (OFST+0,sp)
4219 01da L3552:
4220 ; 69 sendDataST7920(*(lcd_stack + addr));
4222 01da 7b02 ld a,(OFST+1,sp)
4223 01dc 97 ld xl,a
4224 01dd 7b03 ld a,(OFST+2,sp)
4225 01df 1b01 add a,(OFST+0,sp)
4226 01e1 2401 jrnc L64
4227 01e3 5c incw x
4228 01e4 L64:
4229 01e4 02 rlwa x,a
4230 01e5 f6 ld a,(x)
4231 01e6 adb6 call _sendDataST7920
4233 ; 67 for(addr=0;addr<16;addr++)
4235 01e8 0c01 inc (OFST+0,sp)
4238 01ea 7b01 ld a,(OFST+0,sp)
4239 01ec a110 cp a,#16
4240 01ee 25ea jrult L3552
4241 ; 71 for(addr=32;addr<48;addr++)
4243 01f0 a620 ld a,#32
4244 01f2 6b01 ld (OFST+0,sp),a
4245 01f4 L1652:
4246 ; 73 sendDataST7920(*(lcd_stack + addr));
4248 01f4 7b02 ld a,(OFST+1,sp)
4249 01f6 97 ld xl,a
4250 01f7 7b03 ld a,(OFST+2,sp)
4251 01f9 1b01 add a,(OFST+0,sp)
4252 01fb 2401 jrnc L05
4253 01fd 5c incw x
4254 01fe L05:
4255 01fe 02 rlwa x,a
4256 01ff f6 ld a,(x)
4257 0200 ad9c call _sendDataST7920
4259 ; 71 for(addr=32;addr<48;addr++)
4261 0202 0c01 inc (OFST+0,sp)
4264 0204 7b01 ld a,(OFST+0,sp)
4265 0206 a130 cp a,#48
4266 0208 25ea jrult L1652
4267 ; 75 for(addr=16;addr<32;addr++)
4269 020a a610 ld a,#16
4270 020c 6b01 ld (OFST+0,sp),a
4271 020e L7652:
4272 ; 77 sendDataST7920(*(lcd_stack + addr));
4274 020e 7b02 ld a,(OFST+1,sp)
4275 0210 97 ld xl,a
4276 0211 7b03 ld a,(OFST+2,sp)
4277 0213 1b01 add a,(OFST+0,sp)
4278 0215 2401 jrnc L25
4279 0217 5c incw x
4280 0218 L25:
4281 0218 02 rlwa x,a
4282 0219 f6 ld a,(x)
4283 021a ad82 call _sendDataST7920
4285 ; 75 for(addr=16;addr<32;addr++)
4287 021c 0c01 inc (OFST+0,sp)
4290 021e 7b01 ld a,(OFST+0,sp)
4291 0220 a120 cp a,#32
4292 0222 25ea jrult L7652
4293 ; 80 for(addr=48;addr<64;addr++)
4295 0224 a630 ld a,#48
4296 0226 6b01 ld (OFST+0,sp),a
4297 0228 L5752:
4298 ; 82 sendDataST7920(*(lcd_stack + addr));
4300 0228 7b02 ld a,(OFST+1,sp)
4301 022a 97 ld xl,a
4302 022b 7b03 ld a,(OFST+2,sp)
4303 022d 1b01 add a,(OFST+0,sp)
4304 022f 2401 jrnc L45
4305 0231 5c incw x
4306 0232 L45:
4307 0232 02 rlwa x,a
4308 0233 f6 ld a,(x)
4309 0234 cd019e call _sendDataST7920
4311 ; 80 for(addr=48;addr<64;addr++)
4313 0237 0c01 inc (OFST+0,sp)
4316 0239 7b01 ld a,(OFST+0,sp)
4317 023b a140 cp a,#64
4318 023d 25e9 jrult L5752
4319 ; 84 }
4322 023f 5b03 addw sp,#3
4323 0241 81 ret
4376 ; 86 void decToAscii(u8* str,u16 dec,u8 width)
4376 ; 87 {
4377 switch .text
4378 0242 _decToAscii:
4380 0242 89 pushw x
4381 00000000 OFST: set 0
4384 0243 ace202e2 jpf L7462
4385 0247 L5462:
4386 ; 90 switch(width)
4388 0247 7b07 ld a,(OFST+7,sp)
4390 ; 121 default: *str = '0';
4391 0249 4a dec a
4392 024a 2603cc02d2 jreq L3162
4393 024f 4a dec a
4394 0250 2764 jreq L1162
4395 0252 4a dec a
4396 0253 2745 jreq L7062
4397 0255 4a dec a
4398 0256 2726 jreq L5062
4399 0258 4a dec a
4400 0259 2707 jreq L3062
4401 025b L5162:
4404 025b 1e01 ldw x,(OFST+1,sp)
4405 025d a630 ld a,#48
4406 025f f7 ld (x),a
4407 0260 2077 jra L5562
4408 0262 L3062:
4409 ; 94 *str = (dec / 10000 + '0');
4411 0262 1e05 ldw x,(OFST+5,sp)
4412 0264 90ae2710 ldw y,#10000
4413 0268 65 divw x,y
4414 0269 1c0030 addw x,#48
4415 026c 1601 ldw y,(OFST+1,sp)
4416 026e 01 rrwa x,a
4417 026f 90f7 ld (y),a
4418 0271 02 rlwa x,a
4419 ; 95 dec %= 10000;
4421 0272 1e05 ldw x,(OFST+5,sp)
4422 0274 90ae2710 ldw y,#10000
4423 0278 65 divw x,y
4424 0279 51 exgw x,y
4425 027a 1f05 ldw (OFST+5,sp),x
4426 ; 96 break;
4428 027c 205b jra L5562
4429 027e L5062:
4430 ; 100 *str = (dec / 1000 + '0');
4432 027e 1e05 ldw x,(OFST+5,sp)
4433 0280 90ae03e8 ldw y,#1000
4434 0284 65 divw x,y
4435 0285 1c0030 addw x,#48
4436 0288 1601 ldw y,(OFST+1,sp)
4437 028a 01 rrwa x,a
4438 028b 90f7 ld (y),a
4439 028d 02 rlwa x,a
4440 ; 101 dec %= 1000;
4442 028e 1e05 ldw x,(OFST+5,sp)
4443 0290 90ae03e8 ldw y,#1000
4444 0294 65 divw x,y
4445 0295 51 exgw x,y
4446 0296 1f05 ldw (OFST+5,sp),x
4447 ; 102 break;
4449 0298 203f jra L5562
4450 029a L7062:
4451 ; 106 *str = (dec/100+'0');
4453 029a 1e05 ldw x,(OFST+5,sp)
4454 029c 90ae0064 ldw y,#100
4455 02a0 65 divw x,y
4456 02a1 1c0030 addw x,#48
4457 02a4 1601 ldw y,(OFST+1,sp)
4458 02a6 01 rrwa x,a
4459 02a7 90f7 ld (y),a
4460 02a9 02 rlwa x,a
4461 ; 107 dec %= 100;
4463 02aa 1e05 ldw x,(OFST+5,sp)
4464 02ac 90ae0064 ldw y,#100
4465 02b0 65 divw x,y
4466 02b1 51 exgw x,y
4467 02b2 1f05 ldw (OFST+5,sp),x
4468 ; 108 break;
4470 02b4 2023 jra L5562
4471 02b6 L1162:
4472 ; 112 *str = (dec/10+'0');
4474 02b6 1e05 ldw x,(OFST+5,sp)
4475 02b8 90ae000a ldw y,#10
4476 02bc 65 divw x,y
4477 02bd 1c0030 addw x,#48
4478 02c0 1601 ldw y,(OFST+1,sp)
4479 02c2 01 rrwa x,a
4480 02c3 90f7 ld (y),a
4481 02c5 02 rlwa x,a
4482 ; 113 dec %= 10;
4484 02c6 1e05 ldw x,(OFST+5,sp)
4485 02c8 90ae000a ldw y,#10
4486 02cc 65 divw x,y
4487 02cd 51 exgw x,y
4488 02ce 1f05 ldw (OFST+5,sp),x
4489 ; 114 break;
4491 02d0 2007 jra L5562
4492 02d2 L3162:
4493 ; 118 *str = (dec+'0');
4495 02d2 7b06 ld a,(OFST+6,sp)
4496 02d4 ab30 add a,#48
4497 02d6 1e01 ldw x,(OFST+1,sp)
4498 02d8 f7 ld (x),a
4499 ; 119 break;
4501 02d9 L5562:
4502 ; 123 width--;
4504 02d9 0a07 dec (OFST+7,sp)
4505 ; 124 str++;
4507 02db 1e01 ldw x,(OFST+1,sp)
4508 02dd 1c0001 addw x,#1
4509 02e0 1f01 ldw (OFST+1,sp),x
4510 02e2 L7462:
4511 ; 88 while(width)
4513 02e2 0d07 tnz (OFST+7,sp)
4514 02e4 2703 jreq L26
4515 02e6 cc0247 jp L5462
4516 02e9 L26:
4517 ; 126 }
4520 02e9 85 popw x
4521 02ea 81 ret
4583 ; 128 void hexToAscii(u8* str,u16 hex,u8 width)
4583 ; 129 {
4584 switch .text
4585 02eb _hexToAscii:
4587 02eb 89 pushw x
4588 02ec 89 pushw x
4589 00000002 OFST: set 2
4592 02ed aca703a7 jpf L5272
4593 02f1 L3272:
4594 ; 133 switch(width)
4596 02f1 7b09 ld a,(OFST+7,sp)
4598 ; 163 default: *str = '0';
4599 02f3 4a dec a
4600 02f4 2603 jrne L07
4601 02f6 cc037b jp L5662
4602 02f9 L07:
4603 02f9 4a dec a
4604 02fa 2758 jreq L3662
4605 02fc 4a dec a
4606 02fd 2730 jreq L1662
4607 02ff 4a dec a
4608 0300 2709 jreq L7562
4609 0302 L7662:
4612 0302 1e03 ldw x,(OFST+1,sp)
4613 0304 a630 ld a,#48
4614 0306 f7 ld (x),a
4615 0307 ac9e039e jpf L3372
4616 030b L7562:
4617 ; 137 tmp = (hex >> 12);
4619 030b 1e07 ldw x,(OFST+5,sp)
4620 030d 01 rrwa x,a
4621 030e 4f clr a
4622 030f 41 exg a,xl
4623 0310 4e swap a
4624 0311 a40f and a,#15
4625 0313 02 rlwa x,a
4626 0314 1f01 ldw (OFST-1,sp),x
4627 ; 138 if(tmp > 9) *str = tmp + ('A' - 10);
4629 0316 1e01 ldw x,(OFST-1,sp)
4630 0318 a3000a cpw x,#10
4631 031b 2509 jrult L5372
4634 031d 7b02 ld a,(OFST+0,sp)
4635 031f ab37 add a,#55
4636 0321 1e03 ldw x,(OFST+1,sp)
4637 0323 f7 ld (x),a
4639 0324 2078 jra L3372
4640 0326 L5372:
4641 ; 139 else *str = tmp + '0';
4643 0326 7b02 ld a,(OFST+0,sp)
4644 0328 ab30 add a,#48
4645 032a 1e03 ldw x,(OFST+1,sp)
4646 032c f7 ld (x),a
4647 032d 206f jra L3372
4648 032f L1662:
4649 ; 144 tmp = (hex >> 8) & 0x000F;
4651 032f 1e07 ldw x,(OFST+5,sp)
4652 0331 4f clr a
4653 0332 01 rrwa x,a
4654 0333 01 rrwa x,a
4655 0334 a40f and a,#15
4656 0336 5f clrw x
4657 0337 02 rlwa x,a
4658 0338 1f01 ldw (OFST-1,sp),x
4659 033a 01 rrwa x,a
4660 ; 145 if(tmp > 9) *str = tmp + ('A' - 10);
4662 033b 1e01 ldw x,(OFST-1,sp)
4663 033d a3000a cpw x,#10
4664 0340 2509 jrult L1472
4667 0342 7b02 ld a,(OFST+0,sp)
4668 0344 ab37 add a,#55
4669 0346 1e03 ldw x,(OFST+1,sp)
4670 0348 f7 ld (x),a
4672 0349 2053 jra L3372
4673 034b L1472:
4674 ; 146 else *str = tmp + '0';
4676 034b 7b02 ld a,(OFST+0,sp)
4677 034d ab30 add a,#48
4678 034f 1e03 ldw x,(OFST+1,sp)
4679 0351 f7 ld (x),a
4680 0352 204a jra L3372
4681 0354 L3662:
4682 ; 151 tmp = (hex >> 4) & 0x000F;
4684 0354 1e07 ldw x,(OFST+5,sp)
4685 0356 54 srlw x
4686 0357 54 srlw x
4687 0358 54 srlw x
4688 0359 54 srlw x
4689 035a 01 rrwa x,a
4690 035b a40f and a,#15
4691 035d 5f clrw x
4692 035e 5f clrw x
4693 035f 97 ld xl,a
4694 0360 1f01 ldw (OFST-1,sp),x
4695 ; 152 if(tmp > 9) *str = tmp + ('A' - 10);
4697 0362 1e01 ldw x,(OFST-1,sp)
4698 0364 a3000a cpw x,#10
4699 0367 2509 jrult L5472
4702 0369 7b02 ld a,(OFST+0,sp)
4703 036b ab37 add a,#55
4704 036d 1e03 ldw x,(OFST+1,sp)
4705 036f f7 ld (x),a
4707 0370 202c jra L3372
4708 0372 L5472:
4709 ; 153 else *str = tmp + '0';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -