📄 demo.lst
字号:
ShowWeek_40:
000052E9 11 93 02 00 R1 = [LcdMonDayHr];
000052EB 79 93 R1 = R1 LSR 4;
000052EC 61 93 R1 = R1 LSR 1;
000052ED 5F B2 R1 &= 0x001F;
000052EE 41 22 R1 -= 1;
000052EF 01 05 R2 += R1;
ShowWeek_45: //Divide by 7
000052F0 47 44 CMP R2,7;
000052F1 02 0E JB ShowWeek_50;
000052F2 47 24 R2 -= 7;
000052F3 44 EE JMP ShowWeek_45;
ShowWeek_50:
000052F4 02 93 R1 = R2;
000052F5 09 03 FC 52 R1 += TB_WeekPattern;
000052F7 C1 92 R1 = [R1];
000052F8 0D 9B 03 53 BP = TB_WeekSymbol;
000052FA 0F 9F FC 53 GoTo ShowDigit_10;
TB_WeekPattern:
000052FC 01 00 .DW 0x0001;
000052FD 02 00 .DW 0x0002;
000052FE 04 00 .DW 0x0004;
000052FF 08 00 .DW 0x0008;
00005300 10 00 .DW 0x0010;
00005301 20 00 .DW 0x0020;
00005302 40 00 .DW 0x0040;
TB_WeekSymbol:
00005303 03 71 80 00 .DW P_Seg3, B_Com7, P_Seg4, B_Com7, P_Seg7, B_Com7;
04 71 80 00
07 71 80 00
00005309 08 71 80 00 .DW P_Seg8, B_Com7, P_Seg10,B_Com7, P_Seg11,B_Com7, P_Seg14,B_Com7,0;
0A 71 80 00
0B 71 80 00
0E 71 80 00
00 00
//---------------------------------
// R1 - total calls in binary
//---------------------------------
F_ShowTotal:
00005312 12 95 13 71 R2 = [P_Seg19];
00005314 0A A5 00 01 R2 |= B_Com8; //show 'TOTAL CALLS'
00005316 1A D5 13 71 [P_Seg19] = R2;
00005318 11 93 15 00 R1 = [CidCnt];
0000531A 09 B3 FF 00 R1 &= 0x00FF;
0000531C 40 F0 61 53 CALL F_BinaryToBcd;
0000531E 0D 9B 66 55 BP = Total;
00005320 0F 9F 72 53 GoTo F_ShowBcd;
//---------------------------------
// R1 - new total calls in binary
//---------------------------------
F_ShowNewTotal:
00005322 12 95 1C 71 R2 = [P_Seg28];
00005324 0A A5 00 01 R2 |= B_Com8; //show 'NEW CALLS'
00005326 1A D5 1C 71 [P_Seg28] = R2;
00005328 11 93 15 00 R1 = [CidCnt];
0000532A 79 93 R1 = R1 LSR 4;
0000532B 79 93 R1 = R1 LSR 4;
0000532C 40 F0 61 53 CALL F_BinaryToBcd;
0000532E 0D 9B 84 55 BP = NewTotal;
00005330 0F 9F 72 53 GoTo F_ShowBcd;
//----------------------------------------------------------------------------//
// Purpose : display Year of RTC (Real Time Clock)
//----------------------------------------------------------------------------//
F_ShowYear:
00005332 11 93 11 00 R1 = [Year];
00005334 19 D3 01 00 [LcdYear] = R1;
00005336 11 93 01 00 R1 = [LcdYear];
00005338 09 23 6C 07 R1 -= 1900;
0000533A 0B 97 91 00 R3 = 0x0091;
0000533C 09 43 64 00 CMP R1,100;
0000533E 04 0E JB ShowYear_20;
0000533F 0B 97 A2 00 R3 = 0x00A2;
00005341 09 23 64 00 R1 -= 100;
ShowYear_20:
00005343 40 F0 61 53 CALL F_BinaryToBcd;
00005345 5A 95 R2 = R2 LSL 4;
00005346 5A 95 R2 = R2 LSL 4;
00005347 5A 95 R2 = R2 LSL 4;
00005348 59 93 R1 = R1 LSL 4;
00005349 59 93 R1 = R1 LSL 4;
0000534A 01 A5 R2 |= R1;
0000534B 03 A5 R2 |= R3;
0000534C 0D 9B 67 54 BP = Digit5; //start position
0000534E 0A B3 0F 00 R1 = R2 AND 0x000F;
00005350 40 F0 F9 53 CALL F_ShowDigit;
00005352 7A 95 R2 = R2 LSR 4;
00005353 0A B3 0F 00 R1 = R2 AND 0x000F;
00005355 40 F0 F9 53 CALL F_ShowDigit;
00005357 7A 95 R2 = R2 LSR 4;
00005358 0A B3 0F 00 R1 = R2 AND 0x000F;
0000535A 40 F0 F9 53 CALL F_ShowDigit;
0000535C 7A 95 R2 = R2 LSR 4;
0000535D 0A B3 0F 00 R1 = R2 AND 0x000F;
0000535F 0F 9F F9 53 GoTo F_ShowDigit;
//---------------------------------
// Input : R1
// Output: R1 - high, R2 - low
//---------------------------------
F_BinaryToBcd:
00005361 40 F0 6A 53 CALL F_BinToBcd;
00005363 40 42 CMP R1,0;
00005364 01 4E JNZ BinaryToBcd_30;
00005365 4A 92 R1 = 0x000A;
BinaryToBcd_30:
00005366 40 44 CMP R2,0;
00005367 01 4E JNZ BinaryToBcd_99;
00005368 4A 94 R2 = 0x000A;
BinaryToBcd_99:
00005369 90 9A RETF;
F_BinToBcd:
0000536A 01 95 R2 = R1;
0000536B 40 92 R1 = 0;
BinToBcd_10:
0000536C 4A 44 CMP R2,10;
0000536D 03 0E JB BinToBcd_99;
0000536E 4A 24 R2 -= 10;
0000536F 41 02 R1 += 1;
00005370 45 EE JMP BinToBcd_10;
BinToBcd_99:
00005371 90 9A RETF;
//---------------------------------
// Input: R1 - high byte of BCD
// R2 - low byte of BCD
//---------------------------------
F_ShowBcd:
00005372 40 F0 F9 53 CALL F_ShowDigit;
00005374 02 93 R1 = R2;
00005375 0F 9F F9 53 GoTo F_ShowDigit;
//----------------------------------------------------------------------------//
// Purpose : shift all number on LCD to next right position,
// the most right one is shifted out
// Don't change R1
//----------------------------------------------------------------------------//
F_ShiftDigitLeft:
00005377 0C 99 01 71 R4 = P_Seg1;
00005379 0D 9B 04 71 BP = P_Seg4;
ShiftLeftLoop:
0000537B D5 94 R2 = [BP++];
0000537C 0A B5 00 06 R2 &= 0x0600; //b9,b10
0000537E C4 96 R3 = [R4];
0000537F 0B B7 FF F9 R3 &= 0xF9FF;
00005381 02 A7 R3 |= R2;
00005382 D4 D6 [R4++] = R3;
00005383 D5 94 R2 = [BP++];
00005384 0A B5 00 07 R2 &= 0x0700; //b9,b10
00005386 C4 96 R3 = [R4];
00005387 0B B7 FF F8 R3 &= 0xF8FF;
00005389 02 A7 R3 |= R2;
0000538A D4 D6 [R4++] = R3;
0000538B D5 94 R2 = [BP++];
0000538C 0A B5 00 06 R2 &= 0x0600; //b9,b10
0000538E C4 96 R3 = [R4];
0000538F 0B B7 FF F9 R3 &= 0xF9FF;
00005391 02 A7 R3 |= R2;
00005392 D4 D6 [R4++] = R3;
00005393 0D 4B 28 71 CMP BP,P_Seg39 + 1;
00005395 5B 4E JNZ ShiftLeftLoop;
00005396 12 95 25 71 R2 = [P_Seg37];
00005398 0A B5 FF F9 R2 &= 0xF9FF;
0000539A 0A B7 00 C0 R3 = R2 AND 0xC000;
0000539C 7B 97 R3 = R3 LSR 4;
0000539D 63 97 R3 = R3 LSR 1;
0000539E 1A A7 25 71 [P_Seg37] = R2 OR R3;
000053A0 12 95 26 71 R2 = [P_Seg38];
000053A2 0A B5 FF F8 R2 &= 0xF8FF;
000053A4 0A B7 00 E0 R3 = R2 AND 0xE000;
000053A6 7B 97 R3 = R3 LSR 4;
000053A7 63 97 R3 = R3 LSR 1;
000053A8 1A A7 26 71 [P_Seg38] = R2 OR R3;
000053AA 12 95 27 71 R2 = [P_Seg39];
000053AC 0A B5 FF F9 R2 &= 0xF9FF;
000053AE 0A B7 00 C0 R3 = R2 AND 0xC000;
000053B0 7B 97 R3 = R3 LSR 4;
000053B1 63 97 R3 = R3 LSR 1;
000053B2 1A A7 27 71 [P_Seg39] = R2 OR R3;
000053B4 90 9A RETF;
//----------------------------------------------------------------------------//
// Purpose : clear all dots of LCD's number position
//----------------------------------------------------------------------------//
F_ClrAllDigits:
000053B5 0D 9B 01 71 BP = P_Seg1;
ClrAllDigitsLoop:
000053B7 C5 92 R1 = [BP];
000053B8 09 B3 FF F9 R1 &= 0xF9FF;
000053BA D5 D2 [BP++] = R1;
000053BB C5 92 R1 = [BP];
000053BC 09 B3 FF F8 R1 &= 0xF8FF;
000053BE D5 D2 [BP++] = R1;
000053BF C5 92 R1 = [BP];
000053C0 09 B3 FF F9 R1 &= 0xF9FF;
000053C2 D5 D2 [BP++] = R1;
000053C3 0D 4B 28 71 CMP BP,P_Seg39 + 1;
000053C5 4F 4E
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -