📄 ei10.lst
字号:
C51 COMPILER V6.12 EI10 01/11/2008 14:04:17 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE EI10
OBJECT MODULE PLACED IN F:\XUYIWU\绕线机\从机1\EI10.OBJ
COMPILER INVOKED BY: C:\C51\BIN\C51.EXE F:\XUYIWU\绕线机\从机1\EI10.C DB SB OE OT(0)
stmt level source
1
2 #include <reg52.h>
3 #include <absacc.h>
4 #define Address 0x01 //本地址:
5 #define uchar unsigned char
6 #define uint unsigned int
7 #define BYTE unsigned char
8 #define WORD unsigned int
9 #define CS 01
10
11 #define CSTIME 10//超时时间
12 #define STOP 0x00//停
13 #define UPSTEP0 0x08
14 #define UPSTEP1 0x01
15 #define UPSTEP2 0x02
16 #define UPSTEP3 0x03
17 #define UPSTEP4 0x04
18 #define UPSTEP5 0x05
19 #define UPSTEP6 0x06
20 #define UPSTEP7 0x07
21
22 #define DOWNSTEP0 0x88
23 #define DOWNSTEP1 0x81
24 #define DOWNSTEP2 0x82
25 #define DOWNSTEP3 0x83
26 #define DOWNSTEP4 0x84
27 #define DOWNSTEP5 0x85
28 #define DOWNSTEP6 0x86
29 #define DOWNSTEP7 0x87
30 #define Bsf(bt) bt = 1;
31 #define Bcf(bt) bt = 0;
32
33
34 #define KS_IN X00//上接近开关
35 #define KZ_IN X01//下接近开关
36 #define KX_IN X02//中接近开关
37 #define KRUN_IN X03//运行开关
38 #define TIME0_IN X04//设定绕度1
39 #define TIME1_IN X05//设定绕度2
40 #define TIME2_IN X06//设定绕度3
41 #define TIME3_IN X07//设定绕度4
42 #define TIME4_IN X10//设定绕度5
43 #define TIME5_IN X11//设定绕度6
44 #define TIME6_IN X12//设定绕度7
45
46 #define M0_OUT Y00//正转/停
47 #define M1_OUT Y01//反转/停
48 #define M2_OUT Y02//故障清除
49 #define M3_OUT Y03//多段指令1
50 #define M4_OUT Y04//多段指令2
51 #define M5_OUT Y05//多段指令3
52 #define BJ_OUT Y06//
53 sbit IN00 = P2^3;
54 sbit IN01 = P3^6;
55 sbit IN02 = P3^7;
C51 COMPILER V6.12 EI10 01/11/2008 14:04:17 PAGE 2
56 sbit IN03 = P3^5;
57 sbit IN04 = P3^4;
58 sbit IN05 = P3^3;
59 sbit IN06 = P3^2;
60 sbit IN07 = P1^6;
61 sbit IN10 = P1^7;
62 sbit IN11 = P1^5;
63 sbit IN12 = P1^4;
64 sbit OUT00 = P2^4;
65 sbit OUT01 = P2^5;
66 sbit OUT02 = P2^6;
67 sbit OUT03 = P2^7;
68 sbit OUT04 = P0^4;
69 sbit OUT05 = P0^5;
70 sbit OUT06 = P0^3;
71 sbit OUT07 = P0^2;
72 sbit OUT10 = P0^1;
73 sbit OUT11 = P0^0;
74 sbit RCK595= P0^7;
75 sbit SEG595= P2^0;
76 sbit SRCK595=P2^1;
77 sbit SC75176= P0^6;
78 //sbit SC75176=P2^2;
79 sbit WTDCS = P1^0;
80 sbit SOUT = P1^1;
81 sbit SCK = P1^2;
82 sbit SIN = P1^3;
83
84 uchar bdata flag;
85 uchar bdata X0;//
86 uchar bdata X1;//
87
88 uchar bdata Y0;//
89 uchar bdata Y1;//
90
91
92
93 typedef struct
94 {
95 uchar AutoStep;//自动步
96 uint RunMsTick;//运行毫秒滴答
97 uchar RunMsTickFlag;//运行毫秒滴答标志
98 uint TestMsTick;//测试运行毫秒滴答
99
100 uint SMsTickSave;//保存向上运行毫秒滴答
101 uint XMsTickSave;//保存向下运行毫秒滴答
102 uchar XStatus;//下限运行到位
103 uchar SStatus;//上限运行到位
104 uchar ZStatus;//中限运行到位
105 uchar Speed;//速度
106 uchar OverScecond;//超时
107 uchar OverScecondFlag;//超时标志
108 uchar Run;//开始运行
109 uchar Worm;//报警
110 uint AddStep;//每步加的时间
111 void (*GetStus)();//得到自动运行状态
112 void (*PutCon)();//输出控制
113 uint (*GetAddStep)();//得到步数细分
114 }SYS,* PSYS;
115 SYS SysAuto;
116 PSYS PSysAuto;
117 typedef struct
C51 COMPILER V6.12 EI10 01/11/2008 14:04:17 PAGE 3
118 {
119 uchar Step;//自动步
120 uint UpTime;//运行毫秒滴答
121 uchar UPTimeFlag;//运行毫秒滴答标志
122 }KEY1,* PKEY1;
123 KEY1 Key;
124 PKEY1 PKey;
125 static unsigned char idata LED[03];//定义X0,X1,RUN ,POWER,STOP,Y0,Y1输出显示
126 //static unsigned char idata check _at_ 0x80;
127 sbit X00 = X0^0;
128 sbit X01 = X0^1;
129 sbit X02 = X0^2;
130 sbit X03 = X0^3;
131 sbit X04 = X0^4;
132 sbit X05 = X0^5;
133 sbit X06 = X0^6;
134 sbit X07 = X0^7;
135 sbit X10 = X1^0;
136 sbit X11 = X1^1;
137 sbit X12 = X1^2;
138 sbit X13 = X1^3;
139 sbit X14 = X1^4;
140 sbit X15 = X1^5;
141 sbit X16 = X1^6;
142 sbit X17 = X1^7;
143
144 ///////////////////////
145 sbit Y00 = Y0^0;
146 sbit Y01 = Y0^1;
147 sbit Y02 = Y0^2;
148 sbit Y03 = Y0^3;
149 sbit Y04 = Y0^4;
150 sbit Y05 = Y0^5;
151 sbit Y06 = Y0^6;
152 sbit Y07 = Y0^7;
153 sbit Y10 = Y1^0;
154 sbit Y11 = Y1^1;
155 sbit Y12 = Y1^2;
156 sbit Y13 = Y1^3;
157 sbit Y14 = Y1^4;
158 sbit Y15 = Y1^5;
159 sbit Y16 = Y1^6;
160 sbit Y17 = Y1^7;
161 sbit Y03_LED = ACC^0;
162 sbit Y04_LED = ACC^1;
163 sbit Y05_LED = ACC^2;
164 sbit Y06_LED = ACC^3;
165 sbit Y07_LED = ACC^4;
166 sbit Y11_LED = ACC^5;
167 sbit Y10_LED = ACC^6;
168 sbit Y00_LED = ACC^7;
169 ////////////////////////
170 sbit POWER_LED=ACC^0;
171 sbit RUN_LED = ACC^1;
172 sbit STOP_LED =ACC^2;
173 sbit Y01_LED = ACC^3;
174 sbit Y02_LED = ACC^4;
175 sbit X07_LED = ACC^5;
176 sbit X06_LED = ACC^6;
177 sbit X05_LED = ACC^7;
178 ////////////////////////
179 sbit X04_LED = ACC^0;
C51 COMPILER V6.12 EI10 01/11/2008 14:04:17 PAGE 4
180 sbit X03_LED = ACC^1;
181 sbit X12_LED = ACC^2;
182 sbit X11_LED = ACC^3;
183 sbit X10_LED = ACC^4;
184 sbit X00_LED = ACC^5;
185 sbit X01_LED = ACC^6;
186 sbit X02_LED = ACC^7;
187
188
189 sfr T2MOD = 0xC9;
190
191
192 void Init();//主程序初始化
193 void GetKey();//开关输入
194 void Out();//输出更新
195 alien void WDT_EN();
196 alien uchar UpDate(uchar tt);//更新595汇编模块中的程序
197 void Delay(uchar time);//延时1*Xms
198 void AutoRun();//自动运行
199 void GetStus();//得到自动运行状态
200 void PutCon();//输出控制
201 uint GetAddStep();//得到步数细分
202
203
204 void main()
205 {
206 1 Init();//主程序初始化
207 1 // WDT_EN();//开看门狗
208 1 Delay(250);//延时250ms
209 1 WTDCS=~WTDCS;
210 1 Delay(250);//延时250ms
211 1 WTDCS=~WTDCS;
212 1 Delay(250);//延时250ms
213 1 WTDCS=~WTDCS;
214 1 Delay(250);//延时250ms
215 1 PSysAuto = &SysAuto;
216 1 PSysAuto->GetStus = GetStus;
217 1 PSysAuto->PutCon = PutCon;
218 1 PSysAuto->GetAddStep = GetAddStep;
219 1 PKey = &Key;
220 1 while(1)
221 1 {
222 2 WTDCS=~WTDCS;
223 2 GetKey();//开关输入
224 2 AutoRun();//自动运行
225 2 Out();//输出更新
226 2 }
227 1 }
228
229
230 //功能:自动运行
231 void AutoRun()
232 {
233 1 //得到输入信号
234 1 PSysAuto->GetStus();
235 1 PSysAuto->AddStep = PSysAuto->GetAddStep();//得到步数细分
236 1 if(PSysAuto->AutoStep > 6 | PSysAuto->Run == 0 | PSysAuto->Worm == CS)
237 1 {
238 2 PSysAuto->AutoStep = 0;
239 2 if(PSysAuto->Run == 0)
240 2 {
241 3 PSysAuto->Worm = 0;
C51 COMPILER V6.12 EI10 01/11/2008 14:04:17 PAGE 5
242 3 }
243 2 }
244 1
245 1 switch(PSysAuto->AutoStep)
246 1 {
247 2 case 0:
248 2 PSysAuto->Speed = STOP;
249 2 PSysAuto->AutoStep++;
250 2 break;//保护功能
251 2 case 1:
252 2 if(PSysAuto->XStatus)
253 2 {
254 3 PSysAuto->AutoStep = 2;
255 3 }
256 2 else
257 2 {
258 3 PSysAuto->Speed = DOWNSTEP2;
259 3 PSysAuto->OverScecond = CSTIME;
260 3 Bcf(PSysAuto->OverScecondFlag);
261 3 PSysAuto->AutoStep++;
262 3 }
263 2
264 2 break;//找初始态Then 系统往下
265 2 case 2:
266 2 if(PSysAuto->XStatus)
267 2 {
268 3 PSysAuto->Speed = UPSTEP1;
269 3 PSysAuto->TestMsTick = 0;
270 3 PSysAuto->OverScecond = CSTIME;
271 3 Bcf(PSysAuto->OverScecondFlag);
272 3 PSysAuto->AutoStep++;
273 3 }
274 2 if(PSysAuto->OverScecondFlag)
275 2 {
276 3 PSysAuto->Worm = CS;
277 3 PSysAuto->AutoStep = 0;
278 3 }
279 2 break;//找到初始态Then 系统往上
280 2 case 3:
281 2 if(PSysAuto->ZStatus)
282 2 {
283 3 PSysAuto->SMsTickSave = PSysAuto->TestMsTick;
284 3 PSysAuto->Speed = DOWNSTEP2;
285 3 PSysAuto->TestMsTick = 0;
286 3 PSysAuto->OverScecond = CSTIME;
287 3 Bcf(PSysAuto->OverScecondFlag);
288 3 PSysAuto->AutoStep++;
289 3 }
290 2 if(PSysAuto->OverScecondFlag)
291 2 {
292 3 PSysAuto->Worm = CS;
293 3 PSysAuto->AutoStep = 0;
294 3 }
295 2
296 2 break;//得到向上时间then 系统向下
297 2 case 4:
298 2 if(PSysAuto->XStatus)
299 2 {
300 3 PSysAuto->XMsTickSave = PSysAuto->TestMsTick;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -