📄 t_lights.lst
字号:
C51 COMPILER V6.10 T_LIGHTS 04/18/2001 14:01:18 PAGE 1
C51 COMPILER V6.10, COMPILATION OF MODULE T_LIGHTS
OBJECT MODULE PLACED IN .\T_Lights.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE .\T_Lights.c 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
10 COPYRIGHT
11 ---------
12
13 This code is from the book:
14
15 PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont
16 [Pearson Education, 2001; ISBN: 0-201-33138-1].
17
18 This code is copyright (c) 2001 by Michael J. Pont.
19
20 See book for copyright details and other information.
21
22 -*------------------------------------------------------------------*/
23
24
25 #include "Main.h"
26 #include "Port.h"
27
28 #include "T_lights.h"
29
30 // ------ Private constants ----------------------------------------
31
32 // Easy to change logic here
33 #define ON 0
34 #define OFF 1
35
36 // Times in each of the (four) possible light states
37 // (Times are in seconds - must call the update task once per second)
38 //
39 #define RED_DURATION (10)
40 #define RED_AND_AMBER_DURATION (10)
41
42 // NOTE:
43 // GREEN_DURATION must equal RED_DURATION
44 // AMBER_DURATION must equal RED_AND_AMBER_DURATION
45 #define GREEN_DURATION RED_DURATION
46 #define AMBER_DURATION RED_AND_AMBER_DURATION
47
48 // ------ Private variables ----------------------------------------
49
50 // The state of the system
51 static eLight_State Light_state_G;
52
53 /*------------------------------------------------------------------*-
54
55 TRAFFIC_LIGHTS_Init()
C51 COMPILER V6.10 T_LIGHTS 04/18/2001 14:01:18 PAGE 2
56
57 Prepare for the scheduled traffic light activity.
58
59 -*------------------------------------------------------------------*/
60 void TRAFFIC_LIGHTS_Init(const eLight_State START_STATE)
61 {
62 1 Light_state_G = START_STATE; // Slave is Green; Master is Red
63 1 }
64
65
66 /*------------------------------------------------------------------*-
67
68 TRAFFIC_LIGHTS_Update()
69
70 Must be called once per second.
71
72 -*------------------------------------------------------------------*/
73 void TRAFFIC_LIGHTS_Update(void)
74 {
75 1 static tWord Time_in_state;
76 1
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.10 T_LIGHTS 04/18/2001 14:01:18 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 = 129 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
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 + -