📄 b3_2006.lst
字号:
250 2 ku=3;
251 2 MCUToPC[5]='3';
252 2 break;
253 2 case 0x18:
254 2 ku=5;
255 2 MCUToPC[5]='5';
256 2 break;
257 2 case 0x24:
258 2 ku=2;
259 2 MCUToPC[5]='2';
260 2 break;
261 2 case 0x52:
262 2 ku=4;
263 2 MCUToPC[5]='4';
264 2 break;
265 2 case 0x55:
266 2 ku=7;
267 2 MCUToPC[5]='7';
268 2 break;
269 2 case 0x57:
270 2 ku=1;
271 2 MCUToPC[5]='1';
272 2 break;
273 2 default: break;
274 2 }
275 1 switch(a) //个位
276 1 {
277 2 case 0x00:
278 2 mu=8;
279 2 MCUToPC[6]='8';
280 2 break;
281 2 case 0x04:
282 2 mu=6;
283 2 MCUToPC[6]='6';
284 2 break;
285 2 case 0x12:
286 2 mu=2;
287 2 MCUToPC[6]='2';
288 2 break;
289 2 case 0x20:
290 2 mu=0;
291 2 MCUToPC[6]='0';
292 2 break;
293 2 case 0x40:
294 2 mu=9;
295 2 MCUToPC[6]='9';
296 2 break;
297 2 case 0x44:
298 2 mu=5;
299 2 MCUToPC[6]='5';
300 2 break;
301 2 case 0x49:
C51 COMPILER V7.50 B3_2006 04/09/2006 20:35:21 PAGE 6
302 2 mu=4;
303 2 MCUToPC[6]='4';
304 2 break;
305 2 case 0x50:
306 2 mu=3;
307 2 MCUToPC[6]='3';
308 2 break;
309 2 case 0x71:
310 2 mu=7;
311 2 MCUToPC[6]='7';
312 2 break;
313 2 case 0x79:
314 2 mu=1;
315 2 MCUToPC[6]='1';
316 2 break;
317 2 default: break;
318 2 }
319 1
320 1 return (wu+ju*100+ku*10+mu);
321 1 }
322 /*! @function
323 ***************************************************
324 <PRE>
325 函数名 : <Read8255>
326 功能 : <初始化MCU板上的设备>
327 参数 : <无>
328 返回值 : <void>
329 抛出异常 : <无>
330 ---------------------------------------------------
331 备注 : <初始化参数要根据具体设备来设定!>
332 典型用法 : < InitialDevices(); >
333 ---------------------------------------------------
334 作者 :
335 创立时间 :2005.9.8
336 第 次修改时间/修改者:
337
338 </PRE>
339 ***************************************************/
340 int Read8255(int ID8255PA,int ID8255PB,int ID8255PC)
341 {
342 1 int kpa,kpb,kpc,fhw,qwei;
343 1 kpa=ID8255PA;
344 1 kpa=kpa & 0x7f;
345 1 kpb=ID8255PB;
346 1 fhw= kpb&0x01;
347 1 kpb=kpb>>1;
348 1 kpc=ID8255PC;
349 1 qwei= kpc&0x01;
350 1 kpc=kpc>>1;
351 1 return CM(kpa,kpb,kpc,qwei,fhw);
352 1 }
353 /*! @function
354 ***************************************************
355 <PRE>
356 函数名 : <serail() interrupt 4>
357 功能 : <serial port receive function>
358 参数 : <void>
359 返回值 : <void>
360 抛出异常 : <无>
361 ---------------------------------------------------
362 备注 : <interrupt function>
363 典型用法 : < >
C51 COMPILER V7.50 B3_2006 04/09/2006 20:35:21 PAGE 7
364 ---------------------------------------------------
365 作者 :
366 创立时间 :2005.9.8
367 第 次修改时间/修改者:
368
369 </PRE>
370 ***************************************************/
371 void serail() interrupt 4 using 2
372 {
373 1 unsigned char u,jjj,iii;
374 1 EA=0;
375 1 //if(RI) BEGIN
376 1 if(RI)
377 1 {
378 2 ucReCom[uiRe_In]=SBUF;
379 2
380 2 if(ucReCom[uiRe_In]=='@')
381 2 {
382 3 uiRe_In=0;
383 3 ucReCom[uiRe_In]=SBUF;
384 3 }
385 2
386 2 if(ucReCom[0]=='@')
387 2 {
388 3 ucReCom[uiRe_In]=SBUF;
389 3 uiRe_In++;
390 3 }
391 2
392 2 //if(ucReCom[uiRe_In-1]=='%') BEGIN
393 2 if(ucReCom[uiRe_In-1]=='%')
394 2 {
395 3 //if(ucReCom[1]!='%') BEGIN
396 3 if(ucReCom[1]!='%' && ucReCom[2]!='%')
397 3 {
398 4 //1.ClosePower
399 4 if(ucReCom[1]=='P' && ucReCom[2]=='W' && ucReCom[3]=='0')
400 4 {
401 5 /******************************/
402 5 // EVENTHAND=ClosPow;
403 5 PB8255C=0x00;
404 5 /*******************************/
405 5 goto mk;
406 5 }
407 4 //2.OpenPower
408 4 if(ucReCom[1]=='P' && ucReCom[2]=='W' && ucReCom[3]=='1')
409 4 {
410 5 /******************************/
411 5 //EVENTHAND=OpenPow;
412 5 PB8255C=0xc0;
413 5 /*******************************/
414 5 goto mk;
415 5 }
416 4 //3. SAVE speed & time
417 4 if(ucReCom[1]=='S' && ucReCom[2]=='A' )
418 4 {
419 5 /******************************/
420 5 jjj=0;
421 5 for(u=18;u>2;u--)
422 5 {
423 6 if((ucReCom[u] < 0x3a) && (ucReCom[u] > 0x2f))
424 6 {
425 7 iii= ucReCom[u]-0x30;
C51 COMPILER V7.50 B3_2006 04/09/2006 20:35:21 PAGE 8
426 7 DP[jjj]= table[iii];
427 7 }
428 6 else if((ucReCom[u] < 0x4b) && (ucReCom[u] > 0x40))
429 6 {
430 7 iii= ucReCom[u]-0x37;
431 7 DP[jjj]= table[iii];
432 7 }
433 6 jjj++;
434 6 }
435 5 do
436 5 {
437 6 ACC=CMD8279;
438 6 }while(clflag == 1);
439 5 CMD8279 = 0x08;//显示方式
440 5 Delay(1);///
441 5 CMD8279 = 0x2f;//分频系数
442 5 for(jjj=0;jjj<16;jjj++)
443 5 {
444 6 CMD8279 = jjj+0x80;
445 6 DAT8279 = DP[jjj];
446 6 }
447 5
448 5 /*******************************/
449 5 //EVENTHAND=Wri8279;
450 5 goto mk;
451 5 }
452 4 //4.KillError
453 4 if(ucReCom[1]=='K' && ucReCom[2]=='E' )
454 4 {
455 5 /******************************/
456 5 EVENTHAND=WAIT;
457 5 /*******************************/
458 5 goto mk;
459 5 }
460 4 //5.状态灯
461 4 if(ucReCom[1]=='Z' && ucReCom[2]=='T' )
462 4 {
463 5 /******************************/
464 5 //EVENTHAND=State;
465 5 switch(ucReCom[3])
466 5 {
467 6 case 'a': PC8255C=0x40; break; //启动
468 6 case 'b': PC8255C=0x20; break; //就绪
469 6 case 'c': PC8255C=0x10; break; //测量
470 6 case 'd': PC8255C=0x01; break; //完成
471 6 case 'e': PC8255C=0x02; break; //出错
472 6 case 'f': PC8255C=0x04; break; //出错
473 6 case 'g': PC8255C=0x08; break; //出错
474 6 case 'h': PC8255C=0x00; break; //状态灯全灭
475 6
476 6 default : break;
477 6 }
478 5 /*******************************/
479 5 goto mk;
480 5 }
481 4 //6.发送标志位设置
482 4 if(ucReCom[1]=='F')
483 4 {
484 5 flag=ucReCom[2];
485 5 }
486 4
487 4 mk: jjj=0;
C51 COMPILER V7.50 B3_2006 04/09/2006 20:35:21 PAGE 9
488 4 }
489 3 //if(ucReCom[1]!='%') END
490 3 }
491 2 //if(ucReCom[uiRe_In-1]=='%') END
492 2 RI=0;
493 2 }
494 1 //if(RI) END
495 1 EA=1;
496 1 }
497 /************************************************************************************************/
498
499
500 void Int_one() interrupt 0 using 0
501 {
502 1 uchar ppt;
503 1 uint drH,drL;
504 1 EA=0;
505 1 ppt = P1;
506 1 if((ppt & 0x01) == 0x01) //满足条件则由A“即将打开标记”引起中断
507 1 {
508 2 P1_5 = 0;
509 2 if(P3_4 == 1) //当大小盘同步时 启动计数器0;1,2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -