📄 led_mx4.lst
字号:
18 =1 This code is copyright (c) 2001 by Michael J. Pont.
19 =1
20 =1 See book for copyright details and other information.
21 =1
22 =1 -*------------------------------------------------------------------*/
23 =1
24 =1 // ------ Public constants -----------------------------------------
25 =1
26 =1 #define LED_NUM_DIGITS (4)
27 =1
28 =1 // ------ Public function prototypes -------------------------------
29 =1
30 =1 void LED_MX4_Display_Update(void);
31 =1
32 =1 /*------------------------------------------------------------------*-
33 =1 ---- END OF FILE -------------------------------------------------
34 =1 -*------------------------------------------------------------------*/
29
30 // ------ Public variable definitions ------------------------------
31
32 // Lookup table - stored in code area
33 // See Port.H for connections and code details
34
35 tByte code LED_Table_G[20] =
C51 COMPILER V8.05a LED_MX4 06/07/2007 19:40:27 PAGE 9
36 // 0 1 2 3 4 5 6 7 8 9
37 {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,
38 // 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.
39 0xBF, 0x86, 0xDB, 0xCF, 0xE6, 0xED, 0xFD, 0x87, 0xFF, 0xEF};
40
41 // Global data formatted for display (initially 0,0,0,0)
42 tByte LED_Mx4_Data_G[4] = {0x3F,0x3F,0x3F,0x3F};
43
44
45 // ------ Private variable definitions------------------------------
46
47 static tByte Digit_G;
48
49 /*------------------------------------------------------------------*-
50
51 LED_MX4_Display_Update()
52
53 Updates (four) multiplexed 8-segment LED displays.
54
55 Usually aim to scheduled at around 3ms intervals: typically
56 around a 1% CPU load on standard 8051.
57
58 -*------------------------------------------------------------------*/
59 void LED_MX4_Display_Update(void)
60 {
61 1
62 1 // Increment the digit to be displayed
63 1 if (++Digit_G == LED_NUM_DIGITS)
64 1 {
65 2 Digit_G = 0;
66 2 }
67 1
68 1 // Allows any pins to be used
69 1 switch (Digit_G)
70 1 {
71 2 case 0:
72 2 {
73 3 LED_DIGIT_0 = 0;
74 3 LED_DIGIT_1 = 0;
75 3 LED_DIGIT_2 = 0;
76 3 LED_DIGIT_3 = 1;
77 3 break;
78 3 }
79 2
80 2 case 1:
81 2 {
82 3 LED_DIGIT_0 = 0;
83 3 LED_DIGIT_1 = 0;
84 3 LED_DIGIT_2 = 1;
85 3 LED_DIGIT_3 = 0;
86 3 break;
87 3 }
88 2
89 2 case 2:
90 2 {
91 3 LED_DIGIT_0 = 0;
92 3 LED_DIGIT_1 = 1;
93 3 LED_DIGIT_2 = 0;
94 3 LED_DIGIT_3 = 0;
95 3 break;
96 3 }
97 2
C51 COMPILER V8.05a LED_MX4 06/07/2007 19:40:27 PAGE 10
98 2 case 3:
99 2 {
100 3 LED_DIGIT_0 = 1;
101 3 LED_DIGIT_1 = 0;
102 3 LED_DIGIT_2 = 0;
103 3 LED_DIGIT_3 = 0;
104 3 }
105 2 }
106 1
107 1 LED_DATA_PORT = 255 - LED_Mx4_Data_G[Digit_G];
108 1 }
109
110 /*------------------------------------------------------------------*-
111 ---- END OF FILE -------------------------------------------------
112 -*------------------------------------------------------------------*/
113
C51 COMPILER V8.05a LED_MX4 06/07/2007 19:40:27 PAGE 11
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION LED_MX4_Display_Update (BEGIN)
; SOURCE LINE # 59
; SOURCE LINE # 60
; SOURCE LINE # 63
0000 0500 R INC Digit_G
0002 E500 R MOV A,Digit_G
0004 B40403 CJNE A,#04H,?C0001
; SOURCE LINE # 64
; SOURCE LINE # 65
0007 E4 CLR A
0008 F500 R MOV Digit_G,A
; SOURCE LINE # 66
000A ?C0001:
; SOURCE LINE # 69
000A E500 R MOV A,Digit_G
000C 14 DEC A
000D 6014 JZ ?C0004
000F 14 DEC A
0010 601B JZ ?C0005
0012 14 DEC A
0013 6022 JZ ?C0006
0015 2403 ADD A,#03H
0017 7026 JNZ ?C0002
; SOURCE LINE # 70
; SOURCE LINE # 71
0019 ?C0003:
; SOURCE LINE # 72
; SOURCE LINE # 73
0019 C2B3 CLR LED_DIGIT_0
; SOURCE LINE # 74
001B C2B4 CLR LED_DIGIT_1
; SOURCE LINE # 75
001D C2B5 CLR LED_DIGIT_2
; SOURCE LINE # 76
001F D2B6 SETB LED_DIGIT_3
; SOURCE LINE # 77
0021 801C SJMP ?C0002
; SOURCE LINE # 78
; SOURCE LINE # 80
0023 ?C0004:
; SOURCE LINE # 81
; SOURCE LINE # 82
0023 C2B3 CLR LED_DIGIT_0
; SOURCE LINE # 83
0025 C2B4 CLR LED_DIGIT_1
; SOURCE LINE # 84
0027 D2B5 SETB LED_DIGIT_2
; SOURCE LINE # 85
0029 C2B6 CLR LED_DIGIT_3
; SOURCE LINE # 86
002B 8012 SJMP ?C0002
; SOURCE LINE # 87
; SOURCE LINE # 89
002D ?C0005:
; SOURCE LINE # 90
; SOURCE LINE # 91
002D C2B3 CLR LED_DIGIT_0
; SOURCE LINE # 92
002F D2B4 SETB LED_DIGIT_1
C51 COMPILER V8.05a LED_MX4 06/07/2007 19:40:27 PAGE 12
; SOURCE LINE # 93
0031 C2B5 CLR LED_DIGIT_2
; SOURCE LINE # 94
0033 C2B6 CLR LED_DIGIT_3
; SOURCE LINE # 95
0035 8008 SJMP ?C0002
; SOURCE LINE # 96
; SOURCE LINE # 98
0037 ?C0006:
; SOURCE LINE # 99
; SOURCE LINE # 100
0037 D2B3 SETB LED_DIGIT_0
; SOURCE LINE # 101
0039 C2B4 CLR LED_DIGIT_1
; SOURCE LINE # 102
003B C2B5 CLR LED_DIGIT_2
; SOURCE LINE # 103
003D C2B6 CLR LED_DIGIT_3
; SOURCE LINE # 104
; SOURCE LINE # 105
003F ?C0002:
; SOURCE LINE # 107
003F 7400 R MOV A,#LOW LED_Mx4_Data_G
0041 2500 R ADD A,Digit_G
0043 F8 MOV R0,A
0044 E6 MOV A,@R0
0045 FF MOV R7,A
0046 C3 CLR C
0047 74FF MOV A,#0FFH
0049 9F SUBB A,R7
004A F5A0 MOV P2,A
; SOURCE LINE # 108
004C 22 RET
; FUNCTION LED_MX4_Display_Update (END)
C51 COMPILER V8.05a LED_MX4 06/07/2007 19:40:27 PAGE 13
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
tLong. . . . . . . . . . . . . . . . . TYPEDEF ----- U_LONG ----- 4
tByte. . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
LED_MX4_Display_Update . . . . . . . . PUBLIC CODE PROC 0000H -----
tWord. . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
Digit_G. . . . . . . . . . . . . . . . STATIC DATA U_CHAR 0000H 1
LED_Mx4_Data_G . . . . . . . . . . . . PUBLIC DATA ARRAY 0001H 4
LED_DIGIT_0. . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
LED_DIGIT_1. . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
LED_DIGIT_2. . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
LED_DIGIT_3. . . . . . . . . . . . . . ABSBIT ----- BIT 00B6H 1
LED_Table_G. . . . . . . . . . . . . . PUBLIC CODE ARRAY 0000H 20
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 77 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -