📄 demo.lst
字号:
000051EE 41 24 R2 -= 1;
000051EF 46 4E JNZ ClrKeyStatusBuf;
000051F0 40 92 R1 = 0;
000051F1 19 D3 07 00 [KeyScanFlag] = R1;
000051F3 90 9A RETF;
.const C_One = 1;
.const C_Two = 2;
.const C_Three = 3;
.const C_Four = 4;
.const C_Five = 5;
.const C_Six = 6;
.const C_Seven = 7;
.const C_Eight = 8;
.const C_Nine = 9;
.const C_Zero = 10
.const C_Star = 11;
.const C_Pound = 12;
TB_KeyCode:
000051F4 01 00 04 00 .DW C_One, C_Four, C_Seven, C_Star, C_One, C_Four, C_Seven;
07 00 0B 00
01 00 04 00
07 00
000051FB 02 00 05 00 .DW C_Two, C_Five, C_Eight, C_Zero, C_Two, C_Five, C_Eight;
08 00 0A 00
02 00 05 00
08 00
00005202 03 00 06 00 .DW C_Three, C_Six, C_Nine, C_Pound, C_Three, C_Six, C_Nine;
09 00 0C 00
03 00 06 00
09 00
00005209 01 00 04 00 .DW C_One, C_Four, C_Seven, C_Star, C_One, C_Four, C_Seven;
07 00 0B 00
01 00 04 00
07 00
00005210 02 00 05 00 .DW C_Two, C_Five, C_Eight, C_Zero, C_Two, C_Five, C_Eight;
08 00 0A 00
02 00 05 00
08 00
00005217 03 00 06 00 .DW C_Three, C_Six, C_Nine, C_Pound, C_Three, C_Six, C_Nine;
09 00 0C 00
03 00 06 00
09 00
0000521E 01 00 04 00 .DW C_One, C_Four, C_Seven, C_Star, C_One, C_Four, C_Seven;
07 00 0B 00
01 00 04 00
07 00
00005225 02 00 05 00 .DW C_Two, C_Five, C_Eight, C_Zero, C_Two, C_Five, C_Eight;
08 00 0A 00
02 00 05 00
08 00
//----------------------------------------------------------------------------*/
F_InitDisplay:
0000522C 40 F0 3A 52 CALL F_ShowBatLevel;
0000522E 40 F0 5C 52 CALL F_ShowOnHookSymbol;
00005230 40 F0 6F 52 CALL F_ShowDayTime;
00005232 40 F0 C8 52 CALL F_ShowWeek;
00005234 40 F0 12 53 CALL F_ShowTotal;
00005236 40 F0 22 53 CALL F_ShowNewTotal;
00005238 0F 9F 32 53 GoTo F_ShowYear;
//----------------------------------------------------------------------------------------
F_ShowBatLevel:
0000523A 11 93 00 71 R1 = [P_Seg0];
0000523C 09 A3 80 00 R1 |= B_Com7; // outline
0000523E 19 D3 00 71 [P_Seg0] = R1;
00005240 12 95 14 00 R2 = [BatLevel];
00005242 7A 9B BP = R2 LSR 4;
00005243 7D 9B BP = BP LSR 4;
00005244 7D 9B BP = BP LSR 4;
00005245 41 0A BP += 1;
00005246 47 CA TEST BP,0x0007;
00005247 01 4E JNZ ShowBatLevel_05;
00005248 41 2A BP -= 1;
ShowBatLevel_05:
00005249 65 9B BP = BP LSR 1;
0000524A 0D 0B 51 52 BP += TB_PowerLevel;
0000524C C5 92 R1 = [BP];
0000524D 0D 9B 55 52 BP = TB_PowerSymbol;
0000524F 0F 9F FC 53 GoTo ShowDigit_10;
TB_PowerLevel:
00005251 00 00 .DW 0x0000;
00005252 01 00 .DW 0x0001;
00005253 03 00 .DW 0x0003;
00005254 07 00 .DW 0x0007;
TB_PowerSymbol:
00005255 00 71 40 00 .DW P_Seg0,B_Com6, P_Seg0,B_Com5, P_Seg1, B_Com7,0;
00 71 20 00
01 71 80 00
00 00
//----------------------------------------------------------------------------*/
F_ShowOnHookSymbol:
0000525C 11 93 12 71 R1 = [P_Seg18];
0000525E 09 A3 80 00 R1 |= B_Com7; //on hook symbol
00005260 19 D3 12 71 [P_Seg18] = R1;
00005262 11 93 13 71 R1 = [P_Seg19];
00005264 09 A3 80 00 R1 |= B_Com7;
00005266 19 D3 13 71 [P_Seg19] = R1;
00005268 11 93 11 71 R1 = [P_Seg17];
0000526A 09 B3 7F FF R1 &= ~B_Com7; //off hook symbol
0000526C 19 D3 11 71 [P_Seg17] = R1;
0000526E 90 9A RETF;
//----------------------------------------------------------------------------*/
F_ShowDayTime:
0000526F 11 93 12 00 R1 = [MonDayHr];
00005271 19 D3 02 00 [LcdMonDayHr] = R1;
00005273 11 93 13 00 R1 = [MinSec];
00005275 19 D3 03 00 [LcdMinSec] = R1;
00005277 11 93 10 71 R1 = [P_Seg16];
00005279 09 A3 00 01 R1 |= B_Com8; //"-"
0000527B 19 D3 10 71 [P_Seg16] = R1;
0000527D 11 93 02 00 R1 = [LcdMonDayHr];
0000527F 09 C3 00 3C TEST R1,0x3C00;
00005281 18 5E JZ ShowDayTime_22; //illegal month
00005282 79 93 R1 = R1 LSR 4;
00005283 79 93 R1 = R1 LSR 4;
00005284 69 93 R1 = R1 LSR 2;
00005285 4F B2 R1 &= 0x000F;
00005286 40 F0 61 53 CALL F_BinaryToBcd;
00005288 4A 42 CMP R1,0x000A;
00005289 01 4E JNZ ShowDayTime_20;
0000528A 40 92 R1 = 0;
ShowDayTime_20:
0000528B 0D 9B EE 54 BP = Month;
0000528D 40 F0 72 53 CALL F_ShowBcd; //input : R1,R2 - BCD, BP - postion
0000528F 11 93 02 00 R1 = [LcdMonDayHr];
00005291 79 93 R1 = R1 LSR 4;
00005292 61 93 R1 = R1 LSR 1;
00005293 5F B2 R1 &= 0x001F;
00005294 40 F0 61 53 CALL F_BinaryToBcd;
00005296 0D 9B 0C 55 BP = Day;
00005298 40 F0 72 53 CALL F_ShowBcd; //input : R1,R2 - BCD, BP - postion
ShowDayTime_22:
0000529A 11 93 02 00 R1 = [LcdMonDayHr];
0000529C 5F B2 R1 &= 0x001F;
0000529D 58 42 CMP R1,24;
0000529E 01 4E JNZ ShowDayTime_23;
0000529F 90 9A RETF; //illegal hour
ShowDayTime_23:
000052A0 13 97 0C 71 R3 = [P_Seg12];
000052A2 0B B7 9F FF R3 &= 0xFFFF - (B_Com5+B_Com6);
000052A4 0B A7 40 00 R3 |= B_Com6;
000052A6 4C 42 CMP R1,12;
000052A7 07 0E JB ShowDayTime_25;
000052A8 0B B7 BF FF R3 &= 0xFFFF - B_Com6;
000052AA 60 A6 R3 |= B_Com5;
000052AB 4C 42 CMP R1,12;
000052AC 05 8E JBE ShowDayTime_30;
000052AD 4C 22 R1 -= 12;
000052AE 03 EE JMP ShowDayTime_30;
ShowDayTime_25:
000052AF 40 42 CMP R1,0;
000052B0 01 4E JNZ ShowDayTime_30;
000052B1 4C 92 R1 = 12;
ShowDayTime_30:
000052B2 1B D7 0C 71 [P_Seg12] = R3;
000052B4 40 F0 61 53 CALL F_BinaryToBcd;
000052B6 4A 42 CMP R1,0x000A;
000052B7 01 4E JNZ ShowDayTime_50;
000052B8 40 92 R1 = 0;
ShowDayTime_50:
000052B9 0D 9B 2A 55 BP = Hour;
000052BB 40 F0 72 53 CALL F_ShowBcd; //input : R1,R2 - BCD, BP - postion
000052BD 11 93 03 00 R1 = [LcdMinSec];
000052BF 79 93 R1 = R1 LSR 4;
000052C0 71 93 R1 = R1 LSR 3;
000052C1 7F B2 R1 &= 0x003F;
000052C2 40 F0 61 53 CALL F_BinaryToBcd;
000052C4 0D 9B 48 55 BP = Minute;
000052C6 0F 9F 72 53 GoTo F_ShowBcd; //input : R1,R2 - BCD, BP - postion
//----------------------------------------------------------------------------//
// Purpose : display Week of RTC or a call (Real Time Clock)
//----------------------------------------------------------------------------//
F_ShowWeek:
000052C8 11 93 12 00 R1 = [MonDayHr];
000052CA 19 D3 02 00 [LcdMonDayHr] = R1;
000052CC 11 93 11 00 R1 = [Year];
000052CE 19 D3 01 00 [LcdYear] = R1;
000052D0 14 99 02 00 R4 = [LcdMonDayHr];
000052D2 7C 99 R4 = R4 LSR 4;
000052D3 7C 99 R4 = R4 LSR 4;
000052D4 6C 99 R4 = R4 LSR 2;
000052D5 4F B8 R4 &= 0x000F;
000052D6 41 28 R4 -= 1;
000052D7 0C 05 ED 53 R2 = R4 + TB_1900WeekBase;
000052D9 C2 94 R2 = [R2]; //Day VS. the month of 1900
000052DA 11 93 01 00 R1 = [LcdYear];
000052DC 09 23 6C 07 R1 -= 1900; //R1 - count of year
000052DE 01 05 R2 += R1;
000052DF 69 93 R1 = R1 LSR 2; //R1 - count of leap year
000052E0 01 05 R2 += R1;
000052E1 41 48 CMP R4,1;
000052E2 06 9E JA ShowWeek_40; //above than Feb.
000052E3 40 F0 D5 53 CALL F_JudgeIfLeapYear;
000052E5 0B 47 00 80 CMP R3,0x8000;
000052E7 01 4E JNZ ShowWeek_40;
000052E8 41 24 R2 -= 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -