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

📄 hicj6.lst

📁 实用的空调计费系统
💻 LST
📖 第 1 页 / 共 5 页
字号:

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

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

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

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

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

⌨️ 快捷键说明

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