⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hicj6.lst

📁 这是一个
💻 LST
📖 第 1 页 / 共 5 页
字号:
 304   2          for(i=0;i<8;i++)
 305   2           {
 306   3             write7279(DECODE0+i,Led[i],0);        //Hdd
 307   3           }
 308   2          for(i=0;i<4;i++)
 309   2           {
 310   3             write7279(DECODE0+i,Led[i+8],1);      //House Code
 311   3           }
 312   2      
 313   2            if(Led[15]>0)
 314   2            write7279(DECODE1+7,Led[15],1);
 315   2            else
 316   2            write7279(DECODE0+7,0x0f,1);
 317   2           i=Read1B(200+House);
 318   2           i&=0x0f;
 319   2            switch (i)
 320   2                        {
 321   3                          case (0x01):
 322   3                                   Type=0x04;
 323   3                                   break;
 324   3                          case (0x02):
 325   3                                   Type=0x02;
 326   3                                   break;
 327   3                          case (0x04):
 328   3                                   Type=0x01;
 329   3                                   break;
 330   3                          case (0x08):
 331   3                                   Type=0x80;
 332   3                                   break;
 333   3                          default:
 334   3                                   Type=0;
 335   3                                   break;
 336   3                        }
 337   2            Sp_Flag=0;
 338   2            Alarm=0;
 339   2            if(Pulse%2) Alarm=0x08;
 340   2            Short_Bak=Read1B(170+House/8);
 341   2            if(Short_Bak&(1<<(House%8)))
 342   2             {
 343   3              Alarm|=0x10;
 344   3              Sp_Flag=1;
 345   3             }
 346   2             Break_Bak=Read1B(175+House/8);
 347   2            if(Break_Bak&(1<<(House%8)))
 348   2             {
 349   3              Alarm|=0x20;
 350   3              Sp_Flag=1;
 351   3             }
 352   2             Alarm|=Type;
 353   2             Alarm_Flag=1;
 354   2      
 355   2             if(Short_New[House/8]&(1<<(House%8)))
 356   2               Flash|=1;
 357   2             if(Break_New[House/8]&(1<<(House%8)))
 358   2               Flash|=2;
 359   2      
 360   2         }
 361   1         else
 362   1         {
 363   2            for(i=0;i<8;i++)
 364   2           {
 365   3             write7279(UNDECODE+i,1,0);
C51 COMPILER V6.12  HICJ6                                                                  01/10/2005 07:10:30 PAGE 7   

 366   3           }
 367   2            for(i=0;i<2;i++)
 368   2           {
 369   3             write7279(UNDECODE+i,1,1);
 370   3           }
 371   2            write7279(UNDECODE+7,1,1);      //One Led
 372   2            Led[11]=(House+1)/10;
 373   2            Led[10]=(House+1)%10;
 374   2            write7279(DECODE0+2,Led[10],1);
 375   2            write7279(DECODE0+3,Led[11],1);
 376   2            write7279(UNDECODE+6,0x00,1);           //Type Alarm
 377   2            Sp_Flag=0;
 378   2         }
 379   1      
 380   1      
 381   1      
 382   1      
 383   1      
 384   1      
 385   1       }
 386           /*
 387           void Key_Pro(void)
 388          {
 389            //Key_New=read7279(CMD_READ);
 390            if(Key_New==0xff) Key_New=0;
 391            Key_Val=Key_New^Key_Old & Key_New;
 392            Key_Old=Key_New;
 393            if (Key_Val==0x3a)
 394              {
 395                Key_Press=1;
 396                House++;
 397                House=House%House_Sum;
 398                Press_Count=0;
 399               }
 400          
 401          
 402           }
 403             */
 404          void Key_Pro(void)
 405          {
 406   1        BYTE Key_Tmp;
 407   1        Key_New =Key;
 408   1        Key_Tmp=(Key_New^Key_Old)&(~Key_New);
 409   1        if(Key_Tmp)
 410   1         {
 411   2          Key_Val=1;
 412   2          Key_C=0;
 413   2         }
 414   1        if(Key_Val)Key_C++;
 415   1        Key_Old=Key_New;
 416   1        if (Key_C>1)
 417   1          {
 418   2            Key_Val=0;
 419   2            Key_C=0;
 420   2            Key_Press=1;
 421   2            House++;
 422   2            if(House_Max>1)
 423   2             {
 424   3              House=House%House_Max;
 425   3             }
 426   2             else House=0;
 427   2            Press_Count=0;
C51 COMPILER V6.12  HICJ6                                                                  01/10/2005 07:10:30 PAGE 8   

 428   2           }
 429   1      
 430   1      
 431   1       }
 432          
 433           /**********************************************************
 434          *名	   称:LedTest
 435          *功	   能:LED数码管检测
 436          *说	   明:对数码管分别按段、位进行检测
 437          *调	   用:write7279 send_byte
 438          *入口参数:无
 439          *返 回 值:无
 440          ***********************************************************/
 441          
 442          void LedTest(void)
 443          {
 444   1      BYTE data i,j;
 445   1       send_byte(CMD_RESET,0);     // 清除显示
 446   1       cs1=cs2=1;
 447   1       send_byte(CMD_RESET,1);
 448   1       cs1=cs2=1;
 449   1       /*
 450   1       send_byte(CMD_TEST,0);
 451   1       cs1=cs2=1;
 452   1       send_byte(CMD_TEST,1);
 453   1       cs1=cs2=1;
 454   1       send_byte(CMD_RESET,0);     // 清除显示
 455   1       cs1=cs2=1;
 456   1       send_byte(CMD_RESET,1);
 457   1       cs1=cs2=1;   */
 458   1       for(i=0;i<6;i++)
 459   1       {
 460   2         Speaker=0;
 461   2         for(j=0;j<8;j++)
 462   2          {
 463   3           write7279(UNDECODE+j,LedCode[i],0);
 464   3           write7279(UNDECODE+j,LedCode[i],1);
 465   3      
 466   3          }
 467   2          delay10ms(20);
 468   2          Speaker=1;
 469   2          delay10ms(80);
 470   2      
 471   2       }
 472   1       send_byte(CMD_RESET,0);     // 清除显示
 473   1       cs1=cs2=1;
 474   1       send_byte(CMD_RESET,1);
 475   1       cs1=cs2=1;
 476   1       for(i=1;i<8;i++)
 477   1       {
 478   2           Speaker=0;
 479   2           write7279(UNDECODE+7-i,0xff,1);
 480   2           delay10ms(20);
 481   2           Speaker=1;
 482   2           delay10ms(80);
 483   2           send_byte(CMD_RESET,1);     // 清除显示
 484   2           cs1=cs2=1;
 485   2      
 486   2       }
 487   1      
 488   1           Speaker=0;
 489   1           write7279(UNDECODE+7,0xff,1);
C51 COMPILER V6.12  HICJ6                                                                  01/10/2005 07:10:30 PAGE 9   

 490   1           delay10ms(20);
 491   1           Speaker=1;
 492   1           delay10ms(80);
 493   1           send_byte(CMD_RESET,1);     // 清除显示
 494   1           cs1=cs2=1;
 495   1      
 496   1       for(i=0;i<8;i++)
 497   1       {
 498   2           Speaker=0;
 499   2           write7279(UNDECODE+7-i,0xff,0);
 500   2           delay10ms(20);
 501   2           Speaker=1;
 502   2           delay10ms(80);
 503   2           send_byte(CMD_RESET,0);     // 清除显示
 504   2           cs1=cs2=1;
 505   2       }
 506   1      }
 507          
 508          /**********************************************************
 509          *名	   称:ShowVer
 510          *功	   能:LED数码管检测
 511          *说	   明:对数码管分别按段、位进行检测  send_byte 后的片选为什么要独立?
 512          *调	   用:write7279 send_byte
 513          *入口参数:无
 514          *返 回 值:无
 515          ***********************************************************/
 516          void ShowVer(void)
 517          {
 518   1          BYTE i;
 519   1          i=Ver/10;                     //版本
 520   1          write7279(DECODE0+7,i,0);
 521   1          i=Ver%10;
 522   1          write7279(DECODE0+6,i,0);
 523   1          write7279(UNDECODE+5,LedCode[4],0);    //-
 524   1      
 525   1          i=(VerDate)/10000;            //年
 526   1          write7279(DECODE0+4,i,0);
 527   1          i=(VerDate%10000)/1000;       //月
 528   1          write7279(DECODE0+3,i,0);
 529   1          i=(VerDate%1000)/100;
 530   1          write7279(DECODE0+2,i,0);
 531   1          i=(VerDate%100)/10;           //日
 532   1          write7279(DECODE0+1,i,0);
 533   1          i=VerDate%10;
 534   1          write7279(DECODE0+0,i,0);
 535   1      
 536   1          i=Station/100;              //站号
 537   1          write7279(DECODE0+2,i,1);
 538   1          i=(Station%100)/10;
 539   1          write7279(DECODE0+1,i,1);
 540   1          i=Station%10;
 541   1          write7279(DECODE0+0,i,1);
 542   1          i=LedCode[0]|LedCode[2]|LedCode[4];
 543   1          write7279(UNDECODE+3,i,1);
 544   1      
 545   1      for(i=0;i<8;i++)
 546   1       {
 547   2           Speaker=0;
 548   2           delay10ms(200);
 549   2           Speaker=1;
 550   2           delay10ms(200);
 551   2       }
C51 COMPILER V6.12  HICJ6                                                                  01/10/2005 07:10:30 PAGE 10  

 552   1           send_byte(CMD_RESET,0);     // 清除显示
 553   1           send_byte(CMD_RESET,1);     // 清除显示
 554   1           cs1=cs2=1;
 555   1      }
 556          
 557          
 558          void HddEn_Count_Pro(void)
 559          {
 560   1        BYTE i,j;
 561   1        HddEn_Count=0;
 562   1        HddEn_Sum=0;
 563   1         for (i=0;i<5;i++)
 564   1          {
 565   2           for(j=0;j<8;j++)
 566   2            {
 567   3             if((Hdd_En[i]&(1<<j))!=0)
 568   3             {
 569   4             HddEn_Sum++;
 570   4             House_Max=i*8+j+1;
 571   4             }
 572   3            }
 573   2          }
 574   1      }
 575          
 576           /**********************************************************
 577          *名	   称:InitFram
 578          *功	   能:从铁电存储器FM25040中读取参数,给变量赋值
 579          *说	   明:参考HICJ6.H中的地址分配表
 580          *调	   用:Write1B Read1B Write_Hdd Read_Hdd
 581          *入口参数:无
 582          *返 回 值:无
 583          ***********************************************************/
 584          
 585          void InitFram()
 586          {
 587   1          BYTE data i,j;
 588   1          unsigned long  data First_Flag;
 589   1           First_Flag=Read_Hdd(40);
 590   1         if (First_Flag!=0x5555aaaa)
 591   1           {
 592   2             Hdd_Str.Hdd_L=0x5555aaaa;
 593   2             Write_Hdd(40);
 594   2             for(i=0;i<160;i++)
 595   2              {
 596   3                 Write1B(0,i);
 597   3               }
 598   2             Write1B(1,164);    //Station L
 599   2             Write1B(0,165);    //Station H
 600   2             Write1B(40,166);   //House_Sum
 601   2             for(i=0;i<5;i++)
 602   2               {
 603   3                Write1B(0,170+i);  // Clear Short_Bak
 604   3                Write1B(0,175+i);  // Clear Break_Bak
 605   3               }
 606   2             for(i=200;i<240;i++)
 607   2               {
 608   3                 Write1B(0x21,i);
 609   3               }
 610   2             for(i=240;i<255;i++)
 611   2               {
 612   3                 Write1B(0xff,i);
 613   3               }
C51 COMPILER V6.12  HICJ6                                                                  01/10/2005 07:10:30 PAGE 11  

 614   2                Write1B(0x80,255);    //Start
 615   2             for(i=0;i<40;i++)        //House Code

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -