📄 main.ls
字号:
4932 03fb 90f6 ld a,(y)
4933 03fd f7 ld (x),a
4935 03fe acd804d8 jpf L5303
4936 0402 L3303:
4937 ; 189 else if(*str == '%')
4939 0402 1e0b ldw x,(OFST+7,sp)
4940 0404 f6 ld a,(x)
4941 0405 a125 cp a,#37
4942 0407 2703 jreq L011
4943 0409 cc04c8 jp L7303
4944 040c L011:
4945 ; 191 str++;
4947 040c 1e0b ldw x,(OFST+7,sp)
4948 040e 1c0001 addw x,#1
4949 0411 1f0b ldw (OFST+7,sp),x
4950 ; 192 if (*str == 'd' || *str == 'D')
4952 0413 1e0b ldw x,(OFST+7,sp)
4953 0415 f6 ld a,(x)
4954 0416 a164 cp a,#100
4955 0418 2707 jreq L3403
4957 041a 1e0b ldw x,(OFST+7,sp)
4958 041c f6 ld a,(x)
4959 041d a144 cp a,#68
4960 041f 2637 jrne L1403
4961 0421 L3403:
4962 ; 194 str++;
4964 0421 1e0b ldw x,(OFST+7,sp)
4965 0423 1c0001 addw x,#1
4966 0426 1f0b ldw (OFST+7,sp),x
4967 ; 195 decToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str-'0'));
4969 0428 1e0b ldw x,(OFST+7,sp)
4970 042a f6 ld a,(x)
4971 042b a030 sub a,#48
4972 042d 88 push a
4973 042e 1e03 ldw x,(OFST-1,sp)
4974 0430 1c0002 addw x,#2
4975 0433 1f03 ldw (OFST-1,sp),x
4976 0435 1e03 ldw x,(OFST-1,sp)
4977 0437 5a decw x
4978 0438 5a decw x
4979 0439 fe ldw x,(x)
4980 043a 89 pushw x
4981 043b 7b0c ld a,(OFST+8,sp)
4982 043d 97 ld xl,a
4983 043e 7b0d ld a,(OFST+9,sp)
4984 0440 1b07 add a,(OFST+3,sp)
4985 0442 2401 jrnc L001
4986 0444 5c incw x
4987 0445 L001:
4988 0445 02 rlwa x,a
4989 0446 cd0247 call _decToAscii
4991 0449 5b03 addw sp,#3
4992 ; 196 coordinate += (*str-'0'-1);
4994 044b 1e0b ldw x,(OFST+7,sp)
4995 044d f6 ld a,(x)
4996 044e a031 sub a,#49
4997 0450 1b04 add a,(OFST+0,sp)
4998 0452 6b04 ld (OFST+0,sp),a
5000 0454 acd804d8 jpf L5303
5001 0458 L1403:
5002 ; 198 else if(*str == 'c' || *str == 'C')
5004 0458 1e0b ldw x,(OFST+7,sp)
5005 045a f6 ld a,(x)
5006 045b a163 cp a,#99
5007 045d 2707 jreq L1503
5009 045f 1e0b ldw x,(OFST+7,sp)
5010 0461 f6 ld a,(x)
5011 0462 a143 cp a,#67
5012 0464 261f jrne L7403
5013 0466 L1503:
5014 ; 200 lcd_stack[coordinate] = va_arg(marker,u16);
5016 0466 7b09 ld a,(OFST+5,sp)
5017 0468 97 ld xl,a
5018 0469 7b0a ld a,(OFST+6,sp)
5019 046b 1b04 add a,(OFST+0,sp)
5020 046d 2401 jrnc L201
5021 046f 5c incw x
5022 0470 L201:
5023 0470 02 rlwa x,a
5024 0471 1602 ldw y,(OFST-2,sp)
5025 0473 72a90002 addw y,#2
5026 0477 1702 ldw (OFST-2,sp),y
5027 0479 1602 ldw y,(OFST-2,sp)
5028 047b 905a decw y
5029 047d 905a decw y
5030 047f 90e601 ld a,(1,y)
5031 0482 f7 ld (x),a
5033 0483 2053 jra L5303
5034 0485 L7403:
5035 ; 202 else if(*str == 'x' || *str == 'X')
5037 0485 1e0b ldw x,(OFST+7,sp)
5038 0487 f6 ld a,(x)
5039 0488 a178 cp a,#120
5040 048a 2707 jreq L7503
5042 048c 1e0b ldw x,(OFST+7,sp)
5043 048e f6 ld a,(x)
5044 048f a158 cp a,#88
5045 0491 2645 jrne L5303
5046 0493 L7503:
5047 ; 204 str++;
5049 0493 1e0b ldw x,(OFST+7,sp)
5050 0495 1c0001 addw x,#1
5051 0498 1f0b ldw (OFST+7,sp),x
5052 ; 205 hexToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str - '0'));
5054 049a 1e0b ldw x,(OFST+7,sp)
5055 049c f6 ld a,(x)
5056 049d a030 sub a,#48
5057 049f 88 push a
5058 04a0 1e03 ldw x,(OFST-1,sp)
5059 04a2 1c0002 addw x,#2
5060 04a5 1f03 ldw (OFST-1,sp),x
5061 04a7 1e03 ldw x,(OFST-1,sp)
5062 04a9 5a decw x
5063 04aa 5a decw x
5064 04ab fe ldw x,(x)
5065 04ac 89 pushw x
5066 04ad 7b0c ld a,(OFST+8,sp)
5067 04af 97 ld xl,a
5068 04b0 7b0d ld a,(OFST+9,sp)
5069 04b2 1b07 add a,(OFST+3,sp)
5070 04b4 2401 jrnc L401
5071 04b6 5c incw x
5072 04b7 L401:
5073 04b7 02 rlwa x,a
5074 04b8 cd02f0 call _hexToAscii
5076 04bb 5b03 addw sp,#3
5077 ; 206 coordinate += (*str - '0' - 1);
5079 04bd 1e0b ldw x,(OFST+7,sp)
5080 04bf f6 ld a,(x)
5081 04c0 a031 sub a,#49
5082 04c2 1b04 add a,(OFST+0,sp)
5083 04c4 6b04 ld (OFST+0,sp),a
5084 04c6 2010 jra L5303
5085 04c8 L7303:
5086 ; 212 lcd_stack[coordinate] = *str;
5088 04c8 7b09 ld a,(OFST+5,sp)
5089 04ca 97 ld xl,a
5090 04cb 7b0a ld a,(OFST+6,sp)
5091 04cd 1b04 add a,(OFST+0,sp)
5092 04cf 2401 jrnc L601
5093 04d1 5c incw x
5094 04d2 L601:
5095 04d2 02 rlwa x,a
5096 04d3 160b ldw y,(OFST+7,sp)
5097 04d5 90f6 ld a,(y)
5098 04d7 f7 ld (x),a
5099 04d8 L5303:
5100 ; 214 str++;
5102 04d8 1e0b ldw x,(OFST+7,sp)
5103 04da 1c0001 addw x,#1
5104 04dd 1f0b ldw (OFST+7,sp),x
5105 ; 215 coordinate++;
5107 04df 0c04 inc (OFST+0,sp)
5108 04e1 L5203:
5109 ; 180 while(*str != '\0')
5111 04e1 1e0b ldw x,(OFST+7,sp)
5112 04e3 7d tnz (x)
5113 04e4 2703 jreq L211
5114 04e6 cc03d7 jp L3203
5115 04e9 L211:
5116 04e9 acdd03dd jpf L7203
5204 ; 20 main()
5204 ; 21 {
5205 switch .text
5206 04ed _main:
5208 04ed 88 push a
5209 00000001 OFST: set 1
5212 ; 23 AT24CXX_Init();
5214 04ee cd00c8 call _AT24CXX_Init
5216 ; 24 st7920LcdInit();
5218 04f1 cd013d call _st7920LcdInit
5220 ; 26 showLine(0,0,lcd_buffer,"AT24Cxx Example");
5222 04f4 ae001f ldw x,#L3213
5223 04f7 89 pushw x
5224 04f8 ae0000 ldw x,#_lcd_buffer
5225 04fb 89 pushw x
5226 04fc 5f clrw x
5227 04fd 4f clr a
5228 04fe 95 ld xh,a
5229 04ff cd03b6 call _showLine
5231 0502 5b04 addw sp,#4
5232 ; 27 showLine(0,1,lcd_buffer,"Program and");
5234 0504 ae0013 ldw x,#L5213
5235 0507 89 pushw x
5236 0508 ae0000 ldw x,#_lcd_buffer
5237 050b 89 pushw x
5238 050c ae0001 ldw x,#1
5239 050f 4f clr a
5240 0510 95 ld xh,a
5241 0511 cd03b6 call _showLine
5243 0514 5b04 addw sp,#4
5244 ; 28 showLine(0,2,lcd_buffer,"Verify");
5246 0516 ae000c ldw x,#L7213
5247 0519 89 pushw x
5248 051a ae0000 ldw x,#_lcd_buffer
5249 051d 89 pushw x
5250 051e ae0002 ldw x,#2
5251 0521 4f clr a
5252 0522 95 ld xh,a
5253 0523 cd03b6 call _showLine
5255 0526 5b04 addw sp,#4
5256 ; 29 showLine(0,3,lcd_buffer,"Results:");
5258 0528 ae0003 ldw x,#L1313
5259 052b 89 pushw x
5260 052c ae0000 ldw x,#_lcd_buffer
5261 052f 89 pushw x
5262 0530 ae0003 ldw x,#3
5263 0533 4f clr a
5264 0534 95 ld xh,a
5265 0535 cd03b6 call _showLine
5267 0538 5b04 addw sp,#4
5268 ; 30 refreshLCD(lcd_buffer);
5270 053a ae0000 ldw x,#_lcd_buffer
5271 053d cd01d7 call _refreshLCD
5273 ; 32 AT24CXX_WriteAByte(0x01,'P');
5275 0540 ae0050 ldw x,#80
5276 0543 a601 ld a,#1
5277 0545 95 ld xh,a
5278 0546 cd00cb call _AT24CXX_WriteAByte
5280 ; 33 delay_ms(10);
5282 0549 ae000a ldw x,#10
5283 054c cd0000 call _delay_ms
5285 ; 34 tmp=AT24CXX_ReadAByte(0x01);
5287 054f a601 ld a,#1
5288 0551 cd00e0 call _AT24CXX_ReadAByte
5290 0554 6b01 ld (OFST+0,sp),a
5291 ; 36 showLine(9,3,lcd_buffer,"%c",tmp);
5293 0556 7b01 ld a,(OFST+0,sp)
5294 0558 88 push a
5295 0559 ae0000 ldw x,#L3313
5296 055c 89 pushw x
5297 055d ae0000 ldw x,#_lcd_buffer
5298 0560 89 pushw x
5299 0561 ae0003 ldw x,#3
5300 0564 a609 ld a,#9
5301 0566 95 ld xh,a
5302 0567 cd03b6 call _showLine
5304 056a 5b05 addw sp,#5
5305 ; 37 refreshLCD(lcd_buffer);
5307 056c ae0000 ldw x,#_lcd_buffer
5308 056f cd01d7 call _refreshLCD
5310 0572 L5313:
5311 ; 38 while (1);
5313 0572 20fe jra L5313
5326 xdef _main
5327 xdef _SPI_rechar
5328 xdef _SPI_sendchar
5329 xdef _SPI_Init
5330 switch .ubsct
5331 0000 _lcd_buffer:
5332 0000 000000000000 ds.b 64
5333 xdef _lcd_buffer
5334 xdef _showLine
5335 xdef _hexToAscii
5336 xdef _decToAscii
5337 xdef _refreshLCD
5338 xdef _st7920LcdInit
5339 xdef _sendDataST7920
5340 xdef _sendCodeST7920
5341 xdef _AT24CXX_ReadAByte
5342 xdef _AT24CXX_WriteAByte
5343 xdef _AT24CXX_Init
5344 xdef _I2C_RcvDat
5345 xdef _I2C_SendDat
5346 xdef _I2C_SendDAdr
5347 xdef _I2C_Start
5348 xdef _I2C_Init
5349 xdef _delay_us
5350 xdef _delay_ms
5351 .const: section .text
5352 0000 L3313:
5353 0000 256300 dc.b "%c",0
5354 0003 L1313:
5355 0003 526573756c74 dc.b "Results:",0
5356 000c L7213:
5357 000c 566572696679 dc.b "Verify",0
5358 0013 L5213:
5359 0013 50726f677261 dc.b "Program and",0
5360 001f L3213:
5361 001f 415432344378 dc.b "AT24Cxx Example",0
5381 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -