📄 ports.c
字号:
/**************** (c) 2005 佛山菱电 *****************************************
PROJECT : AUX VRV
COMPILER : AVR GCC/ICC
MODULE : ports.c
VERSION : 1.0.0
DATE : 2006/01/03
AUTHOR : 朱坤
DESCRIPTION : I/O routines
MODIFICATIONS :
******************************************************************************/
#include "ports.h"
#include "led.h"
#include "buz.h"
#include "fan.h"
#include "i2c.h"
#include "main.h"
#include "timer.h"
#include "swing.h"
u8 SWTime; /* 按键时间 */
u8 Key_State; /* status of key panel */
u8 DebounceButton; /* 按键反弹延时 100mS On 4mS */
u8 LtdSwOnCntr; /* 房卡检测计数 */
u8 ChkLtdSwCntr; /* 房卡检测计时 */
#if (NJTYPE == 2)
#elif (NJTYPE == 5)
u8 SWBuf; /* 按键缓冲 */
u8 KeyGet;
u8 SWState; /* 按键状态 */
u8 SWRptBuf; /* 重复按键 */
#define SW8 ((u8)0x80)
#define SW7 ((u8)0x40)
#define SW6 ((u8)0x20) /* MODE */
#define SW5 ((u8)0x10) /* SPEED */
#define SW4 ((u8)0x08) /* Down - */
#define SW3 ((u8)0x04) /* On/Off */
#define SW2 ((u8)0x02) /* Up + */
#define SW1 ((u8)0x01) /* 扫风 */
#define SWSwing SW1
#define SWUp SW2
#define SWOnOff SW3
#define SWDown SW4
#define SWFan SW5
#define SWMode SW6
/* A(0) -> C(2) -> D(3) -> H(1) */
const u8 md_Tab[] = {MODECOOL,MODEAUTO,MODEDRY,MODEHEAT};
#endif
/*-----------------------------------------------------------------------------
ROUTINE NAME : PORTS_Init
INPUT/OUTPUT : None
DESCRIPTION : Configure the ports
COMMENTS :
-----------------------------------------------------------------------------*/
void PORTS_Init(void)
{
u8 i;
#if (NJTYPE == 0) ||(NJTYPE == 1)
/* AUX 吸顶 */
PORTA = 0x0F0;
PORTB = 0x00;
PORTC = 0x1F;
#ifdef EnPGFENGJI
#ifdef EnSTYLE5
PORTD = 0x0F7; //Tx 初始为高电位
#else
PORTD = 0x0F5; //Tx 初始为低电位
#endif
#else /* EnPGFENGJI */
#ifdef EnSTYLE5
PORTD = 0x47; //Tx 初始为高电位
#else
PORTD = 0x45; //Tx 初始为低电位
#endif
#endif /* EnPGFENGJI */
#elif (NJTYPE == 2) ||(NJTYPE == 3)
/* AUX 挂机 */
PORTA = 0x0F0;
PORTB = 0x00;
PORTC = 0x1F;
#ifdef EnPGFENGJI
#ifdef EnSTYLE5
PORTD = 0x0F7; //Tx 初始为高电位
#else
PORTD = 0x0F5; //Tx 初始为低电位
#endif
#else /* EnPGFENGJI */
#ifdef EnSTYLE5
PORTD = 0x47; //Tx 初始为高电位
#else
PORTD = 0x45; //Tx 初始为低电位
#endif
#endif /* EnPGFENGJI */
#elif (NJTYPE == 4)
/* AUX 挂机 */
PORTA = 0x80;
PORTB = 0x00;
PORTC = 0x1F;
#ifdef EnPGFENGJI
#ifdef EnSTYLE5
PORTD = 0x0F3; //Tx 初始为高电位
#else
PORTD = 0x0F1; //Tx 初始为低电位
#endif
#else /* EnPGFENGJI */
#ifdef EnSTYLE5
PORTD = 0x43; //Tx 初始为高电位
#else
PORTD = 0x41; //Tx 初始为低电位
#endif
#endif /* EnPGFENGJI */
#elif (NJTYPE == 5)
/* 柜机 */
PORTA = 0x00;
PORTB = 0x03;
PORTC = 0x1F;
#ifdef EnPGFENGJI
#ifdef EnSTYLE5
PORTD = 0x0F3; //Tx 初始为高电位
#else
PORTD = 0x0F1; //Tx 初始为低电位
#endif
#else /* EnPGFENGJI */
#ifdef EnSTYLE5
PORTD = 0x43; //Tx 初始为高电位
#else
PORTD = 0x41; //Tx 初始为低电位
#endif
#endif /* EnPGFENGJI */
#endif /* NJTYPE */
PORTS_Ref();
//pdJP1 &= (u8)~(1<<pbJP1);
pdLCTx &= (u8)~(1<<pbLCTx);
i = 200;
while(i--);
//if ((ValBit(pJP1,pbJP1)) ||
// (ValBit(pJP1,pbJP1))){
// SetBit(Sysflag1,fStepMotor); /* 1: 步进电机驱动风门 */
//}
//if ((!ValBit(pLCTx,pbLCTx)) &&
// (!ValBit(pLCTx,pbLCTx))){
// SetBit(Sysflag1,f1XK_YK); /* 1: 线控器,0:遥控器 */
// ClrBit(pLCTx,pbLCTx); //线控器,LCTx 初始为低电位
//}
}
void PORTS_Ref(void)
{
SPCR = 0x00; /* 禁止 SPI */
TWCR = 0x00; /* 禁止 SWI */
//ACSR = 0x80; /* Analog Comparator Switch Off */
#if (NJTYPE == 0) ||(NJTYPE == 1)
/* AUX 吸顶 */
DDRA = 0x00;
DDRB = 0x0FF;
DDRC = 0x0EB;
#elif (NJTYPE == 2) ||(NJTYPE == 3)
/* AUX 挂机 */
DDRA = 0x00;
DDRB = 0x0FF;
DDRC = 0x0EB;
#elif (NJTYPE == 4)
/* AUX 挂机 */
DDRA = 0x00;
DDRB = 0x0FF;
DDRC = 0x0E3;
#elif (NJTYPE == 5)
/* 柜机 */
DDRA = 0x0F0;
DDRB = 0x0FC;
DDRC = 0x0EB;
#endif /* NJTYPE */
#ifdef EnPGFENGJI
DDRD = 0x01E; //Tx 初始为高电位
#else /* EnPGFENGJI */
DDRD = 0x0BE; //Tx 初始为高电位
#endif /* EnPGFENGJI */
}
/*-----------------------------------------------------------------------------
ROUTINE NAME : Get_JP
INPUT/OUTPUT :
DESCRIPTION :
1、读入配置开关值
2、读入房卡开关状态
COMMENTS :
本过程,每4mS被调用一次
-----------------------------------------------------------------------------*/
void Get_JP(void)
{
#ifndef EnSTYLE5
//if (ValBit(pJP1,pbJP1)){ /* JP1 */
// SetBit(SysConfig,fEnMemo); /* JP1 断开,允许掉电记忆 */
//} else {
// ClrBit(SysConfig,fEnMemo); /* JP1 短接,无掉电记忆 */
//}
#endif /* EnSTYLE5 */
/* 房卡监测输入, 断开:不允许系统开机 */
#if 0
if (!ValBit(pJPFC,pbJPFC)) ++LtdSwOnCntr;
if (++ChkLtdSwCntr > 100){
if ( LtdSwOnCntr > 15){
ClrBit(Errorflg2,fLtdSwSt); /* 房卡状态 1:断开 */
ClrBit(RunMode,fLtdSwOn);
} else {
SetBit(Errorflg2,fLtdSwSt); /* 房卡状态 1:断开 */
SetBit(RunMode,fLtdSwOn);
}
ChkLtdSwCntr = LtdSwOnCntr = 0;
}
#else
ClrBit(RunMode,fLtdSwOn);
#endif
}
#if (NJTYPE == 0)||(NJTYPE == 1)
void SetOnOff(u8 KeyState)
{
if (DebounceButton == 0) {
Key_State = KeyState;
if (ValBit(RunMode,fSysOnOff)){
TurnSysOff();
/* 清除定时关标志 */
SlpTmFlag &= (u8)((1<<bb4ms)|(1<<bb2s)|(1<<fTime));
} else{
TurnSysOn();
if (KeyState == KEY_QZIDLE_NEXT){
SetMode(MODECOOL);
} else {
SetMode(MODEAUTO);
}
SetupTp = 0x98; /* 设定温度 24℃ */
ClrBit(SlpTmFlag,fTime);
FanStatus = FANAUTO_S;
SetFDoorUnit(SWINGAUTO);
}
}
}
#endif
/*-----------------------------------------------------------------------------
ROUTINE Name : Key_Scan
Description :
本过程,每4mS被调用一次
-----------------------------------------------------------------------------*/
void Key_Scan(void)
{
#if (NJTYPE == 0)||(NJTYPE == 1)
/* 按键反弹延时 */
if (DebounceButton != 0) DebounceButton--;
switch(Key_State){
#if (NJTYPE == 1)
case KEY_PUSHED:
if (!ValBit(pBUTTON,pbBUTTON)){
SetOnOff(KEY_IDLE_NEXT);
} else {
if (ValBit(Sysflag1,f1XK_YK)){ /* 1: 线控器,0:遥控器 */
Key_State = KEY_IDLE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -