📄 iic.h
字号:
#ifndef __IIC_H__
#define __IIC_H__
//////////////////////////////////////////////////////////////////////////
//#include "reg52.h"
//#include "VCKeil.h"
#ifndef NULL
#define NULL 0
#endif
#define SNULL ((void *) 0)//空指针
#include "kfsst89e554rc.h"
#include "ABSACC.H"
#include "Var.h"
//#include <stdio.h>
#include <intrins.h>
#define __KF_DEBUG__ 0 //1在调试开始时会自动重写EEPROM,0不自动重写EEPROM
/////
//Key definitons
#define KEY_NUM0 0x70
#define KEY_NUM1 0x69
#define KEY_NUM2 0x72
#define KEY_NUM3 0x7A
#define KEY_NUM4 0x6B
#define KEY_NUM5 0x73
#define KEY_NUM6 0x74
#define KEY_NUM7 0x6c
#define KEY_NUM8 0x75
#define KEY_NUM9 0x7D
#define KEY_UP 0x75
#define KEY_DOWN 0x72
#define KEY_LEFT 0x6B
#define KEY_RIGHT 0x74
#define KEY_ENTER 0x5A
#define KEY_BKSPACE 0x66
#define KEY_CANCEL 0x7B
#define KEY_MENU 0x7B
#define KEY_DEL 0x71
#define KEY_LOGIC 0x7c
#define KEY_NOKEY 0x00
#define KEY_NOTKEY 0x01//不是按键,虚拟一个假的按键
//Lcd charater definition
#define NUM_H 0xA3
#define NUM_L 0xB0
#define CHOOSE_H 0xA1
#define NOTCHOSEN_L 0xF0
#define CHOSEN_L 0xF1
//
#define SYS_BAUD_CNT 6
#define SYS_AUTO_LOCK_TIME 20//10s无操作仪器锁定
#define SYS_LCD_OFF_TIME 60//40s无操作Lcd掉电
#define SYS_CANCEL_INPUT_TIME (SYS_LCD_OFF_TIME-SYS_AUTO_LOCK_TIME)
//连续不输入信息,则该输入取消,并上锁
#define CHOSEN_CH 0x10
//Meter Status
#define MSTA_AUTO 0
#define MSTA_MANUAL 1
#define MSTA_GREENWAY 2
//Command definition
#define CMD_IDT 0x01//绿色通道
#define CMD_PHASE 0x02//相位
#define CMD_PHASE_GROUP 0x03//相位组
#define CMD_SYSTEM_TIME 0x04//设置时间
#define CMD_ADD_HOLIDAY 0x05//增加节假日
#define CMD_DEL_HOLIDAY 0x06//删除节假日
#define CMD_ENABLE_HOLIDAY 0x07//允许/禁止节假日
#define CMD_SET_NODE_ID 0x08//设置本机ID
#define CMD_ACK 0x09//系统响应
#define REC_OK 0
#define REC_CRC_ERR 1
#define MSG_ERR 2
#define CMD_RESTORE 0x0a//恢复默认
//
/////////////////////EEPROM存储的地址定义//////////////////////////////////////
//统一设置
#define ADDR_MAC 0x0fff
#define ADDR_HOLIDAY_PERMIT (0x0fff-1)//允许节日:1允许,0禁止
#define ADDR_HOLIDAY_HEAD (0x0fff-2)//节日存储:占据HOLIDAY_LEN*20
#define YEAR_ADDR 0
#define MONTH_ADDR 1
#define DATE_ADDR 2
#define HOLIDAY_LEN 3//3*20
#define ADDR_FIRST_USED (ADDR_HOLIDAY_HEAD-HOLIDAY_LEN*20)//第一次使用标记:0xff-未使用,0xaa-已使用
#define ADDR_PASSWORD (ADDR_FIRST_USED-1)//密码,2Bytes:4位密码
#define ADDR_LOW_END (ADDR_PASSWORD-2)
///方案设置
#define ADDR_GENARAL_SCH 0//平时方案起始地址
#define ADDR_GENARAL ADDR_GENARAL_SCH
#define PHASE_GROUP_ADDR 0//相组起始偏移地址\
#define CHEDAO_ADJ 0//3Bytes
#define GT_ADJ 3
#define GST_ADJ 4
#define YT_ADJ 5
#define RT_ADJ 6
#define PHASE_LEN 7
#define PHASE_GROUP_LEN (PHASE_LEN*8)//每个相位组最多有8个相位
#define SCH_LEN (PHASE_GROUP_LEN*13)//
//---
#define ADDR_HOLIDAY_SCH (ADDR_GENARAL_SCH+SCH_LEN)//节日方案起始地址
#define ADDR_HOLIDAY ADDR_HOLIDAY_SCH
//---
#define NOT_USED_ADDR (ADDR_HOLIDAY+SCH_LEN)
////////Hardware definitions//////////////////////////////////////////////////////////////////
//IO Pins definitions
sbit LCD_RS = P1^1;
sbit LCD_RW = P1^2;
sbit EEPROM_PAGE = P1^6;
sbit TxEN = P1^7;
sbit FAN_CTRL_PIN = P1^0;
// CS Address definitions
#define CS0 0x0800
#define CS1 0x1000
#define CS2 0x2000
#define CS3 0x3000
#define CS4 0x4000
#define CS5 0x5000
#define CS6 0x6000
#define CS7 0x7000
#define CS8 0x8000
#define CS9 0x9000
#define CS10 0xa000
#define CS11 0xb000
#define CS12 0xc000
#define CS13 0xd000
#define CS14 0xe000
#define CS15 0xf000//
///hardware xdata address
#define LCD_BASE CS10
#define RTC_BASE CS9
#define EEPROM_BASE CS11
#define INPUT_1 CS7
#define INPUT_2 CS8
#define OUT0 XBYTE[CS0]
#define OUT1 XBYTE[CS1]
#define OUT2 XBYTE[CS2]
#define OUT3 XBYTE[CS3]
#define OUT4 XBYTE[CS4]
#define OUT5 XBYTE[CS5]
#define OUT6 XBYTE[CS6]
//RTC definitions
#define RegSeconds 0x00
#define RegSeconds_Alarm 0x01
#define RegMinutes 0x02
#define RegMinutes_Alarm 0x03
#define RegHours 0x04
#define RegHours_Alarm 0x05
#define RegDay 0x06
#define RegDate 0x07
#define RegMonth 0x08
#define RegYear 0x09
#define RegCentury 0x32
#define CtrlRegA 0x0a
//UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0
#define CtrlRegB 0x0b
//SET PIE AIE UIE SQWE DM 24/12 DSE
#define CtrlRegC 0x0c
//IRQF PF AF UF 0 0 0 0
#define CtrlRegD 0x0d
//VRT 0 0 0 0 0 0 0
//0x0E-->0x7F,except 0x32,are static rams
/////System Application definition///////////////////////////////////////////////////////
//N=256-fosc/(32*12*fBd),fBd=4800,N=6
#define SYS_BEGIN_DAY 2//1-7 星期日为1
#define SYS_BEGIN_DATE 1//1-31
#define SYS_BEGIN_MONTH 1//1-12
#define SYS_BEGIN_YEAR 7//00-99
#define SYS_CENTURY 20//don't use it
/////Functions declaration//////////////////////////////////////////////////////////////////////
//SmallFunction.c
extern void PrintNum(unsigned char x,unsigned char y,unsigned char dat);
extern void PrintNum2(unsigned char x,unsigned char y,unsigned char dat);
extern unsigned int Get44Key(unsigned char x,unsigned char y);
extern unsigned char Get256Key(unsigned char x,unsigned char y);
extern unsigned char GetBoolKey(unsigned char x,unsigned char y,unsigned char bl);
extern void GetPassword(unsigned char x,unsigned char y);
extern void HourUpdate(void);
extern void PhaseSwitch(void);
extern void SecondCheck(void);
extern void IO_Output(void);
extern void ShowDesk(void);
//Lcd.c
extern void DelayS(void);
extern void WriteCmd(unsigned char cmd);
extern void WriteData(unsigned char dat);
extern void LcdInit(void);
extern void LcdCN(unsigned char x,unsigned char y,const char datH,const unsigned char datL);
extern void LcdCnString(unsigned char x,unsigned char y,const char Head[]);
extern void LcdChar(unsigned char x,unsigned char y,const char dat);
extern void LcdAddChar(unsigned char dat);
extern void LcdCur(unsigned char x,unsigned char y);
extern void LcdCurOff(void);
extern void LcdPowerOn(void);
extern void LcdPowerOff(void);
//UART.c
extern void putchar(unsigned char ch);
extern void UART_PrintNum(unsigned int dat);
extern void UART_PrintStr(const char Head[]);
extern void UART_Ack(unsigned char dat);
//CmdProcess.c
extern unsigned char CheckCRC(void);
extern void CmdProcess(void);
//Menu.c
extern char* GetMenuHead(unsigned int id);
extern void ShowMenu(void);
extern void OnArrowUp(void);
extern void OnArrowDown(void);
extern void OnCancel(void);
extern void OnEnter(void);
extern void OnMenuKey(void);
extern void SwitchMenuEntry(void);
extern void ClrPhase(void);
extern void SetCheDao(void);
extern void SetAttribTime(void);
extern void CopyPhaseGroup(void);
extern void SetSysTime(void);
extern void SetSysDate(void);
extern void StepSwitch(void);
extern void ModifyHoliday(void);
void GreenWayCtrl(void);
//RTC_EEPROM.c
extern void RTC_FirstInit(void);
extern void RTC_GeneralInit(void);
extern void EPR_Write(unsigned int addr,unsigned char dat);
extern unsigned char EPR_Read(unsigned int addr);
extern void EPR_ChangePage_0(void);
extern void EPR_ChangePage_1(void);
extern void EPR_Reset(void);
extern void EPR_CopyPage(void);
//PS2.c
extern unsigned char GetKey(void);
extern void KbWait4High(void);
extern void KbWait4Low(void);
extern void PS2_SendChar(unsigned char dat);
extern void PS2_Init(void);
//////////////////////////////////////////////////////////////////////////
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -