📄 cloc_mx4.lst
字号:
15 =1 PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont
16 =1 [Pearson Education, 2001; ISBN: 0-201-33138-1].
17 =1
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 function prototypes -------------------------------
25 =1
26 =1 void CLOCK_LED_Time_Update(void);
27 =1
28 =1 /*------------------------------------------------------------------*-
29 =1 ---- END OF FILE -------------------------------------------------
30 =1 -*------------------------------------------------------------------*/
30
31 // ------ Public variable declarations -----------------------------
32
33 extern tByte LED_Mx4_Data_G[4];
34 extern tByte code LED_Table_G[20];
35 extern tByte state;
36
37 // ------ Private variable definitions------------------------------
38
39 // Time variables
C51 COMPILER V8.05a CLOC_MX4 06/07/2007 19:40:26 PAGE 9
40 tByte Hou_G, Min_G, Sec_G;
41
42 /*------------------------------------------------------------------*-
43
44 CLOCK_LED_Time_Update()
45
46 Updates the global time variables.
47
48 *** Must be scheduled once per second ***
49
50 -*------------------------------------------------------------------*/
51 void CLOCK_LED_Time_Update(void)
52 {
53 1 if (state == 0)
54 1 {
55 2 bit Min_update = 0;
56 2 bit Hou_update = 0;
57 2
58 2 if (++Sec_G == 60)
59 2 {
60 3 Sec_G = 0;
61 3 Min_update = 1;
62 3
63 3 if (++Min_G == 60)
64 3 {
65 4 Min_G = 0;
66 4 Hou_update = 1;
67 4
68 4 if (++Hou_G == 24)
69 4 {
70 5 Hou_G = 0;
71 5 }
72 4 }
73 3 }
74 2
75 2 if (Min_update)
76 2 {
77 3 // Need to update the minutes data
78 3 // (both digits)
79 3 LED_Mx4_Data_G[1] = LED_Table_G[Min_G / 10];
80 3 LED_Mx4_Data_G[0] = LED_Table_G[Min_G % 10];
81 3 }
82 2
83 2 // We don't display seconds in this version.
84 2 // We simply use the seconds data to turn on and off the decimal
85 2 // point between hours and minutes
86 2 if ((Sec_G % 2) == 0)
87 2 {
88 3 LED_Mx4_Data_G[2] = LED_Table_G[Hou_G % 10];
89 3 }
90 2 else
91 2 {
92 3 LED_Mx4_Data_G[2] = LED_Table_G[(Hou_G % 10) + 10];
93 3 }
94 2
95 2 if (Hou_update)
96 2 {
97 3 // Need to update the 'tens of hours' data
98 3 LED_Mx4_Data_G[3] = LED_Table_G[Hou_G / 10];
99 3 }
100 2 }
101 1 }
C51 COMPILER V8.05a CLOC_MX4 06/07/2007 19:40:26 PAGE 10
102
103 /*------------------------------------------------------------------*-
104 ---- END OF FILE -------------------------------------------------
105 -*------------------------------------------------------------------*/
C51 COMPILER V8.05a CLOC_MX4 06/07/2007 19:40:26 PAGE 11
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION CLOCK_LED_Time_Update (BEGIN)
; SOURCE LINE # 51
; SOURCE LINE # 52
; SOURCE LINE # 53
0000 E500 E MOV A,state
0002 7072 JNZ ?C0009
; SOURCE LINE # 54
; SOURCE LINE # 55
0004 C200 R CLR Min_update
; SOURCE LINE # 56
0006 C200 R CLR Hou_update
; SOURCE LINE # 58
0008 0500 R INC Sec_G
000A E500 R MOV A,Sec_G
000C B43C1B CJNE A,#03CH,?C0002
; SOURCE LINE # 59
; SOURCE LINE # 60
000F E4 CLR A
0010 F500 R MOV Sec_G,A
; SOURCE LINE # 61
0012 D200 R SETB Min_update
; SOURCE LINE # 63
0014 0500 R INC Min_G
0016 E500 R MOV A,Min_G
0018 B43C0F CJNE A,#03CH,?C0002
; SOURCE LINE # 64
; SOURCE LINE # 65
001B E4 CLR A
001C F500 R MOV Min_G,A
; SOURCE LINE # 66
001E D200 R SETB Hou_update
; SOURCE LINE # 68
0020 0500 R INC Hou_G
0022 E500 R MOV A,Hou_G
0024 B41803 CJNE A,#018H,?C0002
; SOURCE LINE # 69
; SOURCE LINE # 70
0027 E4 CLR A
0028 F500 R MOV Hou_G,A
; SOURCE LINE # 71
; SOURCE LINE # 72
; SOURCE LINE # 73
002A ?C0002:
; SOURCE LINE # 75
002A 300017 R JNB Min_update,?C0005
; SOURCE LINE # 76
; SOURCE LINE # 79
002D E500 R MOV A,Min_G
002F 75F00A MOV B,#0AH
0032 84 DIV AB
0033 900000 E MOV DPTR,#LED_Table_G
0036 93 MOVC A,@A+DPTR
0037 F500 E MOV LED_Mx4_Data_G+01H,A
; SOURCE LINE # 80
0039 E500 R MOV A,Min_G
003B 75F00A MOV B,#0AH
003E 84 DIV AB
003F E5F0 MOV A,B
0041 93 MOVC A,@A+DPTR
C51 COMPILER V8.05a CLOC_MX4 06/07/2007 19:40:26 PAGE 12
0042 F500 E MOV LED_Mx4_Data_G,A
; SOURCE LINE # 81
0044 ?C0005:
; SOURCE LINE # 86
0044 E500 R MOV A,Sec_G
0046 20E010 JB ACC.0,?C0006
; SOURCE LINE # 87
; SOURCE LINE # 88
0049 E500 R MOV A,Hou_G
004B 75F00A MOV B,#0AH
004E 84 DIV AB
004F E5F0 MOV A,B
0051 900000 E MOV DPTR,#LED_Table_G
0054 93 MOVC A,@A+DPTR
0055 F500 E MOV LED_Mx4_Data_G+02H,A
; SOURCE LINE # 89
0057 800E SJMP ?C0007
0059 ?C0006:
; SOURCE LINE # 91
; SOURCE LINE # 92
0059 E500 R MOV A,Hou_G
005B 75F00A MOV B,#0AH
005E 84 DIV AB
005F E5F0 MOV A,B
0061 900000 E MOV DPTR,#LED_Table_G+0AH
0064 93 MOVC A,@A+DPTR
0065 F500 E MOV LED_Mx4_Data_G+02H,A
; SOURCE LINE # 93
0067 ?C0007:
; SOURCE LINE # 95
0067 30000C R JNB Hou_update,?C0009
; SOURCE LINE # 96
; SOURCE LINE # 98
006A E500 R MOV A,Hou_G
006C 75F00A MOV B,#0AH
006F 84 DIV AB
0070 900000 E MOV DPTR,#LED_Table_G
0073 93 MOVC A,@A+DPTR
0074 F500 E MOV LED_Mx4_Data_G+03H,A
; SOURCE LINE # 99
; SOURCE LINE # 100
; SOURCE LINE # 101
0076 ?C0009:
0076 22 RET
; FUNCTION CLOCK_LED_Time_Update (END)
C51 COMPILER V8.05a CLOC_MX4 06/07/2007 19:40:26 PAGE 13
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
tLong. . . . . . . . . . . . . . . . . TYPEDEF ----- U_LONG ----- 4
tByte. . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
tWord. . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
state. . . . . . . . . . . . . . . . . EXTERN DATA U_CHAR ----- 1
LED_Mx4_Data_G . . . . . . . . . . . . EXTERN DATA ARRAY ----- 4
Sec_G. . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0000H 1
LED_Table_G. . . . . . . . . . . . . . EXTERN CODE ARRAY ----- 20
Min_G. . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0001H 1
Hou_G. . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0002H 1
CLOCK_LED_Time_Update. . . . . . . . . PUBLIC CODE PROC 0000H -----
Min_update . . . . . . . . . . . . . AUTO DATA BIT 0000H 1
Hou_update . . . . . . . . . . . . . AUTO DATA BIT 0001H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 119 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -