📄 ade7758.h
字号:
//extern void write7753(unsigned char type,unsigned int wdata);
extern void write7753(unsigned char type,unsigned int wdata,unsigned char databit);
//extern unsigned int read7753(unsigned char type);
//extern void write7753a(unsigned char type,unsigned int wdata);
extern void write7753a(unsigned char type,unsigned int wdata,unsigned char databit);
extern void write7753b(unsigned char type,unsigned int wdata);
extern void write7753c(unsigned char type,unsigned int wdata);
extern unsigned long read7753a(unsigned char type,unsigned char databit);
extern unsigned int read7753b(unsigned char type);
extern unsigned int read7753c(unsigned char type);
extern void delay10us();
extern void clean_energy();
extern void get_data_from7758();
extern void init_7758();
extern void read_en_from_e2prom();
extern void read_set_from_e2prom();
extern void save_en_to_e2prom();
extern void save_en_to_flash();//save to mcu
extern void save_set_to_e2prom();
extern void write_mask();
extern void write_to7758();
////////////////////////////////////////////////
extern void erase_flash();
extern void look_for_flag();
extern void write_data_flag();
extern void save_en_to_flash();
extern void read_en_from_flash();
////////////////////////////////////////////////
//整型数和字符型数的共用体
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
union int_char
{
uint data16;
uchar data8[2];
};
//长整型数和字符型数的共用体
union long_char
{
ulong data32;
uchar data8[4];
};
//通讯时的信息头结构
struct com
{
uchar local_add;//本机地址
uchar funtion_code;//功能码
uchar reg_num;//寄存器个数
};
//保存所有处理过的从7758中来的电参量,也是一个在正常模式下的通讯缓冲区
struct all_data
{
struct com com_head;//通讯时的响应帧的开头 3bytes
//union int_char voltage[3];//三相电压值 6bytes
union int_char voltage[4];//三相电压值 + 平均值 8bytes
union int_char voltageLL[4];//三相线电压压值 + 平均值 8bytes
//union int_char current[3];//三相电流值 6bytes
union int_char current[4];//三相电流值 + 平均值 8bytes
union int_char watt[4];//三相有功功率,最后一个是三相总和 8bytes
union int_char var[4];//三相无功功率,最后一个是三相总和 8bytes
union int_char va[4];//三相视在功率,最后一个是三相总和 8bytes
union long_char watt_hour[4];//三相有功电能值,最后一个是三相总和,初始化时应该将E2PROM中的数据读出来。16bytes
union long_char var_hour[4];//三相无功电能值,最后一个是三相总和 16bytes
union long_char va_hour[4];//三相视在电能值,最后一个是三相总和 16bytes
union int_char sys_hz;//系统频率 2bytes
union long_char surge;//浪涌个数 4bytes
union int_char com_crc;//通讯时存放校验和 2bytes
//整个结构体的长度为95字节 //+12bytes
};
//在校准模式下的只读寄存器内容,与上面的结构体内存共用
struct adjust_datar
{
struct com com_head;//通讯时的响应帧的开头
union long_char voltage[3];
union long_char current[3];
union int_char watt[3];
union int_char var[3];
union int_char va[3];
union int_char com_crc;//通讯时存放校验和
//以上部分不只作为只读数据缓冲,还作为校准模式下的通讯缓冲,总长度为:3 + 36 + 2 + 6
};
//在校准模式下的只写寄存器内容,与上面的结构体内存共用
struct adjust_dataw
{
union int_char voltage[3];
union int_char current[3];
union int_char watt[3];
union int_char var[3];
union int_char va[3];
//总长度为:30字节
};
//在校准模式下存放电参量的原始数据
struct adjust_data
{
struct adjust_dataw write_data;//存放修正参数,最后将写入E2PROM
struct adjust_datar read_data;//存放原始数据
};
//存放正常模块和校准模式下的数据,采用共用体以节省存储空间
union all
{
struct all_data working;//正常工作模式下存放的电参量 95
struct adjust_data adjusting;//校准模式下存放的数据 65
uint serie_data16[47]; //连续的数据16位 94
uchar serie_data8[ 107]; //连续的数据8位 95
uchar serie1_data8[41]; //连续的数据8位,communication 41
};//整个结构体的长度为107字节
extern union all xdata rwdata;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -