📄 main.lst
字号:
C51 COMPILER V8.05a MAIN 08/16/2008 15:42:16 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.C DEBUG OBJECTEXTEND
line level source
1 #include <AT89X51.H>
2 //月亮微控 QQ:228939191
3 /*******************输入输出分配*****************************************
4 | 输入 | 输出 |
5 |X13 | Y13 |
6 |X12 门开关 | Y12 |
7 |X11 3楼到位 | Y11 |
8 |X10 2楼到位 | Y10 |
9 |X9 1楼到位 | Y9 |
10 |X8 到2楼 | Y8 |
11 |X7 到1楼 | Y7 |
12 |X6 3楼呼叫 | Y6 楼层报警 |
13 |X5 到3楼 | Y5 门报警 |
14 |X4 到1楼 | Y4 KM2电机上行 |
15 |X3 2楼呼叫 | Y3 KM1电机下行 |
16 |X2 到3楼 | Y2 三楼显示灯 |
17 |X1 到2楼 | Y1 二楼显示灯 |
18 |XO 1楼呼叫 | Y0 一楼显示灯 |
19 */
20 /********P0*********/
21 sbit Y13 = 0x80;
22 sbit Y12 = 0x81;
23 sbit Y11 = 0x82;
24 sbit Y10 = 0x83;
25 sbit Y9 = 0x84;
26 sbit Y8 = 0x85;
27 sbit Y7 = 0x86;
28 sbit Y6 = 0x87;
29 /********P1*********/
30 sbit X13 = 0x90;
31 sbit X12 = 0x91;
32 sbit X11 = 0x92;
33 sbit X10 = 0x93;
34 sbit X9 = 0x94;
35 sbit X8 = 0x95;
36 sbit X7 = 0x96;
37 sbit X6 = 0x97;
38 /* P2 */
39 sbit Y0 = 0xA2;
40 sbit Y1 = 0xA3;
41 sbit Y2 = 0xA4;
42 sbit Y3 = 0xA5;
43 sbit Y4 = 0xA6;
44 sbit Y5 = 0xA7;
45 /********P3*********/
46 sbit X0 = 0xB2;
47 sbit X1 = 0xB3;
48 sbit X2 = 0xB4;
49 sbit X3 = 0xB5;
50 sbit X4 = 0xB6;
51 sbit X5 = 0xB7;
52 /*******辅助继电器***********/
53 bit M0=1;
54 bit M1=1;
55 bit M2=1;
C51 COMPILER V8.05a MAIN 08/16/2008 15:42:16 PAGE 2
56 bit M3=1;
57 bit M4=1;
58 bit M5=1;
59 bit M6=1;
60 bit M7=1;
61 bit M8=1;
62 bit M9=1;
63 bit M10=1;
64
65 /************************一楼呼叫***************************************/
66 void key1 (void)
67 {
68 1 //呼叫
69 1 if (!X0) //呼叫键按下
70 1 {
71 2 if (X12) Y5 = 0; //门没有关闭,报警灯亮
72 2 else (Y5 = 1);
73 2 if (!X10|!X11) //在二楼或者三楼,电梯下行
74 2 {
75 3 M0 = 0; //电梯下行信号
76 3 }
77 2 }
78 1 if ((M0 == 0 && Y4 == 1)&& !X12) //电梯下行信号,电梯没有上升,门开关OK
79 1 {
80 2 Y3 = 0; //电梯开始下降
81 2 if (X9 == 0) //电梯到位
82 2 {
83 3 Y3 = 1; //电梯停止下降
84 3 M0 = 1; //电梯下降信号停
85 3 }
86 2 }
87 1 //到二楼
88 1 if ((!X1 && !X12)&& !X9) //按到2楼 门开关OK 在1楼
89 1 {
90 2 M1 = 0; //电梯到二楼信号
91 2 if ( X10 == 1 && Y3 == 1)Y4 = 0; //电梯没有在二楼 电梯没有下降 电梯开始上升
92 2 }
93 1 if (M1 == 0 && !X10 ) //电梯上升2楼 限位到了
94 1 {
95 2 Y4 = 1; //电梯停止
96 2 M1 = 1; //电梯上升信号停止
97 2 }
98 1
99 1 //到三楼
100 1 if ((!X2 && !X12)&& !X9) //按到3楼 门开关OK 在1楼
101 1 {
102 2 M2 = 0; //电梯到3楼信号
103 2 if (X11 == 1 && Y3 == 1)Y4 = 0;//电梯没有在3楼 电梯没有下降 电梯开始上升
104 2 }
105 1 if (M2 == 0 && !X11) //电梯上升3楼 限位到了
106 1 {
107 2 Y4 = 1; //电梯停止
108 2 M2 = 1; //电梯上升信号停止
109 2 }
110 1
111 1 }
112 /************************二楼呼叫*****************************************/
113 void key2 (void)
114 {
115 1 //呼叫
116 1 if (!X3)
117 1 {
C51 COMPILER V8.05a MAIN 08/16/2008 15:42:16 PAGE 3
118 2 if (X12) Y5 = 0; //门没有关闭,报警
119 2 else (Y5 = 1);
120 2 if (!X9) //在1楼电梯上
121 2 {
122 3 M3 = 0; //电机上行信号
123 3 }
124 2 if (!X11) //在3楼电梯上
125 2 {
126 3 M4 = 0; //电机下行信号
127 3 }
128 2 }
129 1 if ((M3 == 0 && Y3 == 1)&& !X12) Y4 = 0; //一楼到二楼
130 1
131 1 if (M3 == 0 && X10 == 0)
132 1 {
133 2 Y4 = 1;
134 2 M3 = 1;
135 2 }
136 1 if ((M4 == 0 && Y4 == 1)&& !X12) Y3 = 0; //三楼到二楼
137 1 if (M4 == 0 && X10 == 0)
138 1 {
139 2 Y3 = 1;
140 2 M4 = 1;
141 2 }
142 1 //到一楼
143 1 if ((!X4 && !X12)&& !X10) M5 = 0;
144 1 if ((M5 == 0 && X9 == 1) && Y4 == 1)Y3 = 0;
145 1 if (M5 == 0 && !X9)
146 1 {
147 2 Y3 = 1;
148 2 M5 = 1;
149 2 }
150 1 //到三楼
151 1 if ((!X5 && !X12)&& !X10) M6 = 0;
152 1 if ((M6 == 0 && X11 == 1) && Y3 == 1) Y4 = 0;
153 1 if (M6 == 0 && !X11)
154 1 {
155 2 Y4 = 1;
156 2 M6 = 1;
157 2 }
158 1 }
159 /*****************************************************************************/
160 /************************三楼呼叫************************************/
161 void key3 (void)
162 {
163 1
164 1 //呼叫
165 1 if (!X6)
166 1 {
167 2 if (X12) Y5 = 0; //门没有关闭,报警
168 2 else (Y5 = 1);
169 2 if (!X9) //在1楼电梯上
170 2 {
171 3 M7 = 0; //电机上行信号
172 3 }
173 2 if (!X10) //在2楼电梯上
174 2 {
175 3 M8 = 0; //电机下行信号
176 3 }
177 2 }
178 1 if ((M7 == 0 && Y3 == 1)&& !X12) Y4 = 0; //一楼到3楼
179 1
C51 COMPILER V8.05a MAIN 08/16/2008 15:42:16 PAGE 4
180 1 if (M7 == 0 && X11 == 0)
181 1 {
182 2 Y4 = 1;
183 2 M7 = 1;
184 2 }
185 1 if ((M8 == 0 && Y3 == 1)&& !X12) Y4 = 0; //2楼到3楼
186 1 if (M8 == 0 && X11 == 0)
187 1 {
188 2 Y4 = 1;
189 2 M8 = 1;
190 2 }
191 1 //到一楼
192 1 if ((!X7 && !X12)&& !X11) M9 = 0;
193 1 if ((M9 == 0 && X9 == 1) && Y4 == 1)Y3 = 0;
194 1 if (M9 == 0 && !X9)
195 1 {
196 2 Y3 = 1;
197 2 M9 = 1;
198 2 }
199 1 //到三楼
200 1 if ((!X8 && !X12)&& !X11) M10 = 0;
201 1 if ((M10 == 0 && X10 == 1) && Y3 == 1) Y3 = 0;
202 1 if (M10 == 0 && !X10)
203 1 {
204 2 Y3 = 1;
205 2 M10 = 1;
206 2 }
207 1 }
208
209 /****主程序*********************************************/
210 void main(void)
211 {
212 1 P0 = 0xFF;
213 1 P1 = 0xFF;
214 1 P2 = 0xFF;
215 1 P3 = 0xFF;
216 1 while (1)
217 1 {
218 2 if (!X9)Y0 = 0;
219 2 else(Y0 = 1);
220 2 if (!X10)Y1 = 0;
221 2 else(Y1 = 1);
222 2 if (!X11)Y2 = 0;
223 2 else(Y2 = 1);
224 2 key1(); //*一楼呼叫
225 2 key2(); //*二楼呼叫
226 2 key3(); //*三楼呼叫
227 2 }
228 1 }
229 /*******************************************************/
230
231
232
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 406 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
C51 COMPILER V8.05a MAIN 08/16/2008 15:42:16 PAGE 5
BIT SIZE = 11 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -