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

📄 iic.h

📁 一个以前开发的实际应用的交通灯控制器程序
💻 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 + -