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

📄 stc89c52.h

📁 此文件为GPS源代码
💻 H
字号:
#ifndef STC89C52_h
#define STC89C52_h
/*_____ I N C L U D E S ____________________________________________________*/

#include "board.h"                /* board definition */
/*_____ M A C R O S ________________________________________________________*/

/*	新增特殊功能寄存器定义	*/
sfr		ISP_DATA	=	0xE2;		//	ISP/IAP Flash Data Register. Data got from e2prom or to be  wrriten into the e2prom are all put on here
sfr		ISP_ADDRH	=	0xE3;		//  ISP/IAP Flash Address High
sfr		ISP_ADDRL	=	0xE4;		// 	ISP/IAP Flash Address Low
sfr		ISP_CMD		=	0xE5;		// 	ISP/IAP Flash Command Register 
sfr		ISP_TRIG	=	0xE6;		//	ISP/IAP Flash Command Trigger
sfr		ISP_CONTR	=	0xE7;		//	ISP/IAP Flash Control Register
/**************** 定义Flash 操作等待时间 ****************************/
#define        MCU_CLOCK_40MHz
//#define         MCU_CLOCK_20MHz
//#define        MCU_CLOCK_10MHz
//#define        MCU_CLOCK_5MHz
#ifdef MCU_CLOCK_40MHz
        #define WAIT_TIME        0x00
#endif
#ifdef MCU_CLOCK_20MHz
        #define WAIT_TIME        0x01
#endif
#ifdef MCU_CLOCK_10MHz
        #define WAIT_TIME        0x02
#endif
#ifdef MCU_CLOCK_5MHz
        #define WAIT_TIME        0x03
#endif
/*********************** E2prom Command **********************************/
#define	E2PROM_READ_CMD			0x01
#define	E2PROM_WRITE_CMD		0x02
#define	E2PROM_ERASE_CMD		0x03


//sbit ISPEN = ISP_CONTR^7;

/***********************  Low Level Routine ***********************************/
#define E2prom_write_byte(e2prom_data)	(ISP_DATA=e2prom_data)
#define E2prom_read_byte()				(ISP_DATA)
#define E2prom_send_cmd(command) 		(ISP_CMD=command)
#define E2prom_send_add_high(add_high)	(ISP_ADDRH=add_high)
#define E2prom_send_add_low(add_low)	(ISP_ADDRL=(add_low)
#define E2prom_send_trig(trig)			(ISP_TRIG=trig)
#define E2prom_send_control(control)	(ISP_CONTR=control)

/************ ISP/IAP Command Mode **************************************/
#define E2prom_stanby()			(ISP_CMD=0x00)	//	Stanby
/*************	Open Read  command **************************************/
#define E2prom_read_on()				\
		ISP_CMD=0xF8;					\
		ISP_CMD=E2PROM_READ_CMD
/************ 	Open Write Command *************************************/
#define E2prom_write_on()				\
		ISP_CMD=0xF8;					\
		ISP_CMD=E2PROM_WRITE_CMD	

/************   Open Erase Command  *************************************/
#define E2prom_Erase_on()				\
		ISP_CMD=0xF8;					\
		ISP_CMD=E2PROM_ERASE_CMD

//#define E2prom_on()				(ISPEN=1)
//#define E2prom_off()			(ISPEN=0)

/*************使ISP/IAP命令生效***************************/
#define E2prom_execute_cmd()		\
	ISP_TRIG=0x46;					\
	ISP_TRIG=0xB9;					\
	_nop_()
	
/*************打开ISP,IAP 功能*******************************/
/* EA=0 关中断WIAT_TIME置等待时间							*/
/* ISPEN置1 允许ISP/IAP功能									*/
/************************************************************/

#define E2prom_enable()				\
	EA	= 0;						\
	ISP_CONTR=ISP_CONTR & 0x18;		\
	ISP_CONTR=ISP_CONTR	| WAIT_TIME;\
	ISP_CONTR=ISP_CONTR | 0x80

/*************	清空ISP/IAP状态 避免误操作*************/
#define E2prom_disenable()			\
	ISP_CONTR	=0x7F;				\ 
	ISP_CMD		=0x00;				\
	ISP_TRIG	=0x00;				\
	ISP_ADDRH	=0x00;				\
	ISP_ADDRL	=0x00;				\
	EA			=1

/*************	Definition 	************************************/
extern Uint16 e2prom_free_add;			//向E2PROM写入新的GPS数据时,新GPS数据在E2PROM中的地址
extern Uint16 e2prom_update_add;		//用于指示在把新的设备状态信息更新到e2prom中时,数据在e2prom的地址
extern Uint16 e2prom_gl_add;			// 通用地址用于切换e2prom_free_add e2prom_update_add

/*************    Declaration  ***************************************/
Byte	e2prom_read_bytes(Byte len);	//	读取len个字节数据并保存到gl_buffer
bit		e2prom_sector_erase();			// 	删除一个扇区
bit		e2prom_write_bytes(Int16 len);	//	写入gl_buffer中len个字节数据

#endif	//STC89C52_h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -