📄 main.ls
字号:
4161 02e1 L5742:
4162 ; 160 else *str = tmp + '0';
4164 02e1 7b02 ld a,(OFST+0,sp)
4165 02e3 ab30 add a,#48
4166 02e5 1e03 ldw x,(OFST+1,sp)
4167 02e7 f7 ld (x),a
4168 02e8 L7542:
4169 ; 165 width--;
4171 02e8 0a09 dec (OFST+7,sp)
4172 ; 166 str++;
4174 02ea 1e03 ldw x,(OFST+1,sp)
4175 02ec 1c0001 addw x,#1
4176 02ef 1f03 ldw (OFST+1,sp),x
4177 02f1 L1542:
4178 ; 131 while(width)
4180 02f1 0d09 tnz (OFST+7,sp)
4181 02f3 2703 jreq L25
4182 02f5 cc023b jp L7442
4183 02f8 L25:
4184 ; 168 }
4187 02f8 5b04 addw sp,#4
4188 02fa 81 ret
4281 ; 170 void showLine(const u8 x,const u8 y,u8* lcd_stack,char * str,...)
4281 ; 171 {
4282 switch .text
4283 02fb _showLine:
4285 02fb 89 pushw x
4286 02fc 5204 subw sp,#4
4287 00000004 OFST: set 4
4290 ; 172 u8 coordinate = 16 * y + x;
4292 02fe 9f ld a,xl
4293 02ff 97 ld xl,a
4294 0300 a610 ld a,#16
4295 0302 42 mul x,a
4296 0303 9f ld a,xl
4297 0304 1b05 add a,(OFST+1,sp)
4298 0306 6b04 ld (OFST+0,sp),a
4299 ; 175 va_start(marker,str); // Initialize variable arguments.
4301 0308 96 ldw x,sp
4302 0309 1c000d addw x,#OFST+9
4303 030c 1f02 ldw (OFST-2,sp),x
4304 ; 176 for(i=0;i<64;i++)
4306 030e 0f01 clr (OFST-3,sp)
4307 0310 L7452:
4310 0310 0c01 inc (OFST-3,sp)
4313 0312 7b01 ld a,(OFST-3,sp)
4314 0314 a140 cp a,#64
4315 0316 25f8 jrult L7452
4317 0318 ac260426 jpf L7552
4318 031c L5552:
4319 ; 182 if(coordinate > 64) break; //防止堆栈溢出
4321 031c 7b04 ld a,(OFST+0,sp)
4322 031e a141 cp a,#65
4323 0320 2503 jrult L3652
4325 0322 L1652:
4326 ; 217 va_end( marker ); // Reset variable arguments.
4328 ; 218 }
4331 0322 5b06 addw sp,#6
4332 0324 81 ret
4333 0325 L3652:
4334 ; 184 if(*str == '\\')
4336 0325 1e0b ldw x,(OFST+7,sp)
4337 0327 f6 ld a,(x)
4338 0328 a15c cp a,#92
4339 032a 261b jrne L5652
4340 ; 186 str++;
4342 032c 1e0b ldw x,(OFST+7,sp)
4343 032e 1c0001 addw x,#1
4344 0331 1f0b ldw (OFST+7,sp),x
4345 ; 187 lcd_stack[coordinate] = *str;
4347 0333 7b09 ld a,(OFST+5,sp)
4348 0335 97 ld xl,a
4349 0336 7b0a ld a,(OFST+6,sp)
4350 0338 1b04 add a,(OFST+0,sp)
4351 033a 2401 jrnc L65
4352 033c 5c incw x
4353 033d L65:
4354 033d 02 rlwa x,a
4355 033e 160b ldw y,(OFST+7,sp)
4356 0340 90f6 ld a,(y)
4357 0342 f7 ld (x),a
4359 0343 ac1d041d jpf L7652
4360 0347 L5652:
4361 ; 189 else if(*str == '%')
4363 0347 1e0b ldw x,(OFST+7,sp)
4364 0349 f6 ld a,(x)
4365 034a a125 cp a,#37
4366 034c 2703 jreq L07
4367 034e cc040d jp L1752
4368 0351 L07:
4369 ; 191 str++;
4371 0351 1e0b ldw x,(OFST+7,sp)
4372 0353 1c0001 addw x,#1
4373 0356 1f0b ldw (OFST+7,sp),x
4374 ; 192 if (*str == 'd' || *str == 'D')
4376 0358 1e0b ldw x,(OFST+7,sp)
4377 035a f6 ld a,(x)
4378 035b a164 cp a,#100
4379 035d 2707 jreq L5752
4381 035f 1e0b ldw x,(OFST+7,sp)
4382 0361 f6 ld a,(x)
4383 0362 a144 cp a,#68
4384 0364 2637 jrne L3752
4385 0366 L5752:
4386 ; 194 str++;
4388 0366 1e0b ldw x,(OFST+7,sp)
4389 0368 1c0001 addw x,#1
4390 036b 1f0b ldw (OFST+7,sp),x
4391 ; 195 decToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str-'0'));
4393 036d 1e0b ldw x,(OFST+7,sp)
4394 036f f6 ld a,(x)
4395 0370 a030 sub a,#48
4396 0372 88 push a
4397 0373 1e03 ldw x,(OFST-1,sp)
4398 0375 1c0002 addw x,#2
4399 0378 1f03 ldw (OFST-1,sp),x
4400 037a 1e03 ldw x,(OFST-1,sp)
4401 037c 5a decw x
4402 037d 5a decw x
4403 037e fe ldw x,(x)
4404 037f 89 pushw x
4405 0380 7b0c ld a,(OFST+8,sp)
4406 0382 97 ld xl,a
4407 0383 7b0d ld a,(OFST+9,sp)
4408 0385 1b07 add a,(OFST+3,sp)
4409 0387 2401 jrnc L06
4410 0389 5c incw x
4411 038a L06:
4412 038a 02 rlwa x,a
4413 038b cd018c call _decToAscii
4415 038e 5b03 addw sp,#3
4416 ; 196 coordinate += (*str-'0'-1);
4418 0390 1e0b ldw x,(OFST+7,sp)
4419 0392 f6 ld a,(x)
4420 0393 a031 sub a,#49
4421 0395 1b04 add a,(OFST+0,sp)
4422 0397 6b04 ld (OFST+0,sp),a
4424 0399 ac1d041d jpf L7652
4425 039d L3752:
4426 ; 198 else if(*str == 'c' || *str == 'C')
4428 039d 1e0b ldw x,(OFST+7,sp)
4429 039f f6 ld a,(x)
4430 03a0 a163 cp a,#99
4431 03a2 2707 jreq L3062
4433 03a4 1e0b ldw x,(OFST+7,sp)
4434 03a6 f6 ld a,(x)
4435 03a7 a143 cp a,#67
4436 03a9 261f jrne L1062
4437 03ab L3062:
4438 ; 200 lcd_stack[coordinate] = va_arg(marker,u16);
4440 03ab 7b09 ld a,(OFST+5,sp)
4441 03ad 97 ld xl,a
4442 03ae 7b0a ld a,(OFST+6,sp)
4443 03b0 1b04 add a,(OFST+0,sp)
4444 03b2 2401 jrnc L26
4445 03b4 5c incw x
4446 03b5 L26:
4447 03b5 02 rlwa x,a
4448 03b6 1602 ldw y,(OFST-2,sp)
4449 03b8 72a90002 addw y,#2
4450 03bc 1702 ldw (OFST-2,sp),y
4451 03be 1602 ldw y,(OFST-2,sp)
4452 03c0 905a decw y
4453 03c2 905a decw y
4454 03c4 90e601 ld a,(1,y)
4455 03c7 f7 ld (x),a
4457 03c8 2053 jra L7652
4458 03ca L1062:
4459 ; 202 else if(*str == 'x' || *str == 'X')
4461 03ca 1e0b ldw x,(OFST+7,sp)
4462 03cc f6 ld a,(x)
4463 03cd a178 cp a,#120
4464 03cf 2707 jreq L1162
4466 03d1 1e0b ldw x,(OFST+7,sp)
4467 03d3 f6 ld a,(x)
4468 03d4 a158 cp a,#88
4469 03d6 2645 jrne L7652
4470 03d8 L1162:
4471 ; 204 str++;
4473 03d8 1e0b ldw x,(OFST+7,sp)
4474 03da 1c0001 addw x,#1
4475 03dd 1f0b ldw (OFST+7,sp),x
4476 ; 205 hexToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str - '0'));
4478 03df 1e0b ldw x,(OFST+7,sp)
4479 03e1 f6 ld a,(x)
4480 03e2 a030 sub a,#48
4481 03e4 88 push a
4482 03e5 1e03 ldw x,(OFST-1,sp)
4483 03e7 1c0002 addw x,#2
4484 03ea 1f03 ldw (OFST-1,sp),x
4485 03ec 1e03 ldw x,(OFST-1,sp)
4486 03ee 5a decw x
4487 03ef 5a decw x
4488 03f0 fe ldw x,(x)
4489 03f1 89 pushw x
4490 03f2 7b0c ld a,(OFST+8,sp)
4491 03f4 97 ld xl,a
4492 03f5 7b0d ld a,(OFST+9,sp)
4493 03f7 1b07 add a,(OFST+3,sp)
4494 03f9 2401 jrnc L46
4495 03fb 5c incw x
4496 03fc L46:
4497 03fc 02 rlwa x,a
4498 03fd cd0235 call _hexToAscii
4500 0400 5b03 addw sp,#3
4501 ; 206 coordinate += (*str - '0' - 1);
4503 0402 1e0b ldw x,(OFST+7,sp)
4504 0404 f6 ld a,(x)
4505 0405 a031 sub a,#49
4506 0407 1b04 add a,(OFST+0,sp)
4507 0409 6b04 ld (OFST+0,sp),a
4508 040b 2010 jra L7652
4509 040d L1752:
4510 ; 212 lcd_stack[coordinate] = *str;
4512 040d 7b09 ld a,(OFST+5,sp)
4513 040f 97 ld xl,a
4514 0410 7b0a ld a,(OFST+6,sp)
4515 0412 1b04 add a,(OFST+0,sp)
4516 0414 2401 jrnc L66
4517 0416 5c incw x
4518 0417 L66:
4519 0417 02 rlwa x,a
4520 0418 160b ldw y,(OFST+7,sp)
4521 041a 90f6 ld a,(y)
4522 041c f7 ld (x),a
4523 041d L7652:
4524 ; 214 str++;
4526 041d 1e0b ldw x,(OFST+7,sp)
4527 041f 1c0001 addw x,#1
4528 0422 1f0b ldw (OFST+7,sp),x
4529 ; 215 coordinate++;
4531 0424 0c04 inc (OFST+0,sp)
4532 0426 L7552:
4533 ; 180 while(*str != '\0')
4535 0426 1e0b ldw x,(OFST+7,sp)
4536 0428 7d tnz (x)
4537 0429 2703 jreq L27
4538 042b cc031c jp L5552
4539 042e L27:
4540 042e ac220322 jpf L1652
4613 ; 19 void main(void)
4613 ; 20 {
4614 switch .text
4615 0432 _main:
4619 ; 21 st7920LcdInit();
4621 0432 cd0082 call _st7920LcdInit
4623 ; 22 showLine(2,1,lcd_buffer,"深圳微雪电子");
4625 0435 ae000e ldw x,#L7462
4626 0438 89 pushw x
4627 0439 ae0000 ldw x,#_lcd_buffer
4628 043c 89 pushw x
4629 043d ae0001 ldw x,#1
4630 0440 a602 ld a,#2
4631 0442 95 ld xh,a
4632 0443 cd02fb call _showLine
4634 0446 5b04 addw sp,#4
4635 ; 23 showLine(2,2,lcd_buffer,"waveshare.net");
4637 0448 ae0000 ldw x,#L1562
4638 044b 89 pushw x
4639 044c ae0000 ldw x,#_lcd_buffer
4640 044f 89 pushw x
4641 0450 ae0002 ldw x,#2
4642 0453 a602 ld a,#2
4643 0455 95 ld xh,a
4644 0456 cd02fb call _showLine
4646 0459 5b04 addw sp,#4
4647 ; 24 refreshLCD(lcd_buffer); //刷新LCD
4649 045b ae0000 ldw x,#_lcd_buffer
4650 045e cd011c call _refreshLCD
4652 0461 L3562:
4653 ; 25 while (1);
4655 0461 20fe jra L3562
4668 xdef _main
4669 xdef _SPI_rechar
4670 xdef _SPI_sendchar
4671 xdef _SPI_Init
4672 switch .ubsct
4673 0000 _lcd_buffer:
4674 0000 000000000000 ds.b 64
4675 xdef _lcd_buffer
4676 xdef _showLine
4677 xdef _hexToAscii
4678 xdef _decToAscii
4679 xdef _refreshLCD
4680 xdef _st7920LcdInit
4681 xdef _sendDataST7920
4682 xdef _sendCodeST7920
4683 xdef _delay_us
4684 xdef _delay_ms
4685 .const: section .text
4686 0000 L1562:
4687 0000 776176657368 dc.b "waveshare.net",0
4688 000e L7462:
4689 000e c9eedbdacea2 dc.b 201,238,219,218,206,162
4690 0014 d1a9b5e7d7d3 dc.b 209,169,181,231,215,211,0
4710 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -