📄 main.ls
字号:
3902 01ab 721b5014 bres _PE_ODR,#5
3903 ; 60 LCD_DELAY()
3906 01af 9d nop
3911 01b0 9d nop
3916 01b1 9d nop
3921 01b2 9d nop
3926 01b3 9d nop
3928 ; 61 }
3931 01b4 84 pop a
3932 01b5 81 ret
3978 ; 63 void refreshLCD(const u8 *lcd_stack)
3978 ; 64 {
3979 switch .text
3980 01b6 _refreshLCD:
3982 01b6 89 pushw x
3983 01b7 88 push a
3984 00000001 OFST: set 1
3987 ; 66 sendCodeST7920(0x02); //地址归位
3989 01b8 a602 ld a,#2
3990 01ba ad95 call _sendCodeST7920
3992 ; 67 for(addr=0;addr<16;addr++)
3994 01bc 0f01 clr (OFST+0,sp)
3995 01be L1242:
3996 ; 69 sendDataST7920(*(lcd_stack + addr));
3998 01be 7b02 ld a,(OFST+1,sp)
3999 01c0 97 ld xl,a
4000 01c1 7b03 ld a,(OFST+2,sp)
4001 01c3 1b01 add a,(OFST+0,sp)
4002 01c5 2401 jrnc L63
4003 01c7 5c incw x
4004 01c8 L63:
4005 01c8 02 rlwa x,a
4006 01c9 f6 ld a,(x)
4007 01ca adb6 call _sendDataST7920
4009 ; 67 for(addr=0;addr<16;addr++)
4011 01cc 0c01 inc (OFST+0,sp)
4014 01ce 7b01 ld a,(OFST+0,sp)
4015 01d0 a110 cp a,#16
4016 01d2 25ea jrult L1242
4017 ; 71 for(addr=32;addr<48;addr++)
4019 01d4 a620 ld a,#32
4020 01d6 6b01 ld (OFST+0,sp),a
4021 01d8 L7242:
4022 ; 73 sendDataST7920(*(lcd_stack + addr));
4024 01d8 7b02 ld a,(OFST+1,sp)
4025 01da 97 ld xl,a
4026 01db 7b03 ld a,(OFST+2,sp)
4027 01dd 1b01 add a,(OFST+0,sp)
4028 01df 2401 jrnc L04
4029 01e1 5c incw x
4030 01e2 L04:
4031 01e2 02 rlwa x,a
4032 01e3 f6 ld a,(x)
4033 01e4 ad9c call _sendDataST7920
4035 ; 71 for(addr=32;addr<48;addr++)
4037 01e6 0c01 inc (OFST+0,sp)
4040 01e8 7b01 ld a,(OFST+0,sp)
4041 01ea a130 cp a,#48
4042 01ec 25ea jrult L7242
4043 ; 75 for(addr=16;addr<32;addr++)
4045 01ee a610 ld a,#16
4046 01f0 6b01 ld (OFST+0,sp),a
4047 01f2 L5342:
4048 ; 77 sendDataST7920(*(lcd_stack + addr));
4050 01f2 7b02 ld a,(OFST+1,sp)
4051 01f4 97 ld xl,a
4052 01f5 7b03 ld a,(OFST+2,sp)
4053 01f7 1b01 add a,(OFST+0,sp)
4054 01f9 2401 jrnc L24
4055 01fb 5c incw x
4056 01fc L24:
4057 01fc 02 rlwa x,a
4058 01fd f6 ld a,(x)
4059 01fe ad82 call _sendDataST7920
4061 ; 75 for(addr=16;addr<32;addr++)
4063 0200 0c01 inc (OFST+0,sp)
4066 0202 7b01 ld a,(OFST+0,sp)
4067 0204 a120 cp a,#32
4068 0206 25ea jrult L5342
4069 ; 80 for(addr=48;addr<64;addr++)
4071 0208 a630 ld a,#48
4072 020a 6b01 ld (OFST+0,sp),a
4073 020c L3442:
4074 ; 82 sendDataST7920(*(lcd_stack + addr));
4076 020c 7b02 ld a,(OFST+1,sp)
4077 020e 97 ld xl,a
4078 020f 7b03 ld a,(OFST+2,sp)
4079 0211 1b01 add a,(OFST+0,sp)
4080 0213 2401 jrnc L44
4081 0215 5c incw x
4082 0216 L44:
4083 0216 02 rlwa x,a
4084 0217 f6 ld a,(x)
4085 0218 cd0182 call _sendDataST7920
4087 ; 80 for(addr=48;addr<64;addr++)
4089 021b 0c01 inc (OFST+0,sp)
4092 021d 7b01 ld a,(OFST+0,sp)
4093 021f a140 cp a,#64
4094 0221 25e9 jrult L3442
4095 ; 84 }
4098 0223 5b03 addw sp,#3
4099 0225 81 ret
4152 ; 86 void decToAscii(u8* str,u16 dec,u8 width)
4152 ; 87 {
4153 switch .text
4154 0226 _decToAscii:
4156 0226 89 pushw x
4157 00000000 OFST: set 0
4160 0227 acc602c6 jpf L5152
4161 022b L3152:
4162 ; 90 switch(width)
4164 022b 7b07 ld a,(OFST+7,sp)
4166 ; 121 default: *str = '0';
4167 022d 4a dec a
4168 022e 2603cc02b6 jreq L1642
4169 0233 4a dec a
4170 0234 2764 jreq L7542
4171 0236 4a dec a
4172 0237 2745 jreq L5542
4173 0239 4a dec a
4174 023a 2726 jreq L3542
4175 023c 4a dec a
4176 023d 2707 jreq L1542
4177 023f L3642:
4180 023f 1e01 ldw x,(OFST+1,sp)
4181 0241 a630 ld a,#48
4182 0243 f7 ld (x),a
4183 0244 2077 jra L3252
4184 0246 L1542:
4185 ; 94 *str = (dec / 10000 + '0');
4187 0246 1e05 ldw x,(OFST+5,sp)
4188 0248 90ae2710 ldw y,#10000
4189 024c 65 divw x,y
4190 024d 1c0030 addw x,#48
4191 0250 1601 ldw y,(OFST+1,sp)
4192 0252 01 rrwa x,a
4193 0253 90f7 ld (y),a
4194 0255 02 rlwa x,a
4195 ; 95 dec %= 10000;
4197 0256 1e05 ldw x,(OFST+5,sp)
4198 0258 90ae2710 ldw y,#10000
4199 025c 65 divw x,y
4200 025d 51 exgw x,y
4201 025e 1f05 ldw (OFST+5,sp),x
4202 ; 96 break;
4204 0260 205b jra L3252
4205 0262 L3542:
4206 ; 100 *str = (dec / 1000 + '0');
4208 0262 1e05 ldw x,(OFST+5,sp)
4209 0264 90ae03e8 ldw y,#1000
4210 0268 65 divw x,y
4211 0269 1c0030 addw x,#48
4212 026c 1601 ldw y,(OFST+1,sp)
4213 026e 01 rrwa x,a
4214 026f 90f7 ld (y),a
4215 0271 02 rlwa x,a
4216 ; 101 dec %= 1000;
4218 0272 1e05 ldw x,(OFST+5,sp)
4219 0274 90ae03e8 ldw y,#1000
4220 0278 65 divw x,y
4221 0279 51 exgw x,y
4222 027a 1f05 ldw (OFST+5,sp),x
4223 ; 102 break;
4225 027c 203f jra L3252
4226 027e L5542:
4227 ; 106 *str = (dec/100+'0');
4229 027e 1e05 ldw x,(OFST+5,sp)
4230 0280 90ae0064 ldw y,#100
4231 0284 65 divw x,y
4232 0285 1c0030 addw x,#48
4233 0288 1601 ldw y,(OFST+1,sp)
4234 028a 01 rrwa x,a
4235 028b 90f7 ld (y),a
4236 028d 02 rlwa x,a
4237 ; 107 dec %= 100;
4239 028e 1e05 ldw x,(OFST+5,sp)
4240 0290 90ae0064 ldw y,#100
4241 0294 65 divw x,y
4242 0295 51 exgw x,y
4243 0296 1f05 ldw (OFST+5,sp),x
4244 ; 108 break;
4246 0298 2023 jra L3252
4247 029a L7542:
4248 ; 112 *str = (dec/10+'0');
4250 029a 1e05 ldw x,(OFST+5,sp)
4251 029c 90ae000a ldw y,#10
4252 02a0 65 divw x,y
4253 02a1 1c0030 addw x,#48
4254 02a4 1601 ldw y,(OFST+1,sp)
4255 02a6 01 rrwa x,a
4256 02a7 90f7 ld (y),a
4257 02a9 02 rlwa x,a
4258 ; 113 dec %= 10;
4260 02aa 1e05 ldw x,(OFST+5,sp)
4261 02ac 90ae000a ldw y,#10
4262 02b0 65 divw x,y
4263 02b1 51 exgw x,y
4264 02b2 1f05 ldw (OFST+5,sp),x
4265 ; 114 break;
4267 02b4 2007 jra L3252
4268 02b6 L1642:
4269 ; 118 *str = (dec+'0');
4271 02b6 7b06 ld a,(OFST+6,sp)
4272 02b8 ab30 add a,#48
4273 02ba 1e01 ldw x,(OFST+1,sp)
4274 02bc f7 ld (x),a
4275 ; 119 break;
4277 02bd L3252:
4278 ; 123 width--;
4280 02bd 0a07 dec (OFST+7,sp)
4281 ; 124 str++;
4283 02bf 1e01 ldw x,(OFST+1,sp)
4284 02c1 1c0001 addw x,#1
4285 02c4 1f01 ldw (OFST+1,sp),x
4286 02c6 L5152:
4287 ; 88 while(width)
4289 02c6 0d07 tnz (OFST+7,sp)
4290 02c8 2703 jreq L25
4291 02ca cc022b jp L3152
4292 02cd L25:
4293 ; 126 }
4296 02cd 85 popw x
4297 02ce 81 ret
4359 ; 128 void hexToAscii(u8* str,u16 hex,u8 width)
4359 ; 129 {
4360 switch .text
4361 02cf _hexToAscii:
4363 02cf 89 pushw x
4364 02d0 89 pushw x
4365 00000002 OFST: set 2
4368 02d1 ac8b038b jpf L3752
4369 02d5 L1752:
4370 ; 133 switch(width)
4372 02d5 7b09 ld a,(OFST+7,sp)
4374 ; 163 default: *str = '0';
4375 02d7 4a dec a
4376 02d8 2603 jrne L06
4377 02da cc035f jp L3352
4378 02dd L06:
4379 02dd 4a dec a
4380 02de 2758 jreq L1352
4381 02e0 4a dec a
4382 02e1 2730 jreq L7252
4383 02e3 4a dec a
4384 02e4 2709 jreq L5252
4385 02e6 L5352:
4388 02e6 1e03 ldw x,(OFST+1,sp)
4389 02e8 a630 ld a,#48
4390 02ea f7 ld (x),a
4391 02eb ac820382 jpf L1062
4392 02ef L5252:
4393 ; 137 tmp = (hex >> 12);
4395 02ef 1e07 ldw x,(OFST+5,sp)
4396 02f1 01 rrwa x,a
4397 02f2 4f clr a
4398 02f3 41 exg a,xl
4399 02f4 4e swap a
4400 02f5 a40f and a,#15
4401 02f7 02 rlwa x,a
4402 02f8 1f01 ldw (OFST-1,sp),x
4403 ; 138 if(tmp > 9) *str = tmp + ('A' - 10);
4405 02fa 1e01 ldw x,(OFST-1,sp)
4406 02fc a3000a cpw x,#10
4407 02ff 2509 jrult L3062
4410 0301 7b02 ld a,(OFST+0,sp)
4411 0303 ab37 add a,#55
4412 0305 1e03 ldw x,(OFST+1,sp)
4413 0307 f7 ld (x),a
4415 0308 2078 jra L1062
4416 030a L3062:
4417 ; 139 else *str = tmp + '0';
4419 030a 7b02 ld a,(OFST+0,sp)
4420 030c ab30 add a,#48
4421 030e 1e03 ldw x,(OFST+1,sp)
4422 0310 f7 ld (x),a
4423 0311 206f jra L1062
4424 0313 L7252:
4425 ; 144 tmp = (hex >> 8) & 0x000F;
4427 0313 1e07 ldw x,(OFST+5,sp)
4428 0315 4f clr a
4429 0316 01 rrwa x,a
4430 0317 01 rrwa x,a
4431 0318 a40f and a,#15
4432 031a 5f clrw x
4433 031b 02 rlwa x,a
4434 031c 1f01 ldw (OFST-1,sp),x
4435 031e 01 rrwa x,a
4436 ; 145 if(tmp > 9) *str = tmp + ('A' - 10);
4438 031f 1e01 ldw x,(OFST-1,sp)
4439 0321 a3000a cpw x,#10
4440 0324 2509 jrult L7062
4443 0326 7b02 ld a,(OFST+0,sp)
4444 0328 ab37 add a,#55
4445 032a 1e03 ldw x,(OFST+1,sp)
4446 032c f7 ld (x),a
4448 032d 2053 jra L1062
4449 032f L7062:
4450 ; 146 else *str = tmp + '0';
4452 032f 7b02 ld a,(OFST+0,sp)
4453 0331 ab30 add a,#48
4454 0333 1e03 ldw x,(OFST+1,sp)
4455 0335 f7 ld (x),a
4456 0336 204a jra L1062
4457 0338 L1352:
4458 ; 151 tmp = (hex >> 4) & 0x000F;
4460 0338 1e07 ldw x,(OFST+5,sp)
4461 033a 54 srlw x
4462 033b 54 srlw x
4463 033c 54 srlw x
4464 033d 54 srlw x
4465 033e 01 rrwa x,a
4466 033f a40f and a,#15
4467 0341 5f clrw x
4468 0342 5f clrw x
4469 0343 97 ld xl,a
4470 0344 1f01 ldw (OFST-1,sp),x
4471 ; 152 if(tmp > 9) *str = tmp + ('A' - 10);
4473 0346 1e01 ldw x,(OFST-1,sp)
4474 0348 a3000a cpw x,#10
4475 034b 2509 jrult L3162
4478 034d 7b02 ld a,(OFST+0,sp)
4479 034f ab37 add a,#55
4480 0351 1e03 ldw x,(OFST+1,sp)
4481 0353 f7 ld (x),a
4483 0354 202c jra L1062
4484 0356 L3162:
4485 ; 153 else *str = tmp + '0';
4487 0356 7b02 ld a,(OFST+0,sp)
4488 0358 ab30 add a,#48
4489 035a 1e03 ldw x,(OFST+1,sp)
4490 035c f7 ld (x),a
4491 035d 2023 jra L1062
4492 035f L3352:
4493 ; 158 tmp = hex & 0x000F;
4495 035f 7b07 ld a,(OFST+5,sp)
4496 0361 97 ld xl,a
4497 0362 7b08 ld a,(OFST+6,sp)
4498 0364 a40f and a,#15
4499 0366 5f clrw x
4500 0367 02 rlwa x,a
4501 0368 1f01 ldw (OFST-1,sp),x
4502 036a 01 rrwa x,a
4503 ; 159 if(tmp > 9) *str = tmp + ('A' - 10);
4505 036b 1e01 ldw x,(OFST-1,sp)
4506 036d a3000a cpw x,#10
4507 0370 2509 jrult L7162
4510 0372 7b02 ld a,(OFST+0,sp)
4511 0374 ab37 add a,#55
4512 0376 1e03 ldw x,(OFST+1,sp)
4513 0378 f7 ld (x),a
4515 0379 2007 jra L1062
4516 037b L7162:
4517 ; 160 else *str = tmp + '0';
4519 037b 7b02 ld a,(OFST+0,sp)
4520 037d ab30 add a,#48
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -