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

📄 demo.lst

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