📄 main.ls
字号:
4106 02c4 2023 jra L1242
4107 02c6 L1632:
4108 ; 158 tmp = hex & 0x000F;
4110 02c6 7b07 ld a,(OFST+5,sp)
4111 02c8 97 ld xl,a
4112 02c9 7b08 ld a,(OFST+6,sp)
4113 02cb a40f and a,#15
4114 02cd 5f clrw x
4115 02ce 02 rlwa x,a
4116 02cf 1f01 ldw (OFST-1,sp),x
4117 02d1 01 rrwa x,a
4118 ; 159 if(tmp > 9) *str = tmp + ('A' - 10);
4120 02d2 1e01 ldw x,(OFST-1,sp)
4121 02d4 a3000a cpw x,#10
4122 02d7 2509 jrult L7342
4125 02d9 7b02 ld a,(OFST+0,sp)
4126 02db ab37 add a,#55
4127 02dd 1e03 ldw x,(OFST+1,sp)
4128 02df f7 ld (x),a
4130 02e0 2007 jra L1242
4131 02e2 L7342:
4132 ; 160 else *str = tmp + '0';
4134 02e2 7b02 ld a,(OFST+0,sp)
4135 02e4 ab30 add a,#48
4136 02e6 1e03 ldw x,(OFST+1,sp)
4137 02e8 f7 ld (x),a
4138 02e9 L1242:
4139 ; 165 width--;
4141 02e9 0a09 dec (OFST+7,sp)
4142 ; 166 str++;
4144 02eb 1e03 ldw x,(OFST+1,sp)
4145 02ed 1c0001 addw x,#1
4146 02f0 1f03 ldw (OFST+1,sp),x
4147 02f2 L3142:
4148 ; 131 while(width)
4150 02f2 0d09 tnz (OFST+7,sp)
4151 02f4 2703 jreq L25
4152 02f6 cc023c jp L1142
4153 02f9 L25:
4154 ; 168 }
4157 02f9 5b04 addw sp,#4
4158 02fb 81 ret
4247 ; 170 void showLine(const u8 x,const u8 y,u8* lcd_stack,char * str,...)
4247 ; 171 {
4248 switch .text
4249 02fc _showLine:
4251 02fc 89 pushw x
4252 02fd 5204 subw sp,#4
4253 00000004 OFST: set 4
4256 ; 172 u8 coordinate = 16 * y + x;
4258 02ff 9f ld a,xl
4259 0300 97 ld xl,a
4260 0301 a610 ld a,#16
4261 0303 42 mul x,a
4262 0304 9f ld a,xl
4263 0305 1b05 add a,(OFST+1,sp)
4264 0307 6b04 ld (OFST+0,sp),a
4265 ; 175 va_start(marker,str); // Initialize variable arguments.
4267 0309 96 ldw x,sp
4268 030a 1c000d addw x,#OFST+9
4269 030d 1f02 ldw (OFST-2,sp),x
4270 ; 176 for(i=0;i<64;i++)
4272 030f 0f01 clr (OFST-3,sp)
4273 0311 L5052:
4276 0311 0c01 inc (OFST-3,sp)
4279 0313 7b01 ld a,(OFST-3,sp)
4280 0315 a140 cp a,#64
4281 0317 25f8 jrult L5052
4283 0319 ac270427 jpf L5152
4284 031d L3152:
4285 ; 182 if(coordinate > 64) break; //防止堆栈溢出
4287 031d 7b04 ld a,(OFST+0,sp)
4288 031f a141 cp a,#65
4289 0321 2503 jrult L1252
4291 0323 L7152:
4292 ; 217 va_end( marker ); // Reset variable arguments.
4294 ; 218 }
4297 0323 5b06 addw sp,#6
4298 0325 81 ret
4299 0326 L1252:
4300 ; 184 if(*str == '\\')
4302 0326 1e0b ldw x,(OFST+7,sp)
4303 0328 f6 ld a,(x)
4304 0329 a15c cp a,#92
4305 032b 261b jrne L3252
4306 ; 186 str++;
4308 032d 1e0b ldw x,(OFST+7,sp)
4309 032f 1c0001 addw x,#1
4310 0332 1f0b ldw (OFST+7,sp),x
4311 ; 187 lcd_stack[coordinate] = *str;
4313 0334 7b09 ld a,(OFST+5,sp)
4314 0336 97 ld xl,a
4315 0337 7b0a ld a,(OFST+6,sp)
4316 0339 1b04 add a,(OFST+0,sp)
4317 033b 2401 jrnc L65
4318 033d 5c incw x
4319 033e L65:
4320 033e 02 rlwa x,a
4321 033f 160b ldw y,(OFST+7,sp)
4322 0341 90f6 ld a,(y)
4323 0343 f7 ld (x),a
4325 0344 ac1e041e jpf L5252
4326 0348 L3252:
4327 ; 189 else if(*str == '%')
4329 0348 1e0b ldw x,(OFST+7,sp)
4330 034a f6 ld a,(x)
4331 034b a125 cp a,#37
4332 034d 2703 jreq L07
4333 034f cc040e jp L7252
4334 0352 L07:
4335 ; 191 str++;
4337 0352 1e0b ldw x,(OFST+7,sp)
4338 0354 1c0001 addw x,#1
4339 0357 1f0b ldw (OFST+7,sp),x
4340 ; 192 if (*str == 'd' || *str == 'D')
4342 0359 1e0b ldw x,(OFST+7,sp)
4343 035b f6 ld a,(x)
4344 035c a164 cp a,#100
4345 035e 2707 jreq L3352
4347 0360 1e0b ldw x,(OFST+7,sp)
4348 0362 f6 ld a,(x)
4349 0363 a144 cp a,#68
4350 0365 2637 jrne L1352
4351 0367 L3352:
4352 ; 194 str++;
4354 0367 1e0b ldw x,(OFST+7,sp)
4355 0369 1c0001 addw x,#1
4356 036c 1f0b ldw (OFST+7,sp),x
4357 ; 195 decToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str-'0'));
4359 036e 1e0b ldw x,(OFST+7,sp)
4360 0370 f6 ld a,(x)
4361 0371 a030 sub a,#48
4362 0373 88 push a
4363 0374 1e03 ldw x,(OFST-1,sp)
4364 0376 1c0002 addw x,#2
4365 0379 1f03 ldw (OFST-1,sp),x
4366 037b 1e03 ldw x,(OFST-1,sp)
4367 037d 5a decw x
4368 037e 5a decw x
4369 037f fe ldw x,(x)
4370 0380 89 pushw x
4371 0381 7b0c ld a,(OFST+8,sp)
4372 0383 97 ld xl,a
4373 0384 7b0d ld a,(OFST+9,sp)
4374 0386 1b07 add a,(OFST+3,sp)
4375 0388 2401 jrnc L06
4376 038a 5c incw x
4377 038b L06:
4378 038b 02 rlwa x,a
4379 038c cd018d call _decToAscii
4381 038f 5b03 addw sp,#3
4382 ; 196 coordinate += (*str-'0'-1);
4384 0391 1e0b ldw x,(OFST+7,sp)
4385 0393 f6 ld a,(x)
4386 0394 a031 sub a,#49
4387 0396 1b04 add a,(OFST+0,sp)
4388 0398 6b04 ld (OFST+0,sp),a
4390 039a ac1e041e jpf L5252
4391 039e L1352:
4392 ; 198 else if(*str == 'c' || *str == 'C')
4394 039e 1e0b ldw x,(OFST+7,sp)
4395 03a0 f6 ld a,(x)
4396 03a1 a163 cp a,#99
4397 03a3 2707 jreq L1452
4399 03a5 1e0b ldw x,(OFST+7,sp)
4400 03a7 f6 ld a,(x)
4401 03a8 a143 cp a,#67
4402 03aa 261f jrne L7352
4403 03ac L1452:
4404 ; 200 lcd_stack[coordinate] = va_arg(marker,u16);
4406 03ac 7b09 ld a,(OFST+5,sp)
4407 03ae 97 ld xl,a
4408 03af 7b0a ld a,(OFST+6,sp)
4409 03b1 1b04 add a,(OFST+0,sp)
4410 03b3 2401 jrnc L26
4411 03b5 5c incw x
4412 03b6 L26:
4413 03b6 02 rlwa x,a
4414 03b7 1602 ldw y,(OFST-2,sp)
4415 03b9 72a90002 addw y,#2
4416 03bd 1702 ldw (OFST-2,sp),y
4417 03bf 1602 ldw y,(OFST-2,sp)
4418 03c1 905a decw y
4419 03c3 905a decw y
4420 03c5 90e601 ld a,(1,y)
4421 03c8 f7 ld (x),a
4423 03c9 2053 jra L5252
4424 03cb L7352:
4425 ; 202 else if(*str == 'x' || *str == 'X')
4427 03cb 1e0b ldw x,(OFST+7,sp)
4428 03cd f6 ld a,(x)
4429 03ce a178 cp a,#120
4430 03d0 2707 jreq L7452
4432 03d2 1e0b ldw x,(OFST+7,sp)
4433 03d4 f6 ld a,(x)
4434 03d5 a158 cp a,#88
4435 03d7 2645 jrne L5252
4436 03d9 L7452:
4437 ; 204 str++;
4439 03d9 1e0b ldw x,(OFST+7,sp)
4440 03db 1c0001 addw x,#1
4441 03de 1f0b ldw (OFST+7,sp),x
4442 ; 205 hexToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str - '0'));
4444 03e0 1e0b ldw x,(OFST+7,sp)
4445 03e2 f6 ld a,(x)
4446 03e3 a030 sub a,#48
4447 03e5 88 push a
4448 03e6 1e03 ldw x,(OFST-1,sp)
4449 03e8 1c0002 addw x,#2
4450 03eb 1f03 ldw (OFST-1,sp),x
4451 03ed 1e03 ldw x,(OFST-1,sp)
4452 03ef 5a decw x
4453 03f0 5a decw x
4454 03f1 fe ldw x,(x)
4455 03f2 89 pushw x
4456 03f3 7b0c ld a,(OFST+8,sp)
4457 03f5 97 ld xl,a
4458 03f6 7b0d ld a,(OFST+9,sp)
4459 03f8 1b07 add a,(OFST+3,sp)
4460 03fa 2401 jrnc L46
4461 03fc 5c incw x
4462 03fd L46:
4463 03fd 02 rlwa x,a
4464 03fe cd0236 call _hexToAscii
4466 0401 5b03 addw sp,#3
4467 ; 206 coordinate += (*str - '0' - 1);
4469 0403 1e0b ldw x,(OFST+7,sp)
4470 0405 f6 ld a,(x)
4471 0406 a031 sub a,#49
4472 0408 1b04 add a,(OFST+0,sp)
4473 040a 6b04 ld (OFST+0,sp),a
4474 040c 2010 jra L5252
4475 040e L7252:
4476 ; 212 lcd_stack[coordinate] = *str;
4478 040e 7b09 ld a,(OFST+5,sp)
4479 0410 97 ld xl,a
4480 0411 7b0a ld a,(OFST+6,sp)
4481 0413 1b04 add a,(OFST+0,sp)
4482 0415 2401 jrnc L66
4483 0417 5c incw x
4484 0418 L66:
4485 0418 02 rlwa x,a
4486 0419 160b ldw y,(OFST+7,sp)
4487 041b 90f6 ld a,(y)
4488 041d f7 ld (x),a
4489 041e L5252:
4490 ; 214 str++;
4492 041e 1e0b ldw x,(OFST+7,sp)
4493 0420 1c0001 addw x,#1
4494 0423 1f0b ldw (OFST+7,sp),x
4495 ; 215 coordinate++;
4497 0425 0c04 inc (OFST+0,sp)
4498 0427 L5152:
4499 ; 180 while(*str != '\0')
4501 0427 1e0b ldw x,(OFST+7,sp)
4502 0429 7d tnz (x)
4503 042a 2703 jreq L27
4504 042c cc031d jp L3152
4505 042f L27:
4506 042f ac230323 jpf L7152
4596 ; 71 void main(void)
4596 ; 72 {
4597 switch .text
4598 0433 _main:
4600 0433 88 push a
4601 00000001 OFST: set 1
4604 ; 75 unsigned char value = 100;
4606 ; 77 in_range = (value >= 10) && (value <= 20);
4608 0434 72110001 bres _in_range
4609 ; 78 p_valid = ptr; /* p_valid is true if ptr not 0 */
4611 0438 ce0000 ldw x,_ptr
4612 043b 2602 jrne L201
4613 043d 2006 jp L67
4614 043f L201:
4615 043f 72100000 bset _p_valid
4616 0443 2004 jra L001
4617 0445 L67:
4618 0445 72110000 bres _p_valid
4619 0449 L001:
4620 ; 81 CLK->CKDIVR = 0x00; // Main freq divided by 1 = Full Freq
4622 0449 725f50c6 clr 20678
4623 ; 83 TSL_Init();
4625 044d cd0000 call _TSL_Init
4627 ; 84 ExtraCode_Init();
4629 0450 ad5c call _ExtraCode_Init
4631 ; 85 delay_ms(900);
4633 0452 ae0384 ldw x,#900
4634 0455 cd0000 call _delay_ms
4636 ; 86 st7920LcdInit();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -