?? systhree_master.lst
字號:
256 2 {
257 3 if(keyon == 0) //防止按鍵沖突,當(dāng)還有未釋放的按鍵時不對其它按鍵動作響應(yīng)
258 3 {
259 4 first_row = 0; //掃描第一行按鍵
260 4 second_row = 1;
261 4 M_key = KEY;
262 4 if(M_key != 0xff)
263 4 {
264 5 switch(M_key)
265 5 {
266 6 case 0xfe:
267 6 keynum = 0x00;
268 6 break;
269 6 case 0xfd:
270 6 keynum = 0x01;
271 6 break;
272 6 case 0xfb:
273 6 keynum = 0x02;
274 6 break;
275 6 case 0xf7:
276 6 keynum = 0x03;
277 6 break;
278 6 case 0xef:
279 6 keynum = 0x04;
280 6 break;
281 6 case 0xdf:
282 6 keynum = 0x05;
283 6 break;
284 6 case 0xbf:
285 6 keynum = 0x06;
286 6 break;
287 6 case 0x7f:
288 6 keynum = 0x07;
289 6 break;
290 6 }
291 5 }
292 4 else
293 4 {
294 5 second_row = 0; //掃描第二行按鍵
295 5 first_row = 1;
296 5 M_key = KEY;
297 5 switch(M_key)
C51 COMPILER V8.05a SYSTHREE_MASTER 06/28/2007 21:08:47 PAGE 6
298 5 {
299 6 case 0xfe:
300 6 keynum = 0x08;
301 6 break;
302 6 case 0xfd:
303 6 keynum = 0x09;
304 6 break;
305 6 case 0xfb:
306 6 keynum = 0x0a;
307 6 break;
308 6 case 0xf7:
309 6 keynum = 0x0b;
310 6 break;
311 6 case 0xef:
312 6 keynum = 0x0c;
313 6 break;
314 6 case 0xdf:
315 6 keynum = 0x0d;
316 6 break;
317 6 case 0xbf:
318 6 keynum = 0x0e;
319 6 break;
320 6 case 0x7f:
321 6 keynum = 0x0f;
322 6 break;
323 6 }
324 5 }
325 4 getkey = 1; //獲得有效按鍵數(shù)值
326 4 keyon = 1; //防止按鍵沖突,當(dāng)獲得有效按鍵時將其置1
327 4 setvalue (keynum);
328 4 }
329 3 }
330 2 }
331 1 else
332 1 {
333 2 first_getkey = 0;
334 2 keyon = 0; //防止按鍵沖突,當(dāng)所有的按鍵都釋放時將其清0
335 2 }
336 1 }
337
338 /***************************************************
339 數(shù)碼管顯示函數(shù)
340 原型: void leddisp(void);
341 功能: 每次調(diào)用輪流顯示一位數(shù)碼管
342
343 ****************************************************/
344 void leddisp(void)
345 {
346 1 switch(lednum) //選擇需要顯示的數(shù)碼位
347 1 {
348 2 case 0:
349 2 LED1 = segtab[led[0]];
350 2 break;
351 2 case 1:
352 2 LED2 = segtab[led[1]];
353 2 break;
354 2 case 2:
355 2 LED3 = segtab[led[2]];
356 2 break;
357 2 case 3:
358 2 LED4 = segtab[led[3]];
359 2 break;
C51 COMPILER V8.05a SYSTHREE_MASTER 06/28/2007 21:08:47 PAGE 7
360 2 case 4:
361 2 LED5 = segtab[led[4]];
362 2 break;
363 2 case 5:
364 2 LED6 = segtab[led[5]];
365 2 break;
366 2 case 6:
367 2 LED7 = segtab[led[6]];
368 2 break;
369 2 case 7:
370 2 LED8 = segtab[led[7]];
371 2 break;
372 2 }
373 1
374 1 if(lednum == 0) //更新需要現(xiàn)實的數(shù)碼位
375 1 {
376 2 lednum = 7;
377 2 }
378 1 else
379 1 {
380 2 lednum = lednum-1;
381 2 }
382 1 }
383
384
385
386 /*******************************************************************
387 延時函數(shù)
388 函數(shù)原型: void delay(uint8 time_nop);
389 功能: 延時time_nop個nop
390
391 ********************************************************************/
392 void delay(uint8 time_nop)
393 {
394 1 uint8 i;
395 1 for(i=0;i<time_nop;i++)
396 1 {
397 2 _nop_();
398 2 }
399 1 }
400
401 void setvalue (unsigned char keynum) {
402 1
403 1 if(state == 0 && keynum == 10) state = 1;
404 1 else if(state == 1 ) { NOset = keynum ;state = 2 ; }
405 1 else if(state == 2 && keynum >= 0 && keynum <= 9 )
406 1 {
407 2 state = 2 ;
408 2 temV = temV*10 + keynum;
409 2
410 2 }
411 1 else if(state == 2 && keynum ==13 )
412 1 {
413 2 if(temV<=150 || temV>=20)
414 2 {
415 3 que[qu_i] = NOset;
416 3 Vset[NOset]= temV;
417 3 qu_i++;
418 3 }
419 2 temV = 0;state = 0 ;
420 2 }
421 1 else {state = 0; temV = 0 ;}
C51 COMPILER V8.05a SYSTHREE_MASTER 06/28/2007 21:08:47 PAGE 8
422 1
423 1
424 1 if(state != 1 && keynum == 15) lessAlarm = 1 ;
425 1 else lessAlarm =0;
426 1
427 1
428 1 if(state != 1 && keynum == 11) { qu_i=0;state = 0; temV = 0 ;}
429 1
430 1
431 1 }
432
433
434
435 void sendBuf(uchar i)
436 {
437 1 uchar a = 0;
438 1 if(que[i]<16 )
439 1 {
440 2 a = lessAlarm ? 16:0 ;
441 2 a += que[i];
442 2 a += 192;
443 2 P1_7 = 1;
444 2 SBUF = a;
445 2 P1_6 = 0;
446 2 P1_7 = 0;
447 2
448 2 }
449 1 }
450
451 void setAlarm(uchar b,uchar a)
452 {
453 1
454 1 uchar aa = a & 0x10;
455 1 if(aa == 16)
456 1 { switch(b)
457 2 {
458 3 case 0: alarm |= 0x01;
459 3 case 1: alarm |= 0x02;
460 3 case 2: alarm |= 0x04;
461 3 case 3: alarm |= 0x08;
462 3 case 4: alarm |= 0x10;
463 3 case 5: alarm |= 0x20;
464 3 case 6: alarm |= 0x40;
465 3 case 7: alarm |= 0x80;
466 3 case 8: alarm |= 0x100;
467 3 case 9: alarm |= 0x200;
468 3 case 10: alarm |= 0x400;
469 3 case 11: alarm |= 0x800;
470 3 case 12: alarm |= 0x1000;
471 3 case 13: alarm |= 0x2000;
472 3 case 14: alarm |= 0x4000;
473 3 case 15: alarm |= 0x8000;
474 3
475 3 }
476 2
477 2 }
478 1 else
479 1 switch(aa == 0)
480 1 {
481 2 case 0: alarm &= 0x0FFFE;
482 2 case 1: alarm &= 0x0FFFD;
483 2 case 2: alarm &= 0x0FFFB;
C51 COMPILER V8.05a SYSTHREE_MASTER 06/28/2007 21:08:47 PAGE 9
484 2 case 3: alarm &= 0x0FFF7;
485 2 case 4: alarm &= 0x0FFEF;
486 2 case 5: alarm &= 0x0FFDF;
487 2 case 6: alarm &= 0x0FFBF;
488 2 case 7: alarm &= 0x0FF7F;
489 2 case 8: alarm &= 0x0FEFF;
490 2 case 9: alarm &= 0x0FDFF;
491 2 case 10: alarm &= 0x0FBFF;
492 2 case 11: alarm &= 0x0F7FF;
493 2 case 12: alarm &= 0x0EFFF;
494 2 case 13: alarm &= 0x0DFFF;
495 2 case 14: alarm &= 0x0BFFF;
496 2 case 15: alarm &= 0x07FFF;
497 2 lessAlarm = 0 ;
498 2 }
499 1 }
500
501
502 /*
503 A \began to set celerate
504 B /主站重新設(shè)定巡回點
505 C
506 D enter
507 E
508 F cancel alarm
509 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1332 ----
CONSTANT SIZE = 18 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 70 3
IDATA SIZE = ---- ----
BIT SIZE = 6 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -