📄 main.ls
字号:
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
4614 ; 20 void Init_UART2(void)
4614 ; 21 {
4615 switch .text
4616 0432 _Init_UART2:
4620 ; 22 UART2_CR1=0x00;
4622 0432 725f5244 clr _UART2_CR1
4623 ; 23 UART2_CR2=0x00;
4625 0436 725f5245 clr _UART2_CR2
4626 ; 24 UART2_CR3=0x00;
4628 043a 725f5246 clr _UART2_CR3
4629 ; 35 UART2_BRR2=0x00;
4631 043e 725f5243 clr _UART2_BRR2
4632 ; 36 UART2_BRR1=0x0d;
4634 0442 350d5242 mov _UART2_BRR1,#13
4635 ; 38 UART2_CR2=0x2c;//允许接收,发送,开接收中断
4637 0446 352c5245 mov _UART2_CR2,#44
4638 ; 40 }
4641 044a 81 ret
4677 ; 42 void UART2_sendchar(u8 data)
4677 ; 43 {
4678 switch .text
4679 044b _UART2_sendchar:
4681 044b 88 push a
4682 00000000 OFST: set 0
4685 044c L7662:
4686 ; 44 while((UART2_SR & 0x80)==0x00);
4688 044c c65240 ld a,_UART2_SR
4689 044f a580 bcp a,#128
4690 0451 27f9 jreq L7662
4691 ; 45 UART2_DR=data;
4693 0453 7b01 ld a,(OFST+1,sp)
4694 0455 c75241 ld _UART2_DR,a
4695 ; 46 }
4698 0458 84 pop a
4699 0459 81 ret
4737 ; 48 @far @interrupt void UART2_Recv_IRQHandler (void)
4737 ; 49 {
4739 switch .text
4740 045a f_UART2_Recv_IRQHandler:
4742 00000001 OFST: set 1
4743 045a 3b0002 push c_x+2
4744 045d be00 ldw x,c_x
4745 045f 89 pushw x
4746 0460 3b0002 push c_y+2
4747 0463 be00 ldw x,c_y
4748 0465 89 pushw x
4749 0466 88 push a
4752 ; 51 data=UART2_DR;
4754 0467 c65241 ld a,_UART2_DR
4755 046a 6b01 ld (OFST+0,sp),a
4756 ; 52 showLine(6,2,lcd_buffer,"0x%x2",(u16)data);
4758 046c 7b01 ld a,(OFST+0,sp)
4759 046e 5f clrw x
4760 046f 97 ld xl,a
4761 0470 89 pushw x
4762 0471 ae0025 ldw x,#L1172
4763 0474 89 pushw x
4764 0475 ae0000 ldw x,#_lcd_buffer
4765 0478 89 pushw x
4766 0479 ae0002 ldw x,#2
4767 047c a606 ld a,#6
4768 047e 95 ld xh,a
4769 047f cd02fb call _showLine
4771 0482 5b06 addw sp,#6
4772 ; 53 return;
4775 0484 84 pop a
4776 0485 85 popw x
4777 0486 bf00 ldw c_y,x
4778 0488 320002 pop c_y+2
4779 048b 85 popw x
4780 048c bf00 ldw c_x,x
4781 048e 320002 pop c_x+2
4782 0491 80 iret
4840 ; 20 main()
4840 ; 21 {
4842 switch .text
4843 0492 _main:
4845 0492 88 push a
4846 00000001 OFST: set 1
4849 ; 22 u8 tmp=0;
4851 0493 0f01 clr (OFST+0,sp)
4852 ; 23 Init_UART2();
4854 0495 ad9b call _Init_UART2
4856 ; 24 _asm("rim");
4859 0497 9a rim
4861 ; 25 st7920LcdInit(); /*LCD初始化*/
4863 0498 cd0082 call _st7920LcdInit
4865 ; 26 showLine(0,0,lcd_buffer,"MAX3232 Example");
4867 049b ae0015 ldw x,#L7372
4868 049e 89 pushw x
4869 049f ae0000 ldw x,#_lcd_buffer
4870 04a2 89 pushw x
4871 04a3 5f clrw x
4872 04a4 4f clr a
4873 04a5 95 ld xh,a
4874 04a6 cd02fb call _showLine
4876 04a9 5b04 addw sp,#4
4877 ; 27 showLine(0,1,lcd_buffer,"USART TX<->RX");
4879 04ab ae0007 ldw x,#L1472
4880 04ae 89 pushw x
4881 04af ae0000 ldw x,#_lcd_buffer
4882 04b2 89 pushw x
4883 04b3 ae0001 ldw x,#1
4884 04b6 4f clr a
4885 04b7 95 ld xh,a
4886 04b8 cd02fb call _showLine
4888 04bb 5b04 addw sp,#4
4889 ; 28 showLine(0,2,lcd_buffer,"Data:");
4891 04bd ae0000 ldw x,#L3472
4892 04c0 89 pushw x
4893 04c1 ae0000 ldw x,#_lcd_buffer
4894 04c4 89 pushw x
4895 04c5 ae0002 ldw x,#2
4896 04c8 4f clr a
4897 04c9 95 ld xh,a
4898 04ca cd02fb call _showLine
4900 04cd 5b04 addw sp,#4
4901 ; 29 refreshLCD(lcd_buffer); /*刷新LCD*/
4903 04cf ae0000 ldw x,#_lcd_buffer
4904 04d2 cd011c call _refreshLCD
4906 04d5 L5472:
4907 ; 32 UART2_sendchar(tmp);
4909 04d5 7b01 ld a,(OFST+0,sp)
4910 04d7 cd044b call _UART2_sendchar
4912 ; 33 delay_ms(10);
4914 04da ae000a ldw x,#10
4915 04dd cd0000 call _delay_ms
4917 ; 35 refreshLCD(lcd_buffer); /*刷新LCD*/
4919 04e0 ae0000 ldw x,#_lcd_buffer
4920 04e3 cd011c call _refreshLCD
4922 ; 36 tmp++;
4924 04e6 0c01 inc (OFST+0,sp)
4925 ; 37 delay_ms(1000);
4927 04e8 ae03e8 ldw x,#1000
4928 04eb cd0000 call _delay_ms
4931 04ee 20e5 jra L5472
4944 xdef _main
4945 xdef f_UART2_Recv_IRQHandler
4946 xdef _UART2_sendchar
4947 xdef _Init_UART2
4948 xdef _SPI_rechar
4949 xdef _SPI_sendchar
4950 xdef _SPI_Init
4951 switch .ubsct
4952 0000 _lcd_buffer:
4953 0000 000000000000 ds.b 64
4954 xdef _lcd_buffer
4955 xdef _showLine
4956 xdef _hexToAscii
4957 xdef _decToAscii
4958 xdef _refreshLCD
4959 xdef _st7920LcdInit
4960 xdef _sendDataST7920
4961 xdef _sendCodeST7920
4962 xdef _delay_us
4963 xdef _delay_ms
4964 .const: section .text
4965 0000 L3472:
4966 0000 44617461a3 dc.b "Data",163
4967 0005 ba00 dc.b 186,0
4968 0007 L1472:
4969 0007 555341525420 dc.b "USART TX<->RX",0
4970 0015 L7372:
4971 0015 4d4158333233 dc.b "MAX3232 Example",0
4972 0025 L1172:
4973 0025 307825783200 dc.b "0x%x2",0
4974 xref.b c_x
4975 xref.b c_y
4995 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -