亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hicj6.c

?? 這是一個
?? C
?? 第 1 頁 / 共 2 頁
字號:
/********************Copyright******************************

名稱:HICJ6.C
功能:主程序
說明:
修改:2004/12/24

************************************************************/
#include "P89C60X2.h"
#include "hicj6.h"
#include "hd7279.h"
#include "fm25040.h"

extern void Trs_Edit(void);
extern void Rcv_Pro(void);
extern void PSendChar(unsigned char);
void Hdd_Check(void);
void Disp_Pro(void);
void Key_Pro(void);
void TrsRelay(BYTE,BYTE);
void Init();
BYTE code Relay_Station=13;
BYTE code LedCode[6]={0x40,0x30,0x08,0x06,0x01,0x80};
BYTE code Bat_Val[5]={0x40,0x60,0x70,0x78,0x7c};
BYTE code  A8_A10[8]={2,1,0,3,4,6,7,5};
//DWORD code Full_Val[4]={1000000,10000000,160000000,32000000};

BYTE data Time_Counter;
BYTE idata Trs_Counter;
BYTE data Hdd_Wp,Hdd_Rp;
BYTE data Rcv_Count;
BYTE data  Run_Count;
BYTE data Hdd_En[5],Short_En[5],Break_En[5];
BYTE data Ms20;

BYTE data Hdd_New_Bak[5];
BYTE data Hdd_Old[5],Hdd_Old_Bak[5];
extern BYTE data Short_New[5],Break_New[5];
BYTE data Short_Bak,Break_Bak;
BYTE idata Key_Count,Pulse,Type;
BYTE data Key_New,Key_Old,Key_Val,Key_Press;
BYTE data Alarm;
extern BYTE data Trs_Wp,Trs_Rp,Rcv_Wp,Rcv_Rp;
extern BYTE data Station,House_Max;
BYTE data Start,House;
BYTE data HddEn_Sum,Key_C,Flash;
BYTE idata TrsRelayOff[5];
BYTE data WriteOrder;
BYTE data Keep_Flag[5];
BYTE idata Short_Old[5];
BYTE idata RelayOff[5];

BYTE xdata Hdd_New[10][5];
BYTE xdata HddVal[40];
BYTE xdata Trs_Buf[25];
BYTE xdata Rcv_Buf[30];
//BYTE xdata Hdd10s[40];
//BYTE xdata RelayOffTimes[40];
//WORD xdata TrsOffCount[40];



bit Trs_Flag,Rcv_Flag,Alarm_Flag;
bit Sp_Flag,Alarm_Check,HddEn_Count;
bit  Ac_New,Ac_Old,Ac_Tmp;
bit  Bat_New,Bat_Old,Bat_Tmp;
BYTE idata Keep_Count[40]=0;
WORD  idata Press_Count;

union hdd_long {BYTE Hdd_B[4];DWORD Hdd_L;} Hdd_Str;
union Full_Str {BYTE Full_B[4];unsigned long Full_L;} Full;

/**********************************************************
*名	   稱:serial_int
*功	   能:串口中斷函數
*說	   明:處理串口發送、接收數據,每個字節中斷一次
*調	   用:
*入口參數:無
*返 回 值:無
***********************************************************/

void serial_int(void) interrupt 4 //using 1
{
 EA=0;
 if (RI)
  {
   RI=0;
   Rcv_Count=0;
    if(Rcv_Wp==29)
    {
     Rcv_Wp=0;
    }
   Rcv_Buf[Rcv_Wp]=SBUF;
   if(
       Rcv_Buf[Rcv_Wp-2]==0xeb && Rcv_Buf[Rcv_Wp-1]==0x90
      &&Rcv_Wp<8)
      {
      	Rcv_Flag=1;
      	Rcv_Rp=Rcv_Wp;
      }
   Rcv_Wp++;
  }
 if (TI)
  {
   TI=0;
   if(Trs_Wp!=Trs_Rp)
    {
    	SBUF=Trs_Buf[Trs_Rp];
    	Trs_Rp++;
    }
    else  DIR485=1;

  }
 EA=1;
 }

/**********************************************************
*名	   稱:timer2
*功	   能:定時器2 中斷函數
*說	   明:完成定時采集電度端口狀態(20MS)及其他一些定時處理
*調	   用:無
*入口參數:無
*返 回 值:無
***********************************************************/
void timer2(void) interrupt 5 //using 2
{
  BYTE data i,j;
  BYTE data P1_Tmp;
  TF2=0;
  Ms20++;
  Time_Counter++;
  Trs_Counter++;
  Rcv_Count++;
 // Run=~Run;
//  Run=1;

    for (i=0;i<5;i++)
    {
     P1_Tmp=1<<(i+3);
     P1_Tmp=~P1_Tmp&0xf8;
     for(j=0;j<8;j++)
      {
       P1=P1_Tmp|A8_A10[j];
       long_delay();
       if(Hdd==0)
        {
          Hdd_New[Hdd_Wp][i]|=1<<j;
        }
         else
         {
          Hdd_New[Hdd_Wp][i]&=~(1<<j);
         }

      }
    }

// Run=0;
 /*
  for(B_i1=0;B_i1<5;B_i1++)
   {
    if(TrsRelayOff[B_i1])
     {
       for(B_i2=0;B_i2<8;B_i2++)
        {
          B_i3=1<<B_i2;
          if(TrsRelayOff[B_i1]&B_i3)
          TrsOffCount[B_i1*8+B_i2]++;
        }
     }
   }
   */
  Hdd_Wp++;
  if(Hdd_Wp==10)
   {
    Hdd_Wp=0;

   }
  if(Key_Val)Key_C++;
  if(!Key)
   {
    Key_Count++;
   }
   else
   {
    Key_Count=0;
   }
  if (Press_Count<1000)
   {
     Press_Count++;
    }
}

/**********************************************************
*名	   稱:Disp_Pro
*功	   能:顯示處理
*說	   明:將要顯示的內容傳送給HD7279
*調	   用:write7279
*入口參數:無
*返 回 值:無
***********************************************************/
void Disp_Pro(void)
{
/*
LED 定義
LED[7]-LED[0]  Hdd
LED[9]-LED[8]  House_Code
LED[11]-LED[10] Station-Code

LED[12]         Battery  Red
LED[13]         BAttery  Green
LED[14]         8 @3 LED
LED[15]         One LED
0x80  0x40  0x20  0x10  0x08  0x04  0x02  0x01
A4    B4    B3    B2    B1    A1    A2    A3
A1-Water   0x32
A2-Power   0x31
A3-Gass    0x30
A4-Warm    0x37
B1-heat    0x36
B2-Break   0x35
B3-Short   0x34
B4-Pulse   0x33
從上至下排列,表類型為A,報警類型為B

*/
  BYTE data i,Led[16];

  //BYTE Constant_Range;

  Key_Press=0;
  Flash=0;
  i=House%8;
  if((Hdd_En[i]&(1<<i)))
   {
//    Hdd_Str.Hdd_L=HddVal[House];
    Read_Hdd(House);
    Hdd_Str.Hdd_L+=HddVal[House];
  //  Hdd_Str.Hdd_L>>=5;   // /3200

    Led[15]=Read1B(House*3+2,1);
    i=Read1B(House*3+1,1);
    Led[9]=i/0x10;
    Led[8]=i%0x10;
    if(Led[8]>9)Led[8]=0x0f;
    i=Read1B(House*3,1);
    Led[11]=i/0x10;
    Led[10]=i%0x10;
    for(i=8;i<12;i++)
     {
      if(Led[i]>9)Led[i]=0x0f;
     }

    Led[7]=Hdd_Str.Hdd_L/10000000;
    Led[6]= (Hdd_Str.Hdd_L%10000000)/1000000;
    Led[5]=(Hdd_Str.Hdd_L%1000000 )/100000;
    Led[4]=(Hdd_Str.Hdd_L%100000  )/10000;
    Led[3]=(Hdd_Str.Hdd_L%10000   )/1000;
    Led[2]=(Hdd_Str.Hdd_L%1000    )/100;
    Led[1]=(Hdd_Str.Hdd_L%100     )/10;
    Led[0]= Hdd_Str.Hdd_L%10;

    if (Led[7]==0)
    {
      Led[7]=0x0f;
      if(Led[6]==0)
       {
         Led[6]=0x0f;
         if(Led[5]==0)
          {
            Led[5]=0x0f;
           if(Led[4]==0)
            {
              Led[4]=0x0f;
              if(Led[3]==0)
               {
                Led[3]=0x0f;

               }

            }
          }
       }

    }
    i=Read1B(200+House,0);
    i=(i>>4)&7;
    if(i) Led[i]|=0x80; //Point
    for(i=0;i<8;i++)
     {
       write7279(DECODE0+i,Led[i],0);        //Hdd
     }
    for(i=0;i<4;i++)
     {
       write7279(DECODE0+i,Led[i+8],1);      //House Code
     }

      if(Led[15]>0)
      write7279(DECODE1+7,Led[15],1);
      else
      write7279(DECODE0+7,0x0f,1);
     i=Read1B(200+House,0);
     i&=0x0f;
      switch (i)
                  {
                    case (0x01):
                             Type=0x04;
                             break;
                    case (0x02):
                             Type=0x02;
                             break;
                    case (0x04):
                             Type=0x01;
                             break;
                    case (0x08):
                             Type=0x80;
                             break;
                    default:
                             Type=0;
                             break;
                  }
      Sp_Flag=0;
      Alarm=0;
      if(Pulse%2) Alarm=0x08;
      Short_Bak=Read1B(170+House/8,0);
      if(Short_Bak&(1<<(House%8)))
       {
        Alarm|=0x10;
        Sp_Flag=1;
       }
       Break_Bak=Read1B(175+House/8,0);
      if(Break_Bak&(1<<(House%8)))
       {
        Alarm|=0x20;
        Sp_Flag=1;
       }
       Alarm|=Type;
       Alarm_Flag=1;

       if(Short_New[House/8]&(1<<(House%8)))
         Flash|=1;
       if(Break_New[House/8]&(1<<(House%8)))
         Flash|=2;

   }
   else
   {
      for(i=0;i<8;i++)
     {
       write7279(UNDECODE+i,1,0);
     }
      for(i=0;i<2;i++)
     {
       write7279(UNDECODE+i,1,1);
     }
      write7279(UNDECODE+7,1,1);      //One Led
      Led[11]=(House+1)/10;
      Led[10]=(House+1)%10;
      write7279(DECODE0+2,Led[10],1);
      write7279(DECODE0+3,Led[11],1);
      write7279(UNDECODE+6,0x00,1);           //Type Alarm
      Sp_Flag=0;
   }






 }
 /*
 void Key_Pro(void)
{
  //Key_New=read7279(CMD_READ);
  if(Key_New==0xff) Key_New=0;
  Key_Val=Key_New^Key_Old & Key_New;
  Key_Old=Key_New;
  if (Key_Val==0x3a)
    {
      Key_Press=1;
      House++;
      House=House%House_Sum;
      Press_Count=0;
     }


 }
   */
void Key_Pro(void)
{
  BYTE Key_Tmp;
  Key_New =Key;
  Key_Tmp=(Key_New^Key_Old)&(~Key_New);
  if(Key_Tmp)
   {
    Key_Val=1;
    Key_C=0;
   }
  if(Key_Val)Key_C++;
  Key_Old=Key_New;
  if (Key_C>1)
    {
      Key_Val=0;
      Key_C=0;
      Key_Press=1;
      House++;
      if(House_Max>1)
       {
        House=House%House_Max;
       }
       else House=0;
      Press_Count=0;
     }


 }

 /**********************************************************
*名	   稱:LedTest
*功	   能:LED數碼管檢測
*說	   明:對數碼管分別按段、位進行檢測  send_byte 后的片選為什么要獨立?
*調	   用:write7279 send_byte
*入口參數:無
*返 回 值:無
***********************************************************/

void LedTest(void)
{
BYTE data i,j;
 send_byte(CMD_RESET,0);     // 清除顯示
 cs1=cs2=1;
 send_byte(CMD_RESET,1);
 cs1=cs2=1;
 /*
 send_byte(CMD_TEST,0);
 cs1=cs2=1;
 send_byte(CMD_TEST,1);
 cs1=cs2=1;
 send_byte(CMD_RESET,0);     // 清除顯示
 cs1=cs2=1;
 send_byte(CMD_RESET,1);
 cs1=cs2=1;   */
 for(i=0;i<6;i++)
 {
   Speaker=0;
   for(j=0;j<8;j++)
    {
     write7279(UNDECODE+j,LedCode[i],0);
     write7279(UNDECODE+j,LedCode[i],1);

    }
    delay10ms(20);
    Speaker=1;
    delay10ms(80);

 }
 send_byte(CMD_RESET,0);     // 清除顯示
 cs1=cs2=1;
 send_byte(CMD_RESET,1);
 cs1=cs2=1;
 for(i=1;i<8;i++)
 {
     Speaker=0;
     write7279(UNDECODE+7-i,0xff,1);
     delay10ms(20);
     Speaker=1;
     delay10ms(80);
     send_byte(CMD_RESET,1);     // 清除顯示
     cs1=cs2=1;

 }

     Speaker=0;
     write7279(UNDECODE+7,0xff,1);
     delay10ms(20);
     Speaker=1;
     delay10ms(80);
     send_byte(CMD_RESET,1);     // 清除顯示
     cs1=cs2=1;

 for(i=0;i<8;i++)
 {
     Speaker=0;
     write7279(UNDECODE+7-i,0xff,0);
     delay10ms(20);
     Speaker=1;
     delay10ms(80);
     send_byte(CMD_RESET,0);     // 清除顯示
     cs1=cs2=1;
 }
}


void HddEn_Count_Pro(void)
{
  BYTE i,j;
  HddEn_Count=0;
  HddEn_Sum=0;
   for (i=0;i<5;i++)
    {
     for(j=0;j<8;j++)
      {
       if((Hdd_En[i]&(1<<j))!=0)
       {
       HddEn_Sum++;
       House_Max=i*8+j+1;
       }
      }
    }
}

 /**********************************************************
*名	   稱:InitFram
*功	   能:從鐵電存儲器FM25040中讀取參數,給變量賦值
*說	   明:參考HICJ6.H中的地址分配表
*調	   用:Write1B Read1B Write_Hdd Read_Hdd
*入口參數:無
*返 回 值:無
***********************************************************/

void InitFram()
{
    BYTE data i,j;
    unsigned long  data First_Flag;

  // if (First_Flag!=0x5555aaaa)
     {
       Hdd_Str.Hdd_L=0x5555aaaa;
       Write_Hdd(40);
       First_Flag=Read_Hdd(40);
       for(i=0;i<160;i++)
        {
           Write1B(0,i,0);
         }
       Write1B(1,164,0);    //Station L
       Write1B(0,165,0);    //Station H
       Write1B(40,166,0);   //House_Sum
       for(i=0;i<5;i++)
         {
          Write1B(0,170+i,0);  // Clear Short_Bak
          Write1B(0,175+i,0);  // Clear Break_Bak
         }
       for(i=200;i<240;i++)
         {
           Write1B(0x21,i,0);
         }
       for(i=240;i<255;i++)
         {
           Write1B(0xff,i,0);
         }
          Write1B(0x80,255,0);    //Start
       for(i=0;i<40;i++)        //House Code
         {
           Write1B(1,i*3,1);
           j=((i+1)/10)*16+(i+1)%10;
           Write1B(j,i*3+1,1);
           Write1B(0,i*3+2,1);
         }
       for(i=120;i<160;i++)
         {
           Write1B(0x36,i,1);
         }
       for(i=200;i<240;i++)
         {
           Write1B(0x87,i,1);
         }

     }

      for(i=0;i<5;i++)
       {
        Hdd_En[i]=Read1B(250+i,0);
        Short_En[i]=Read1B(240+i,0);
        Break_En[i]=Read1B(245+i,0);
       }
       for(i=0;i<40;i++)
       {
        HddVal[i]=0;
       }
       Station=Read1B(164,0);
      // Write1B(0x0,255,0);
     //House=House_Max-1;
       Start=Read1B(255,0);
}


/**********************************************************
*名	   稱:InitTimer
*功	   能:定時器初始化
*說	   明:
*調	   用:
*入口參數:無
*返 回 值:無
***********************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产综合色在线| 日韩欧美高清一区| 欧美电影精品一区二区| 国产精品久久毛片| 国内精品在线播放| 在线不卡一区二区| 亚洲女同女同女同女同女同69| 日韩av网站在线观看| 91农村精品一区二区在线| 久久精品夜色噜噜亚洲aⅴ| 亚洲成人一区在线| 色婷婷久久一区二区三区麻豆| 久久免费看少妇高潮| 另类小说图片综合网| 在线成人av网站| 亚洲电影欧美电影有声小说| 91视频观看视频| 国产精品久久久久久久久久免费看| 美女在线一区二区| 91精品在线麻豆| 丝袜美腿一区二区三区| 欧美午夜精品电影| 亚洲一区二区三区在线看| 99久久久国产精品免费蜜臀| 中文字幕乱码亚洲精品一区| 国产精品自在在线| 国产片一区二区| 国产a精品视频| 国产精品视频一区二区三区不卡| 国产69精品久久久久毛片| 国产日韩欧美综合一区| 国产成人丝袜美腿| 国产精品天天摸av网| www.爱久久.com| 国产精品久久毛片a| 色综合久久久久久久久久久| 亚洲精品视频免费看| 欧美在线一区二区| 丝袜亚洲另类欧美| 精品国内二区三区| 国产高清视频一区| 亚洲欧洲日韩女同| 在线中文字幕一区二区| 亚洲国产精品一区二区久久| 欧美一区二区三区四区高清| 精品一区二区三区在线观看| 久久久久久99精品| 99视频有精品| 爽好久久久欧美精品| 欧美mv和日韩mv国产网站| 国产盗摄视频一区二区三区| 亚洲天堂a在线| 欧美精品自拍偷拍| 国产真实乱偷精品视频免| 中文字幕一区二区三区av| 欧美日韩精品是欧美日韩精品| 日韩成人一区二区三区在线观看| 欧美成人女星排名| 99re热这里只有精品视频| 亚洲国产一区二区三区| 久久伊人中文字幕| 91麻豆蜜桃一区二区三区| 日韩精品一级二级| 国产日产欧美一区二区三区| 欧美亚洲免费在线一区| 久久99久久99小草精品免视看| 亚洲欧洲日产国码二区| 日韩一区二区三区四区五区六区 | 成人aa视频在线观看| 亚洲精选一二三| 精品国产成人在线影院| 91福利视频网站| 国内一区二区在线| 亚洲bt欧美bt精品| 欧美国产日产图区| 91麻豆精品国产91| 色综合一个色综合亚洲| 国产在线一区二区| 亚洲一区二区三区四区五区黄| 2021久久国产精品不只是精品| 91黄视频在线观看| 国产91精品欧美| 蜜桃视频在线一区| 亚洲国产精品久久久久秋霞影院 | 国产成人免费在线观看不卡| 亚洲一区在线观看视频| 国产精品你懂的在线欣赏| 777a∨成人精品桃花网| 日本久久精品电影| 国产一二三精品| 久久精品理论片| 偷拍自拍另类欧美| 亚洲一区视频在线观看视频| 国产精品久久综合| 国产欧美一区视频| 精品嫩草影院久久| 91精品国产麻豆| 欧美日韩一区 二区 三区 久久精品| 国产成人av电影在线| 精品在线免费视频| 久久成人免费网站| 日韩成人午夜精品| 亚洲成人av一区二区| 亚洲一区二区中文在线| 亚洲欧美经典视频| 亚洲免费在线播放| 亚洲黄网站在线观看| 亚洲美女偷拍久久| |精品福利一区二区三区| 国产精品传媒入口麻豆| 国产精品国产三级国产普通话99| 欧美国产激情二区三区| 国产精品素人一区二区| 中文字幕亚洲电影| 亚洲精品久久久久久国产精华液| 亚洲精品国产品国语在线app| 亚洲人成在线播放网站岛国| 亚洲精品写真福利| 香蕉久久夜色精品国产使用方法 | 2020日本不卡一区二区视频| 日韩免费在线观看| 精品国精品国产尤物美女| 久久久蜜桃精品| 中文字幕在线一区二区三区| 亚洲色图欧洲色图婷婷| 亚洲黄色性网站| 日日夜夜一区二区| 美女一区二区三区| 国产精品一线二线三线| 99国产欧美久久久精品| 欧美四级电影网| 日韩欧美国产一区在线观看| 久久综合av免费| 综合久久久久久| 午夜久久电影网| 国产真实精品久久二三区| 9色porny自拍视频一区二区| 欧美三级资源在线| 日韩欧美国产三级电影视频| 久久久九九九九| 亚洲精品综合在线| 美国欧美日韩国产在线播放| 国产一区二区精品久久| 色94色欧美sute亚洲线路一ni| 欧美日韩国产成人在线91| 久久免费午夜影院| 亚洲一区二区精品3399| 国产精品影视网| 欧美色爱综合网| 亚洲国产精品99久久久久久久久| 亚洲一区二区精品久久av| 国产精品99久久久久| 欧美优质美女网站| 精品国产髙清在线看国产毛片| 亚洲天堂网中文字| 精品一区二区三区在线观看| 色婷婷综合久久久| 久久午夜羞羞影院免费观看| 亚洲另类色综合网站| 国产乱人伦偷精品视频不卡| 欧美日韩在线不卡| 中文字幕制服丝袜一区二区三区| 蜜臀久久99精品久久久久久9| av爱爱亚洲一区| 久久综合九色综合欧美亚洲| 亚洲国产你懂的| 成人免费看黄yyy456| 日韩欧美国产麻豆| 一区二区三区在线视频免费 | 国产欧美日本一区视频| 日韩激情一二三区| 欧美性生活一区| 亚洲欧洲精品一区二区三区| 激情成人综合网| 91麻豆精品国产自产在线观看一区| 成人免费在线播放视频| 国产精品综合一区二区三区| 欧美猛男超大videosgay| 亚洲欧美在线aaa| 国产精品夜夜嗨| 久久毛片高清国产| 精品一区二区三区免费视频| 欧美蜜桃一区二区三区| 亚洲网友自拍偷拍| 欧美性受xxxx黑人xyx性爽| 亚洲图片另类小说| av色综合久久天堂av综合| 国产精品妹子av| 成人国产精品免费| 国产精品毛片高清在线完整版| 高清不卡一区二区在线| 欧美精彩视频一区二区三区| 国产成人综合在线观看| 国产亚洲欧美一区在线观看| 国产剧情一区二区三区| 久久久99精品免费观看不卡| 国产精品一区一区| 国产精品久久精品日日| 99久久综合精品| 亚洲精品视频在线观看网站|