📄 t_lights.lst
字号:
C51 COMPILER V6.21 T_LIGHTS 01/23/2002 18:00:41 PAGE 1
C51 COMPILER V6.21, COMPILATION OF MODULE T_LIGHTS
OBJECT MODULE PLACED IN T_Lights.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE T_Lights.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*------------------------------------------------------------------*-
2
3 T_lights.C (v1.00)
4
5 ------------------------------------------------------------------
6
7 Traffic light control program (Test Version 1.0)
8
9 COPYRIGHT
10 ---------
11
12 This code is associated with the book:
13
14 EMBEDDED C by Michael J. Pont
15 [Pearson Education, 2002: ISBN: 0-201-79523-X].
16
17 This code is copyright (c) 2001 by Michael J. Pont.
18
19 See book for copyright details and other information.
20
21
22 -*------------------------------------------------------------------*/
23
24 #include "Main.H"
25 #include "Port.H"
26
27 #include "T_lights.H"
28
29 // ------ Private constants ----------------------------------------
30
31 // Easy to change logic here
32 #define ON 0
33 #define OFF 1
34
35 // Times in each of the (four) possible light states
36 // (Times are in seconds)
37 #define RED_DURATION 20
38 #define RED_AND_AMBER_DURATION 5
39 #define GREEN_DURATION 30
40 #define AMBER_DURATION 5
41
42
43 // ------ Private variables ----------------------------------------
44
45 // The state of the system
46 static eLight_State Light_state_G;
47
48 // The time in that state
49 static tLong Time_in_state;
50
51 // Used by sEOS
52 static tByte Call_count_G = 0;
53
54
55 /*------------------------------------------------------------------*-
C51 COMPILER V6.21 T_LIGHTS 01/23/2002 18:00:41 PAGE 2
56
57 TRAFFIC_LIGHTS_Init()
58
59 Prepare for the traffic light activity.
60
61 -*------------------------------------------------------------------*/
62 void TRAFFIC_LIGHTS_Init(const eLight_State START_STATE)
63 {
64 1 Light_state_G = START_STATE; // Decide on initial state
65 1 }
66
67
68 /*------------------------------------------------------------------*-
69
70 TRAFFIC_LIGHTS_Update()
71
72 Must be called once per second.
73
74 -*------------------------------------------------------------------*/
75 void TRAFFIC_LIGHTS_Update(void)
76 {
77 1 switch (Light_state_G)
78 1 {
79 2 case RED:
80 2 {
81 3 Red_light = ON;
82 3 Amber_light = OFF;
83 3 Green_light = OFF;
84 3
85 3 if (++Time_in_state == RED_DURATION)
86 3 {
87 4 Light_state_G = RED_AND_AMBER;
88 4 Time_in_state = 0;
89 4 }
90 3
91 3 break;
92 3 }
93 2
94 2 case RED_AND_AMBER:
95 2 {
96 3 Red_light = ON;
97 3 Amber_light = ON;
98 3 Green_light = OFF;
99 3
100 3 if (++Time_in_state == RED_AND_AMBER_DURATION)
101 3 {
102 4 Light_state_G = GREEN;
103 4 Time_in_state = 0;
104 4 }
105 3
106 3 break;
107 3 }
108 2
109 2 case GREEN:
110 2 {
111 3 Red_light = OFF;
112 3 Amber_light = OFF;
113 3 Green_light = ON;
114 3
115 3 if (++Time_in_state == GREEN_DURATION)
116 3 {
117 4 Light_state_G = AMBER;
C51 COMPILER V6.21 T_LIGHTS 01/23/2002 18:00:41 PAGE 3
118 4 Time_in_state = 0;
119 4 }
120 3
121 3 break;
122 3 }
123 2
124 2 case AMBER:
125 2 {
126 3 Red_light = OFF;
127 3 Amber_light = ON;
128 3 Green_light = OFF;
129 3
130 3 if (++Time_in_state == AMBER_DURATION)
131 3 {
132 4 Light_state_G = RED;
133 4 Time_in_state = 0;
134 4 }
135 3
136 3 break;
137 3 }
138 2 }
139 1 }
140
141 /*------------------------------------------------------------------*-
142 ---- END OF FILE -------------------------------------------------
143 -*------------------------------------------------------------------*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 160 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
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 + -