📄 main.lst
字号:
C51 COMPILER V6.02 MAIN 01/08/2003 23:22:43 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\main.OBJ
COMPILER INVOKED BY: C:\PROGRAM FILES\KEIL\C51\BIN\C51.EXE .\main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2
3 #define STEP_COU 133
4
5 sbit CON_DIR = P1^5;
6 sbit CON_PUL = P1^6;
7 #define DIR_FOR 0
8 #define DIR_BACK 1
9
10 sbit B_F = P3^3;
11 sbit B_B = P3^4;
12 sbit B_STEP = P3^5;
13 sbit PLC_FOR = P1^4;
14 sbit PLC_BACK = P1^3;
15 sbit PLC_STEP = P1^2;
16
17 sbit WDI = P3^0;
18
19 unsigned char workMod;
20
21 #define MSG_NONE 0
22 #define MSG_FOR 1
23 #define MSG_BACK 2
24 #define MSG_STEP 3
25
26 #define WORK_NONE 0
27 #define WORK_FOR 1
28 #define WORK_BACK 2
29 #define WORK_STEP 3
30
31 void StepOne();
32
33 bit testFor()
34 {
35 1 unsigned char i;
36 1
37 1 for(i=0;i<2;i++)
38 1 {
39 2 if (PLC_FOR==0) return 0;
40 2 }
41 1 return 1;
42 1 }
43
44 bit testBack()
45 {
46 1 unsigned char i;
47 1
48 1 for(i=0;i<2;i++)
49 1 {
50 2 if (PLC_BACK==0) return 0;
51 2 }
52 1 return 1;
53 1 }
54
55 bit testStep()
C51 COMPILER V6.02 MAIN 01/08/2003 23:22:43 PAGE 2
56 {
57 1 unsigned char i;
58 1
59 1 for(i=0;i<100;i++)
60 1 {
61 2 if (PLC_STEP==0) return 0;
62 2 }
63 1 return 1;
64 1 }
65
66 void delay(unsigned long l)
67 {
68 1 while(l!=0)
69 1 {
70 2 WDI=!WDI;
71 2 l--;
72 2 }
73 1 }
74
75 unsigned char getMessage()
76 {
77 1 WDI=!WDI;
78 1 B_F=1;
79 1 B_B=1;
80 1 B_STEP=1;
81 1 if (B_F==0)
82 1 {
83 2 return MSG_FOR;
84 2 }
85 1 if (B_B==0)
86 1 {
87 2 return MSG_BACK;
88 2 }
89 1 if (B_STEP==0)
90 1 {
91 2 return MSG_STEP;
92 2 }
93 1 return MSG_NONE;
94 1 }
95
96 void main()
97 {
98 1 bit b_for,b_back,b_step;
99 1
100 1 workMod=WORK_NONE;
101 1 CON_DIR=DIR_BACK;
102 1
103 1 while(1)
104 1 {
105 2 b_for=testFor();
106 2 b_back=testBack();
107 2 b_step=testStep();
108 2 switch(getMessage())
109 2 {
110 3 case MSG_NONE:
111 3 break;
112 3 case MSG_FOR:
113 3 if(workMod!=WORK_FOR)
114 3 {
115 4 workMod=WORK_FOR;
116 4 CON_DIR=DIR_FOR;
117 4 }
C51 COMPILER V6.02 MAIN 01/08/2003 23:22:43 PAGE 3
118 3 else
119 3 {
120 4 workMod=WORK_NONE;
121 4 }
122 3 delay(10000);
123 3 break;
124 3 case MSG_BACK:
125 3 if(workMod!=WORK_BACK)
126 3 {
127 4 workMod=WORK_BACK;
128 4 CON_DIR=DIR_BACK;
129 4 }
130 3 else
131 3 {
132 4 workMod=WORK_NONE;
133 4 }
134 3 delay(10000);
135 3 break;
136 3 case MSG_STEP:
137 3 if(workMod==WORK_NONE)
138 3 {
139 4 workMod=WORK_STEP;
140 4 StepOne();
141 4 workMod=WORK_NONE;
142 4 }
143 3 break;
144 3 }
145 2 if (b_step==1)
146 2 {
147 3 StepOne();
148 3 }
149 2 if( (workMod==WORK_NONE) && (b_for==0) && (b_back==0) )
150 2 {
151 3 CON_PUL=1;
152 3 }
153 2 else
154 2 {
155 3 if(b_for==1)
156 3 {
157 4 CON_DIR=DIR_FOR;
158 4 }
159 3 else if(b_back==1)
160 3 {
161 4 CON_DIR=DIR_BACK;
162 4 }
163 3 CON_PUL=0;
164 3 delay(5);
165 3 CON_PUL=1;
166 3 delay(20);
167 3 }
168 2 }
169 1 }
170
171 void StepOne()
172 {
173 1 unsigned char i;
174 1
175 1 CON_DIR=DIR_FOR;
176 1 for(i=0;i<STEP_COU;i++)
177 1 {
178 2 WDI=!WDI;
179 2 CON_PUL=0;
C51 COMPILER V6.02 MAIN 01/08/2003 23:22:43 PAGE 4
180 2 delay(5);
181 2 CON_PUL=1;
182 2 delay(20);
183 2 }
184 1 delay(10000);
185 1 }
186
187
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 310 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 5
IDATA SIZE = ---- ----
BIT SIZE = ---- 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -