📄 spotwelder.lst
字号:
222 3 else if(position==12)
223 3 SpaceTime=DEC_DSP(100,SpaceTime);
224 3 else if(position==13)
225 3 SpaceTime=DEC_DSP(10,SpaceTime);
226 3 else if(position==14)
227 3 SpaceTime=DEC_DSP(1,SpaceTime);
228 3
229 3 }
230 2 break;
231 2 case 0x10: //shift
232 2 DeleteKeyCode();
233 2 if(bcheck){bcheck=0;break;}
234 2 if(Program==FUNC)
235 2 {
236 3 position++;
237 3 if(position==15)
238 3 position=0;
239 3 }
240 2 break;
241 2
C51 COMPILER V7.50 SPOTWELDER 11/07/2005 02:10:44 PAGE 5
242 2 case 0x20: //Function
243 2 DeleteKeyCode();
244 2 bcheck=0;
245 2 if(Program==RUN)
246 2 {
247 3 Program=FUNC;
248 3 bSet_led=0;
249 3 flag_func=1;
250 3 flag_run=0;
251 3 position=0;
252 3 Work=Emergency;
253 3 }
254 2 else
255 2 {
256 3 Program=RUN;
257 3 flag_func=0;
258 3 flag_run=1;
259 3 bSet_led=1;
260 3 }
261 2 break;
262 2 case 0x40: //check
263 2 DeleteKeyCode();
264 2 if((current_state==stop)&&(flag_func==0))
265 2 { if(!bcheck)
266 3 {
267 4 bPrrz_led=0;
268 4 bPrrz_RlyDr=0;
269 4 prrz_buf=PrrzTime;
270 4 PrrzTime=0;
271 4 bcheck=1;
272 4 Work=check;
273 4 }
274 3 else bcheck=0;
275 3 }
276 2 break;
277 2 default:
278 2 break;
279 2 }
280 1 }
281 /*********************************************************************************
282 这里的数据填充顺序是为和 74154 的输出顺序相配合,因布线不合理所致 。
283 **********************************************************************************/
284 void DisData_DSP()
285 {
286 1 DisData[0]=(char)((SpaceTime/100)%10);
287 1 DisData[1]=(char)((SpaceTime/10)%10);
288 1 DisData[2]=(char)(SpaceTime%10);
289 1 DisData[3]=(char)((PrrzLTime/100)%10);
290 1 DisData[4]=(char)((PrrzLTime/10)%10);
291 1 DisData[5]=(char)(PrrzLTime%10);
292 1 DisData[6]=(char)((PrrzTime/100)%10);
293 1 DisData[7]=(char)((PrrzTime/10)%10);
294 1 DisData[8]=(char)(PrrzTime%10);
295 1 DisData[9]=(char)((WeldTime/100)%10);
296 1 DisData[10]=(char)((WeldTime/10)%10);
297 1 DisData[11]=(char)(WeldTime%10);
298 1 DisData[12]=(char)((WorkCount/100)%10);
299 1 DisData[13]=(char)((WorkCount/10)%10);
300 1 DisData[14]=(char)(WorkCount%10);
301 1
302 1 }
303 /*************************** LED_Display() ************************************
C51 COMPILER V7.50 SPOTWELDER 11/07/2005 02:10:44 PAGE 6
304
305 i 左移 4 位做为 74154 的输入,74154的 输出 Q0-Q14 为SpaceTimed \PrrzLTime\PrrzTime\
306 WeldTime\WorkCount 的 百位 ,十 位,个位。而面板上的次序为 PrrzTime \WeldTime \WorkCount\
307 PrrzLTime\SpaceTime,这样以来按键移位的顺序和显示位驱动的顺序无法统一,需要分别处理
308 ***********************************************************************************/
309
310 void LED_Display()
311 {
312 1 static unsigned int j;
313 1 static unsigned char i;
314 1 P2_7=1;
315 1 DisData[i] &=0x0f;
316 1 DisData[i] |=(i<<4);
317 1 if(flag_func)
318 1 {
319 2 if(j++>999)j=0;
320 2 if(j>499)P0=DisData[i];
321 2 else
322 2 {
323 3 if((position==0)&&(i==6))P0=0xff;
324 3 else if((position==1)&&(i==7))P0=0xff;
325 3 else if((position==2)&&(i==8))P0=0xff;
326 3 else if((position==3)&&(i==9))P0=0xff;
327 3 else if((position==4)&&(i==10))P0=0xff;
328 3 else if((position==5)&&(i==11))P0=0xff;
329 3 else if((position==6)&&(i==12))P0=0xff;
330 3 else if((position==7)&&(i==13))P0=0xff;
331 3 else if((position==8)&&(i==14))P0=0xff;
332 3 else if((position==9)&&(i==3))P0=0xff;
333 3 else if((position==10)&&(i==4))P0=0xff;
334 3 else if((position==11)&&(i==5))P0=0xff;
335 3 else if((position==12)&&(i==0))P0=0xff;
336 3 else if((position==13)&&(i==1))P0=0xff;
337 3 else if((position==14)&&(i==2))P0=0xff;
338 3 else P0=DisData[i];
339 3 }
340 2 }
341 1 else P0=DisData[i];
342 1 if((i==1)||(i==3) ||(i==6)||(i==9))P2_7=0; //小数点
343 1 i++;
344 1 if(i==15)i=0;
345 1 }
346
347 /************************** initail() ***************************************/
348 void Initail()
349 {
350 1 TCON=0x01; //IT0=1,下降沿触发中断
351 1 IP=0x04; //PX0=1;外部中断优先级最高
352 1 IE=0x8b; //EA=1,ET1=1,ET0=1,EX0=1;
353 1 TMOD=0x11;
354 1 TL1=71;
355 1 TH1=243;
356 1 TR1=1;
357 1 TH0=216;
358 1 TL0=239;
359 1 TR0=1;
360 1 bExecute=0;
361 1 KeyCode=0;
362 1 KeyState=0;
363 1 Program=RUN;
364 1 //DownCT=0;
365 1 }
C51 COMPILER V7.50 SPOTWELDER 11/07/2005 02:10:44 PAGE 7
366
367 void InitValue()
368 {
369 1 PrrzTime=50;
370 1 WeldTime=50;
371 1 PrrzLTime=50;
372 1 WorkCount=10;
373 1 SpaceTime=5;
374 1 Program=RUN;
375 1 WorkMode=MAN;
376 1 }
377 //****************************
378 void delay(uchar i,uchar j)
379 {
380 1 uchar n,m;
381 1 for(n=i;n>0;n--)
382 1 for(m=j;m>0;m--);
383 1 }
384 //************************* void main() ************************************
385
386 unsigned char data FSTBuf[2]={0,0};
387
388 void main(void)
389 {
390 1 unsigned char i;
391 1 unsigned int data *rptr;
392 1 for(i=5;i>0;i--)
393 1 IRcvStr(AT24WC01,0x20,FSTBuf,2);
394 1 i=FSTBuf[0]+FSTBuf[1];
395 1 if(i!=0xcc)
396 1 {
397 2 FSTBuf[0]=0x39;
398 2 FSTBuf[1]=0x93;
399 2 for(i=5;i>0;i--)
400 2 ISendStr(AT24WC01,0x20,FSTBuf,2);
401 2 InitValue();
402 2 flag_run=1;
403 2 }
404 1 else
405 1 {
406 2 do { i=IRcvStr(AT24WC01,0x00,trnscv,11);
407 3 }while(!i);
408 2 rptr=trnscv;
*** WARNING C182 IN LINE 408 OF SPOTWELDER.C: pointer to different objects
409 2 PrrzTime=*rptr;
410 2 rptr+=1;
411 2 WeldTime=*rptr;
412 2 rptr+=1;
413 2 WorkCount=*rptr;
414 2 rptr+=1;
415 2 PrrzLTime=*rptr;
416 2 rptr+=1;
417 2 SpaceTime=*rptr;
418 2 WorkMode=trnscv[10];
419 2 if( (PrrzTime>999) ||(WeldTime>999)
420 2 ||(WorkCount>999)||(PrrzLTime>999)||(SpaceTime>999))
421 2 {
422 3 InitValue();flag_run=1;
423 3 }
424 2 if(WorkMode==AUTO)bMode_led=0;
425 2 }
426 1 Initail();
C51 COMPILER V7.50 SPOTWELDER 11/07/2005 02:10:44 PAGE 8
427 1 while(1)
428 1 {
429 2 Key_Server();
430 2 DisData_DSP();
431 2 if(flag_run==1)
432 2 {
433 3 flag_run=0;
434 3 rptr=trnscv;
*** WARNING C182 IN LINE 434 OF SPOTWELDER.C: pointer to different objects
435 3 *rptr=PrrzTime;
436 3 rptr+=1;
437 3 *rptr=WeldTime;
438 3 rptr+=1;
439 3 *rptr=WorkCount;
440 3 rptr+=1;
441 3 *rptr=PrrzLTime;
442 3 rptr+=1;
443 3 *rptr=SpaceTime;
444 3 trnscv[10]=WorkMode;
445 3 do{ i=ISendStr(AT24WC01,0x00,trnscv,8);
446 4 }while(!i);
447 3 delay(50,50); //10ms
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -