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

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

?? ports.c

?? 簡易風盤控器程序 AVR GCC MEGA8
?? C
字號:
/**************** (c) 2005   佛山菱電 *****************************************
PROJECT  : 簡易風盤控制器
COMPILER : VR ICC for m48
MODULE   : ports.c
VERSION  : 1.0.0
DATE     : 2005/12/12
AUTHOR   : 朱坤
DESCRIPTION :   I/O routines

MODIFICATIONS :
  定義組合鍵:Mode + Fan,
  同時按下,進入參數模式 - 關機時,進入參數修改模式,開機時進入參數查詢模式
******************************************************************************/
#include <avr/io.h>
#include <avr/wdt.h>
#include "lib.h"
#include "version.h"

#include "lcd.h"
#include "ports.h"

u8 Key_State;          /* status of key panel */
#define KEY_IDLE       ((u8)0)
#define KEY_IDLE_NEXT  ((u8)1)
#define KEY_PUSHED     ((u8)2)
#define KEY_NEXT       ((u8)3)

u8 DebounceButton;     /* 按鍵反彈延時 100mS On 4mS */
u8 LtdSwOnCntr;        /* 房卡檢測計數 */
u8 ChkLtdSwCntr;       /* 房卡檢測計時 */

u8 SWBuf;              /* 按鍵緩沖 */
u8 SWTime;             /* 按鍵激活 LCD 顯示時間 */
u8 SWState;            /* 按鍵狀態 */
u8 SWRptBuf;           /* 重復按鍵 */
u8 SWKeyHoldTm;        /* 保持按鍵時間 */

/*-----------------------------------------------------------------------------
ROUTINE NAME : PORTS_Init
INPUT/OUTPUT : None

DESCRIPTION  : Configure the ports

COMMENTS     :
-----------------------------------------------------------------------------*/
void PORTS_Init(void)
{
   MCUCR &= ~(1<<PUD);       /* 允許 I/O 上拉 */

   PCMSK0 = (u8)0x00;        /* 禁止所有 Pin Change 中斷 */
   PCMSK1 = (u8)0x00;
   PCMSK2 = (u8)0x00;
   PCICR  = (u8)0x00;        /* 不允許 Int0/1 中斷 */
   EIMSK  = (u8)0x00;

   //PCIFR = (u8)0x0ff;
   //EIFR  = (u8)0x0ff;

   PORTB = PORTBSET;
   PORTC = PORTCSET;
   PORTD = PORTDSET;
#ifdef EnPGFENGJI
   PRR = (u8)((1<<PRTWI)|(1<<PRSPI)|(1<<PRUSART0)|(1<<PRADC));
#else
   PRR = (u8)((1<<PRTWI)|(1<<PRSPI)|(1<<PRUSART0)|(1<<PRTIM1)|(1<<PRADC));
#endif

#if 0
   SWState = KEY_IDLE;
   ChkLtdSwCntr = LtdSwOnCntr = 0;
#endif
}

void PORTS_Ref(void)
{
   DDRB  = DDRBSET;     //
   DDRC  = DDRCSET;     //
   DDRD  = DDRDSET;     //
}

/*-----------------------------------------------------------------------------
ROUTINE NAME : Get_JP

INPUT/OUTPUT :
 顯示緩沖區 DispBuf 需顯示的內容

DESCRIPTION  :
 1、讀入配置開關值
 2、讀入房卡開關狀態
 3、讀顯示板鍵值
 4、顯示緩沖區的內容

COMMENTS     :
 本過程,每4mS被調用一次
-----------------------------------------------------------------------------*/
void Get_JP(void)
{
   u8 i;
   u8 j;
   u8 k;

   if (GetJP(JP5) == 0){         /* JP5 */
     ClrBit(SysConfig,fEnMemo);  /* JP5 短接,無掉電記憶  */
   } else {
     SetBit(SysConfig,fEnMemo);  /* JP5 斷開,掉電記憶 */
   }

   if (!ValBit(RunMode,fSysOn)){ /* 運行時不允許修改地址 */
     i = 0;                        /* 讀入本機地址 */
     k = GetSW();
     for (j = 0; j < 10; j++){
       if (k == GetSW()) i++;
     }
     if ((i > 5) && (k != 0) && (k != 0x0f)){
       if (NeijiNo != k){
         NeijiNo = k;                 /* 地址改變,則清除地址沖突標志 */
         ClrBit(Errorflg,fRsAddrErr); /* 1:內機地址沖突 */
         ClrBit(Errorflg,fSComErr);   /* 1:外機通信故障 */
         ScAddrErrCnt = 0;
         ScMonCnt = 0;
       }
     }
   }
#ifdef JPFC
   /* 房卡監測輸入, 斷開:不允許系統開機 */
   if (GetJPFC(JPFC) == 0) ++LtdSwOnCntr;
   if (++ChkLtdSwCntr > 100){
      if ( LtdSwOnCntr > 15){
        ClrBit(Errorflg,fLtdSwSt);  /* 房卡狀態 1:斷開 */
        ClrBit(RunMode,fLtdSwOn);
      } else {
        SetBit(Errorflg,fLtdSwSt);  /* 房卡狀態 1:斷開 */
        SetBit(RunMode,fLtdSwOn);
      }
      ChkLtdSwCntr = LtdSwOnCntr = 0;
   }
#else  /* 阻止房卡檢測 */
   //ClrBit(Errorflg,fLtdSwSt);
   ClrBit(RunMode,fLtdSwOn);
#endif

}

/*-----------------------------------------------------------------------------
ROUTINE Name :  Key_Scan
Description  :

   本過程,每4mS被調用一次
-----------------------------------------------------------------------------*/
void Key_Scan(void)
{
   //u8 i;
   u8 tmpSWBuf;

   /* 按鍵反彈延時 */
   if (DebounceButton != 0) DebounceButton--;

   tmpSWBuf = GetKey();
   if (tmpSWBuf != SWBuf){
     DebounceButton = 25;                   /* 100mS(On 4mS) */
     SWBuf = tmpSWBuf;
#ifdef MONITOR
     SWKeyHoldTm = 0;                       /* 清除鍵保持時間 */
#endif
   } else if (DebounceButton == 0){
     if (SWBuf == SWALL){                   /* 所有鍵都釋放 */
#ifdef MONITOR
       if (SWState == KEY_IDLE_NEXT){       /* 有鍵按下 */
         if (SWRptBuf == vFanKey){          /* FAN */
           SetBuzCntr(BuzCntrShort);        /* 蜂鳴器短鳴一聲*/
           /* A(0) -> Lo(1) -> Mi(2) -> Hi(3) */
           FanStatus = (u8)((FanStatus & ~FANMASK_S)|((FanStatus + 1) & 0x03));
         } else if (SWRptBuf == vModeKey){  /* MODE */
           SetBuzCntr(BuzCntrShort);        /* 蜂鳴器短鳴一聲*/
           if ((RunMode & 0x03) > 1){
             SetMode(MODEHEAT);
           } else {
             SetMode(MODECOOL);
           }
         }
       }
#endif
       SWState = KEY_IDLE;                  /* 所有鍵都釋放 */
     } else {
       BkgLamp = BkgLampSET;                /* 背光開時間 */
       SWTime = BkgLampSET;                 /* 顯示延時與背光開時間相同 */
       SWRptBuf = SWBuf;                    /* 允許重復 */
       if (SWState == KEY_IDLE){            /* 處理鍵 */
         SWState = KEY_PUSHED;              /* 下一個處理狀態 */
         DebounceButton = 255;              /* 1s */
         if (SWBuf == vUpKey){              /* TEMP+ */
           SetBuzCntr(BuzCntrShort);        /* 蜂鳴器短鳴一聲*/
           Upward();
         } else if (SWBuf == vDownKey){     /* TEMP- */
           SetBuzCntr(BuzCntrShort);        /* 蜂鳴器短鳴一聲*/
           Downward();
         } else if (SWBuf == vOnOffKey){    /* On/Off */
           if (ValBit(RunMode,fSysOnOff)){
             TurnSysOff();
           } else {
             TurnSysOn();
           }
           SetBuzCntr(BuzCntrShort);        /* 蜂鳴器短鳴一聲*/
           SWState = KEY_NEXT;
#ifndef MONITOR
         } else if (SWBuf == vFanKey){
           /* A(0) -> Lo(1) -> Mi(2) -> Hi(3) */
           FanStatus = (u8)((FanStatus & ~FANMASK_S)|((FanStatus + 1) & 0x03));
           SetBuzCntr(BuzCntrShort);        /* 蜂鳴器短鳴一聲*/
           SWState = KEY_NEXT;
         } else if (SWBuf == vModeKey){
           if ((RunMode & 0x03) > 1){
             SetMode(MODEHEAT);
           } else {
             SetMode(MODECOOL);
           }
           SetBuzCntr(BuzCntrShort);        /* 蜂鳴器短鳴一聲*/
           SWState = KEY_NEXT;
         }
#else
         } else {
           SWState = KEY_IDLE_NEXT;         /* 下一個處理狀態 */
         }
#endif
       } else if (SWState == KEY_PUSHED){   /* 處理允許重復的鍵 */
         DebounceButton = 50;               /* 重復時間 */
         if (SWBuf == vUpKey){              /* TEMP+ */
           Upward();
         } else if (SWBuf == vDownKey){     /* TEMP- */
           Downward();
         } else {
           SWState = KEY_NEXT;
         }
#ifdef MONITOR
       } else if (SWState == KEY_IDLE_NEXT){
         if ((SWBuf == vModeFanKey) &&
             (SWKeyHoldTm > HoldKeyTmSet)){ /* 超過 3s, 進入參數模式 */
           SWState = KEY_NEXT;
           CanShuNo = 0;
           CanShuNoTm = CanShuNoTmSet;                 /* 顯示時間 */
           LCDState = 3;                               /* 參數查詢模式 */
           if (ValBit(RunMode,fSysOnOff)) LCDState--;  /* 參數修改模式 */
         }
#endif
       }
     }
   }
}

void Downward(void)
{
#ifdef MONITOR
  LCDTimeCount = 120;              /* 120 秒 */
  if (LCDState == 2){
    if (CanShuNoTm != 0){
      if (CanShuNo-- == 0) CanShuNo = 11;
      CanShuNoTm = CanShuNoTmSet;  /* 顯示時間 */
    } else {
      --XianShiCanShu[CanShuNo];
    }
  } else if (LCDState == 3){
    if (CanShuNoTm != 0){
      if (CanShuNo-- == 0) CanShuNo = 17;
      CanShuNoTm = CanShuNoTmSet;  /* 顯示時間 */
    } else {
      --WaiJiShuJu[CanShuNo];
    }
  } else {
#endif
    LCDTimeCount = 5;              /* 5 秒 */
    LCDState = 1;
    if (SetupTp > SetupTpMIN) SetupTp--;
#ifdef MONITOR
  }
#endif
}

void Upward(void)
{
#ifdef MONITOR
  LCDTimeCount = 120;              /* 120 秒 */
  if (LCDState == 2){
    if (CanShuNoTm != 0){
      if (++CanShuNo > 11) CanShuNo = 0;
      CanShuNoTm = CanShuNoTmSet;  /* 顯示時間 */
    } else {
      ++XianShiCanShu[CanShuNo];
    }
  } else if (LCDState == 3){
    if (CanShuNoTm != 0){
      if (++CanShuNo > 17) CanShuNo = 0;
      CanShuNoTm = CanShuNoTmSet;  /* 顯示時間 */
    } else {
      ++WaiJiShuJu[CanShuNo];
    }
  } else {
#endif
    LCDTimeCount = 5;              /* 5 秒 */
    LCDState = 1;
    if (SetupTp < SetupTpMAX) SetupTp++;
#ifdef MONITOR
  }
#endif
}
/*** (c) 2005  佛山菱電 **************************** END OF FILE *************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂久久一区二区三区| 狂野欧美性猛交blacked| 一个色综合网站| 久久99精品久久久久婷婷| 成人黄色一级视频| 欧美一区国产二区| 亚洲视频免费在线观看| 精品一区二区三区视频在线观看| 97se亚洲国产综合自在线观| 欧美一级欧美一级在线播放| 国产精品传媒在线| 国内精品伊人久久久久av影院| 欧美在线免费播放| 欧美经典一区二区三区| 日韩成人免费电影| 日本电影欧美片| 国产欧美精品一区aⅴ影院| 日韩av午夜在线观看| 色婷婷av一区| 国产精品久久久久久久久搜平片| 免费成人在线观看| 欧美性视频一区二区三区| 国产精品久久久久影院色老大| 美女高潮久久久| 欧美日韩中文另类| 亚洲人午夜精品天堂一二香蕉| 成人久久久精品乱码一区二区三区| 7777女厕盗摄久久久| 亚洲大片一区二区三区| 91在线视频观看| 中文字幕不卡的av| 国产精品亚洲专一区二区三区 | 欧美一区二区三区视频| 一区二区三区小说| 色哟哟精品一区| 日韩理论片中文av| 波多野结衣亚洲| 国产精品高潮呻吟| jlzzjlzz国产精品久久| 日韩一区欧美小说| 91成人在线精品| 一区av在线播放| 欧美日韩色一区| 日韩二区三区在线观看| 这里只有精品电影| 麻豆中文一区二区| 国产欧美综合在线| 波多野结衣视频一区| 亚洲卡通欧美制服中文| 色av成人天堂桃色av| 亚洲夂夂婷婷色拍ww47| 欧美男男青年gay1069videost| 五月天欧美精品| 91精品国产综合久久久久久久| 久久丁香综合五月国产三级网站| 精品嫩草影院久久| 成人免费视频app| 一区二区三区四区乱视频| 欧美日韩卡一卡二| 久久se精品一区精品二区| 欧美国产一区二区在线观看| 99re这里都是精品| 日韩激情视频在线观看| 久久精品亚洲精品国产欧美kt∨ | 成人久久18免费网站麻豆 | 国产中文字幕精品| 国产精品麻豆网站| 欧美特级限制片免费在线观看| 婷婷一区二区三区| 久久奇米777| 日本丶国产丶欧美色综合| 美腿丝袜一区二区三区| 国产精品女主播在线观看| www激情久久| 91亚洲国产成人精品一区二三| 水蜜桃久久夜色精品一区的特点| 欧美精品一区二区久久婷婷 | 成人av免费在线观看| 亚洲一区二区三区四区在线免费观看 | 美女性感视频久久| 欧美国产精品中文字幕| 欧美精品乱码久久久久久按摩 | 国产精品久久久一本精品| 欧美人狂配大交3d怪物一区| 国产在线精品一区二区三区不卡 | 亚洲综合图片区| 久久精品综合网| 69久久夜色精品国产69蝌蚪网| 国产成人在线视频播放| 日韩精品免费视频人成| 国产精品美女一区二区三区 | 色综合天天性综合| 麻豆精品久久精品色综合| 亚洲女女做受ⅹxx高潮| 国产亚洲欧美中文| 欧美高清视频一二三区 | 毛片不卡一区二区| 亚洲线精品一区二区三区| 国产精品色婷婷久久58| 欧美一二三在线| 欧美视频在线一区二区三区| 99久久er热在这里只有精品66| 国内精品第一页| 日本欧美肥老太交大片| 亚洲最大的成人av| 天天操天天综合网| 亚洲图片自拍偷拍| 亚洲视频一二区| 国产精品每日更新在线播放网址| 久久人人爽人人爽| 久久久无码精品亚洲日韩按摩| 91精品国产一区二区三区香蕉| 欧美亚一区二区| 欧美日韩一区二区在线视频| 色婷婷综合五月| 91麻豆国产香蕉久久精品| 国产一区二区三区不卡在线观看| 日韩av中文字幕一区二区| 调教+趴+乳夹+国产+精品| 一区二区三区在线免费| 亚洲一区中文在线| 亚洲免费大片在线观看| 亚洲免费观看高清完整| 亚洲精品免费视频| 悠悠色在线精品| 亚洲午夜激情av| 亚洲成a人在线观看| 亚洲成人av福利| 日韩成人精品在线| 老司机免费视频一区二区| 久久国产麻豆精品| 国产精品一区免费视频| 国产成人精品综合在线观看 | 国产精品五月天| 中文字幕综合网| 一区二区成人在线视频| 性久久久久久久久久久久| 婷婷成人综合网| 国产在线不卡一区| 99精品视频一区二区| 色一情一乱一乱一91av| 91精品国产一区二区三区香蕉| 精品国产一区二区三区久久久蜜月| 精品久久人人做人人爽| 国产精品动漫网站| 亚洲主播在线观看| 加勒比av一区二区| av资源网一区| 91精品国产综合久久精品| 久久久久免费观看| 一区二区三区在线看| 久久99深爱久久99精品| av在线不卡网| 91精品国产色综合久久不卡电影 | 中文字幕一区二区在线观看| 亚洲激情成人在线| 国精产品一区一区三区mba视频| 成人毛片在线观看| 制服丝袜av成人在线看| 国产欧美精品一区二区色综合| 亚洲午夜免费电影| 国产精品一级片| 欧美伊人久久久久久久久影院 | 中文字幕在线一区二区三区| 午夜亚洲福利老司机| 国产九色精品成人porny| 91福利视频网站| 久久久久久一级片| 日韩精品一二三| av一区二区三区黑人| 欧美成人性战久久| 亚洲黄色小说网站| 成人夜色视频网站在线观看| 欧美日韩激情在线| 国产精品久久99| 国产毛片精品视频| 91精品国产高清一区二区三区蜜臀 | 亚洲精品视频在线观看免费| 老司机精品视频在线| 欧美亚洲综合网| 国产欧美日韩麻豆91| 日本成人中文字幕在线视频| 在线观看日韩精品| 国产精品久久午夜夜伦鲁鲁| 国内欧美视频一区二区| 9191成人精品久久| 午夜精品免费在线| 色哟哟欧美精品| 国产精品久久久久久一区二区三区| 久久99久国产精品黄毛片色诱| 欧美日韩精品免费观看视频| 亚洲精品欧美专区| 一本大道久久a久久综合| 国产精品素人一区二区| 韩日精品视频一区| 日韩精品在线一区| 看国产成人h片视频| 在线电影院国产精品| 视频在线观看国产精品| 欧美艳星brazzers|