📄 rd_lcd1602b.lis
字号:
022E ; ***********************************************************/
022E ; /*
022E ; void FlashStringGroup(UINT8 String[][17],UINT8 StringCounter,UINT8 X,UINT8 Y)
022E ; {
022E ; static UINT8 Pictures = 0;
022E ; static UINT8 DispState = 0;
022E ; if ((SYS_TIMER_MS_ADD_UNTILL_OVF & LCD_FLASH_STRING_GROUP_TIME_OUT)
022E ; > (LCD_FLASH_STRING_GROUP_TIME_OUT >> 1))
022E ; {
022E ; if (DispState == 0)
022E ; {
022E ; Pictures ++;
022E ; if (Pictures == StringCounter)
022E ; {
022E ; Pictures = 0;
022E ; }
022E ; DispState = 1;
022E ; }
022E ; }
022E ; else
022E ; {
022E ; if (DispState == 1)
022E ; {
022E ; Pictures ++;
022E ; if (Pictures == StringCounter)
022E ; {
022E ; Pictures = 0;
022E ; }
022E ; DispState = 0;
022E ; }
022E ; }
022E ;
022E ; LOCATE(X,Y);
022E ; PRINT(String[Pictures]);
022E ; }
022E ; */
022E ;
022E ; /***********************************************************
022E ; * 函数说明:数值显示函数 *
022E ; * 输入: 要显示的整数 *
022E ; * 输出: 无 *
022E ; * 调用函数:无 *
022E ; ***********************************************************/
022E ; void PrintD(INT32 nNumber,UINT8 chCounter)
022E ; {
022E .dbline 613
022E ; uint8 cTempBuff[10] = {0};
022E 80E0 ldi R24,<L36
0230 90E0 ldi R25,>L36
0232 FE01 movw R30,R28
0234 3596 adiw R30,5
0236 0AE0 ldi R16,10
0238 10E0 ldi R17,0
023A FA93 st -y,R31
023C EA93 st -y,R30
023E 9A93 st -y,R25
0240 8A93 st -y,R24
0242 00D0 rcall asgncblk
0244 .dbline 614
0244 ; uint8 n = 0;
0244 .dbline 615
0244 ; uint32 wTempNumber = ABS(nNumber);
0244 80E0 ldi R24,0
0246 90E0 ldi R25,0
0248 A0E0 ldi R26,0
024A B0E0 ldi R27,0
024C 298C ldd R2,y+25
024E 3A8C ldd R3,y+26
0250 4B8C ldd R4,y+27
0252 5C8C ldd R5,y+28
0254 2816 cp R2,R24
0256 3906 cpc R3,R25
0258 4A06 cpc R4,R26
025A 5B06 cpc R5,R27
025C 44F4 brge L37
025E X7:
025E 8101 movw R16,R2
0260 9201 movw R18,R4
0262 00D0 rcall neg32
0264 0F87 std y+15,R16
0266 188B std y+16,R17
0268 298B std y+17,R18
026A 3A8B std y+18,R19
026C 08C0 rjmp L38
026E L37:
026E 298C ldd R2,y+25
0270 3A8C ldd R3,y+26
0272 4B8C ldd R4,y+27
0274 5C8C ldd R5,y+28
0276 2F86 std y+15,R2
0278 388A std y+16,R3
027A 498A std y+17,R4
027C 5A8A std y+18,R5
027E L38:
027E 2F84 ldd R2,y+15
0280 3888 ldd R3,y+16
0282 4988 ldd R4,y+17
0284 5A88 ldd R5,y+18
0286 2982 std y+1,R2
0288 3A82 std y+2,R3
028A 4B82 std y+3,R4
028C 5C82 std y+4,R5
028E .dbline 616
028E ; BOOL bIfFindFirstNoneZeroNumber = FALSE;
028E .dbline 618
028E ;
028E ; if (nNumber < 0)
028E 80E0 ldi R24,0
0290 90E0 ldi R25,0
0292 A0E0 ldi R26,0
0294 B0E0 ldi R27,0
0296 298C ldd R2,y+25
0298 3A8C ldd R3,y+26
029A 4B8C ldd R4,y+27
029C 5C8C ldd R5,y+28
029E 2816 cp R2,R24
02A0 3906 cpc R3,R25
02A2 4A06 cpc R4,R26
02A4 5B06 cpc R5,R27
02A6 1CF4 brge L39
02A8 X8:
02A8 .dbline 619
02A8 ; {
02A8 .dbline 620
02A8 ; PRINT("-")
02A8 00E0 ldi R16,<L41
02AA 10E0 ldi R17,>L41
02AC 7ADF rcall _LCDDisplayString
02AE .dbline 621
02AE ; }
02AE L39:
02AE .dbline 624
02AE ;
02AE ;
02AE ; for (n = 9;n > 0;n--)
02AE 69E0 ldi R22,9
02B0 26C0 rjmp L45
02B2 L42:
02B2 .dbline 625
02B2 ; {
02B2 .dbline 626
02B2 ; cTempBuff[n] = (wTempNumber % 10);
02B2 8AE0 ldi R24,10
02B4 90E0 ldi R25,0
02B6 A0E0 ldi R26,0
02B8 B0E0 ldi R27,0
02BA 0981 ldd R16,y+1
02BC 1A81 ldd R17,y+2
02BE 2B81 ldd R18,y+3
02C0 3C81 ldd R19,y+4
02C2 BA93 st -y,R27
02C4 AA93 st -y,R26
02C6 9A93 st -y,R25
02C8 8A93 st -y,R24
02CA 00D0 rcall mod32u
02CC CE01 movw R24,R28
02CE 0596 adiw R24,5
02D0 E62F mov R30,R22
02D2 FF27 clr R31
02D4 E80F add R30,R24
02D6 F91F adc R31,R25
02D8 0083 std z+0,R16
02DA .dbline 627
02DA ; wTempNumber /= 10;
02DA 8AE0 ldi R24,10
02DC 90E0 ldi R25,0
02DE A0E0 ldi R26,0
02E0 B0E0 ldi R27,0
02E2 0981 ldd R16,y+1
02E4 1A81 ldd R17,y+2
02E6 2B81 ldd R18,y+3
02E8 3C81 ldd R19,y+4
02EA BA93 st -y,R27
02EC AA93 st -y,R26
02EE 9A93 st -y,R25
02F0 8A93 st -y,R24
02F2 00D0 rcall div32u
02F4 0983 std y+1,R16
02F6 1A83 std y+2,R17
02F8 2B83 std y+3,R18
02FA 3C83 std y+4,R19
02FC .dbline 628
02FC ; }
02FC L43:
02FC .dbline 624
02FC 6A95 dec R22
02FE L45:
02FE .dbline 624
02FE 6623 tst R22
0300 C1F6 brne L42
0302 X9:
0302 .dbline 630
0302 ;
0302 ; if (chCounter)
0302 4423 tst R20
0304 11F0 breq L46
0306 X10:
0306 .dbline 631
0306 ; {
0306 .dbline 632
0306 ; bIfFindFirstNoneZeroNumber = TRUE;
0306 61E0 ldi R22,1
0308 .dbline 633
0308 ; }
0308 02C0 rjmp L47
030A L46:
030A .dbline 635
030A ; else
030A ; {
030A .dbline 636
030A ; chCounter = UBOUND(cTempBuff);
030A 4AE0 ldi R20,10
030C .dbline 637
030C ; bIfFindFirstNoneZeroNumber = FALSE;
030C 6627 clr R22
030E .dbline 638
030E ; }
030E L47:
030E .dbline 640
030E ;
030E ; chCounter = MIN(chCounter,UBOUND(cTempBuff));
030E 4A30 cpi R20,10
0310 18F4 brsh L48
0312 X11:
0312 A42E mov R10,R20
0314 BB24 clr R11
0316 03C0 rjmp L49
0318 L48:
0318 8AE0 ldi R24,10
031A 90E0 ldi R25,0
031C 5C01 movw R10,R24
031E L49:
031E 4A2D mov R20,R10
0320 .dbline 642
0320 ;
0320 ; for (n = UBOUND(cTempBuff) - chCounter;n < UBOUND(cTempBuff);n++)
0320 8AE0 ldi R24,10
0322 A82E mov R10,R24
0324 A41A sub R10,R20
0326 28C0 rjmp L53
0328 L50:
0328 .dbline 643
0328 ; {
0328 .dbline 644
0328 ; if (cTempBuff[n])
0328 CE01 movw R24,R28
032A 0596 adiw R24,5
032C EA2D mov R30,R10
032E FF27 clr R31
0330 E80F add R30,R24
0332 F91F adc R31,R25
0334 2080 ldd R2,z+0
0336 2220 tst R2
0338 79F0 breq L54
033A X12:
033A .dbline 645
033A ; {
033A .dbline 646
033A ; PRINTN(cTempBuff[n],1);
033A 81E0 ldi R24,1
033C 8883 std y+0,R24
033E CE01 movw R24,R28
0340 0596 adiw R24,5
0342 EA2D mov R30,R10
0344 FF27 clr R31
0346 E80F add R30,R24
0348 F91F adc R31,R25
034A 0081 ldd R16,z+0
034C 1127 clr R17
034E 2227 clr R18
0350 3327 clr R19
0352 38DF rcall _LCDDisplayNum
0354 .dbline 646
0354 .dbline 648
0354 ;
0354 ; bIfFindFirstNoneZeroNumber = TRUE;
0354 61E0 ldi R22,1
0356 .dbline 649
0356 ; }
0356 0FC0 rjmp L55
0358 L54:
0358 .dbline 650
0358 ; else if (bIfFindFirstNoneZeroNumber)
0358 6623 tst R22
035A 69F0 breq L56
035C X13:
035C .dbline 651
035C ; {
035C .dbline 652
035C ; PRINTN(cTempBuff[n],1);
035C 81E0 ldi R24,1
035E 8883 std y+0,R24
0360 CE01 movw R24,R28
0362 0596 adiw R24,5
0364 EA2D mov R30,R10
0366 FF27 clr R31
0368 E80F add R30,R24
036A F91F adc R31,R25
036C 0081 ldd R16,z+0
036E 1127
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -