📄 hicj6.lst
字号:
286 2 i=(i>>4)&7;
287 2 if(i) Led[i]|=0x80; //Point
288 2 for(i=0;i<8;i++)
289 2 {
290 3 write7279(DECODE0+i,Led[i],0); //Hdd
291 3 }
292 2 for(i=0;i<4;i++)
293 2 {
294 3 write7279(DECODE0+i,Led[i+8],1); //House Code
295 3 }
296 2
297 2 if(Led[15]>0)
298 2 write7279(DECODE1+7,Led[15],1);
299 2 else
300 2 write7279(DECODE0+7,0x0f,1);
301 2 i=Read1B(200+House,0);
302 2 i&=0x0f;
303 2 switch (i)
C51 COMPILER V6.12 HICJ6 01/03/2005 12:08:21 PAGE 6
304 2 {
305 3 case (0x01):
306 3 Type=0x04;
307 3 break;
308 3 case (0x02):
309 3 Type=0x02;
310 3 break;
311 3 case (0x04):
312 3 Type=0x01;
313 3 break;
314 3 case (0x08):
315 3 Type=0x80;
316 3 break;
317 3 default:
318 3 Type=0;
319 3 break;
320 3 }
321 2 Sp_Flag=0;
322 2 Alarm=0;
323 2 if(Pulse%2) Alarm=0x08;
324 2 Short_Bak=Read1B(170+House/8,0);
325 2 if(Short_Bak&(1<<(House%8)))
326 2 {
327 3 Alarm|=0x10;
328 3 Sp_Flag=1;
329 3 }
330 2 Break_Bak=Read1B(175+House/8,0);
331 2 if(Break_Bak&(1<<(House%8)))
332 2 {
333 3 Alarm|=0x20;
334 3 Sp_Flag=1;
335 3 }
336 2 Alarm|=Type;
337 2 Alarm_Flag=1;
338 2
339 2 if(Short_New[House/8]&(1<<(House%8)))
340 2 Flash|=1;
341 2 if(Break_New[House/8]&(1<<(House%8)))
342 2 Flash|=2;
343 2
344 2 }
345 1 else
346 1 {
347 2 for(i=0;i<8;i++)
348 2 {
349 3 write7279(UNDECODE+i,1,0);
350 3 }
351 2 for(i=0;i<2;i++)
352 2 {
353 3 write7279(UNDECODE+i,1,1);
354 3 }
355 2 write7279(UNDECODE+7,1,1); //One Led
356 2 Led[11]=(House+1)/10;
357 2 Led[10]=(House+1)%10;
358 2 write7279(DECODE0+2,Led[10],1);
359 2 write7279(DECODE0+3,Led[11],1);
360 2 write7279(UNDECODE+6,0x00,1); //Type Alarm
361 2 Sp_Flag=0;
362 2 }
363 1
364 1
365 1
C51 COMPILER V6.12 HICJ6 01/03/2005 12:08:21 PAGE 7
366 1
367 1
368 1
369 1 }
370 /*
371 void Key_Pro(void)
372 {
373 //Key_New=read7279(CMD_READ);
374 if(Key_New==0xff) Key_New=0;
375 Key_Val=Key_New^Key_Old & Key_New;
376 Key_Old=Key_New;
377 if (Key_Val==0x3a)
378 {
379 Key_Press=1;
380 House++;
381 House=House%House_Sum;
382 Press_Count=0;
383 }
384
385
386 }
387 */
388 void Key_Pro(void)
389 {
390 1 BYTE Key_Tmp;
391 1 Key_New =Key;
392 1 Key_Tmp=(Key_New^Key_Old)&(~Key_New);
393 1 if(Key_Tmp)
394 1 {
395 2 Key_Val=1;
396 2 Key_C=0;
397 2 }
398 1 if(Key_Val)Key_C++;
399 1 Key_Old=Key_New;
400 1 if (Key_C>1)
401 1 {
402 2 Key_Val=0;
403 2 Key_C=0;
404 2 Key_Press=1;
405 2 House++;
406 2 if(House_Max>1)
407 2 {
408 3 House=House%House_Max;
409 3 }
410 2 else House=0;
411 2 Press_Count=0;
412 2 }
413 1
414 1
415 1 }
416
417 /**********************************************************
418 *名 称:LedTest
419 *功 能:LED数码管检测
420 *说 明:对数码管分别按段、位进行检测 send_byte 后的片选为什么要独立?
421 *调 用:write7279 send_byte
422 *入口参数:无
423 *返 回 值:无
424 ***********************************************************/
425
426 void LedTest(void)
427 {
C51 COMPILER V6.12 HICJ6 01/03/2005 12:08:21 PAGE 8
428 1 BYTE data i,j;
429 1 send_byte(CMD_RESET,0); // 清除显示
430 1 cs1=cs2=1;
431 1 send_byte(CMD_RESET,1);
432 1 cs1=cs2=1;
433 1 /*
434 1 send_byte(CMD_TEST,0);
435 1 cs1=cs2=1;
436 1 send_byte(CMD_TEST,1);
437 1 cs1=cs2=1;
438 1 send_byte(CMD_RESET,0); // 清除显示
439 1 cs1=cs2=1;
440 1 send_byte(CMD_RESET,1);
441 1 cs1=cs2=1; */
442 1 for(i=0;i<6;i++)
443 1 {
444 2 Speaker=0;
445 2 for(j=0;j<8;j++)
446 2 {
447 3 write7279(UNDECODE+j,LedCode[i],0);
448 3 write7279(UNDECODE+j,LedCode[i],1);
449 3
450 3 }
451 2 delay10ms(20);
452 2 Speaker=1;
453 2 delay10ms(80);
454 2
455 2 }
456 1 send_byte(CMD_RESET,0); // 清除显示
457 1 cs1=cs2=1;
458 1 send_byte(CMD_RESET,1);
459 1 cs1=cs2=1;
460 1 for(i=1;i<8;i++)
461 1 {
462 2 Speaker=0;
463 2 write7279(UNDECODE+7-i,0xff,1);
464 2 delay10ms(20);
465 2 Speaker=1;
466 2 delay10ms(80);
467 2 send_byte(CMD_RESET,1); // 清除显示
468 2 cs1=cs2=1;
469 2
470 2 }
471 1
472 1 Speaker=0;
473 1 write7279(UNDECODE+7,0xff,1);
474 1 delay10ms(20);
475 1 Speaker=1;
476 1 delay10ms(80);
477 1 send_byte(CMD_RESET,1); // 清除显示
478 1 cs1=cs2=1;
479 1
480 1 for(i=0;i<8;i++)
481 1 {
482 2 Speaker=0;
483 2 write7279(UNDECODE+7-i,0xff,0);
484 2 delay10ms(20);
485 2 Speaker=1;
486 2 delay10ms(80);
487 2 send_byte(CMD_RESET,0); // 清除显示
488 2 cs1=cs2=1;
489 2 }
C51 COMPILER V6.12 HICJ6 01/03/2005 12:08:21 PAGE 9
490 1 }
491
492
493 void HddEn_Count_Pro(void)
494 {
495 1 BYTE i,j;
496 1 HddEn_Count=0;
497 1 HddEn_Sum=0;
498 1 for (i=0;i<5;i++)
499 1 {
500 2 for(j=0;j<8;j++)
501 2 {
502 3 if((Hdd_En[i]&(1<<j))!=0)
503 3 {
504 4 HddEn_Sum++;
505 4 House_Max=i*8+j+1;
506 4 }
507 3 }
508 2 }
509 1 }
510
511 /**********************************************************
512 *名 称:InitFram
513 *功 能:从铁电存储器FM25040中读取参数,给变量赋值
514 *说 明:参考HICJ6.H中的地址分配表
515 *调 用:Write1B Read1B Write_Hdd Read_Hdd
516 *入口参数:无
517 *返 回 值:无
518 ***********************************************************/
519
520 void InitFram()
521 {
522 1 BYTE data i,j;
523 1 unsigned long data First_Flag;
524 1
525 1 // if (First_Flag!=0x5555aaaa)
526 1 {
527 2 Hdd_Str.Hdd_L=0x5555aaaa;
528 2 Write_Hdd(40);
529 2 First_Flag=Read_Hdd(40);
530 2 for(i=0;i<160;i++)
531 2 {
532 3 Write1B(0,i,0);
533 3 }
534 2 Write1B(1,164,0); //Station L
535 2 Write1B(0,165,0); //Station H
536 2 Write1B(40,166,0); //House_Sum
537 2 for(i=0;i<5;i++)
538 2 {
539 3 Write1B(0,170+i,0); // Clear Short_Bak
540 3 Write1B(0,175+i,0); // Clear Break_Bak
541 3 }
542 2 for(i=200;i<240;i++)
543 2 {
544 3 Write1B(0x21,i,0);
545 3 }
546 2 for(i=240;i<255;i++)
547 2 {
548 3 Write1B(0xff,i,0);
549 3 }
550 2 Write1B(0x80,255,0); //Start
551 2 for(i=0;i<40;i++) //House Code
C51 COMPILER V6.12 HICJ6 01/03/2005 12:08:21 PAGE 10
552 2 {
553 3 Write1B(1,i*3,1);
554 3 j=((i+1)/10)*16+(i+1)%10;
555 3 Write1B(j,i*3+1,1);
556 3 Write1B(0,i*3+2,1);
557 3 }
558 2 for(i=120;i<160;i++)
559 2 {
560 3 Write1B(0x36,i,1);
561 3 }
562 2 for(i=200;i<240;i++)
563 2 {
564 3 Write1B(0x87,i,1);
565 3 }
566 2
567 2 }
568 1
569 1 for(i=0;i<5;i++)
570 1 {
571 2 Hdd_En[i]=Read1B(250+i,0);
572 2 Short_En[i]=Read1B(240+i,0);
573 2 Break_En[i]=Read1B(245+i,0);
574 2 }
575 1 for(i=0;i<40;i++)
576 1 {
577 2 HddVal[i]=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -