⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo.lst

📁 key scan and lcd display file it can run in the computer with sunplus compile
💻 LST
📖 第 1 页 / 共 5 页
字号:
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 + -