?? db_ade7758_oreg.c
字號:
/*file name :DB_ADE7758_OREG.C*/
/*Function :Read ADE7758 register and Write ADE7758 register */
#include<AM80C52.H>
#include "DB_ADE7758_OREG.H"
sbit DB_CS_A=0x90;
sbit DB_CS_B=0x91;
sbit DB_CS_C=0x92;
sbit Dout=0x97;
sbit Din =0x96;
sbit Sclk=0x95;
#define DB_X5045_CS0 P1=P1&0x0f8
#define DB_ADE7758_CS1 P1=P1|0x01;P1=P1&0x0f9
#define DB_LED_CS2 P1=P1|0x02;P1=P1&0x0fa
#define DB_LED_CS3 P1=P1|0x03;P1=P1&0x0fb
#define DB_DS1302_CS4 P1=P1|0x04;P1=P1&0x0fc
#define DB_Uselct_CS P1=P1|0x07
unsigned char ADE7758_ReadData(void)
{
unsigned char ReadData;
unsigned int i;
ReadData=0x0;
Dout = 1;
for(i=0;i<8;i++)
{
ReadData=ReadData<<1;
Sclk=0;
YS();
Sclk=1;
YS();
if(Dout)
{
ReadData=ReadData | 0x01;
}
else
{
ReadData=ReadData & 0xfe;
}
YS();
}
Sclk=0;
return ReadData;
}
void ADE7758_WriteDatain(unsigned char Datain)
{
unsigned char i;
unsigned char Temp_Data;
Temp_Data=Datain;
Sclk=0;
i=0;
for(i=0;i<8;i++)
{
Sclk = 1;
YS();
if((Temp_Data & 0x80)==0x80)
{
Din = 1;
}
else
{
Din = 0;
}
Sclk = 0;
YS();
Temp_Data=Temp_Data<<1;
}
}
void ADE7758_InitA()
{
/*寫相應寄存器*/
/*寫12位是先寫入高4位,再寫入低8位*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(0x80);
DB_Uselct_CS;
/*使能輸出脈沖*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(OPMODE_W8);
ADE7758_WriteDatain(0x00);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(GAIN_W8);
ADE7758_WriteDatain(0x00);
DB_Uselct_CS;
/*設置VARCF為無功功率輸出脈沖*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(WAVMODE_W8);
ADE7758_WriteDatain(0x00);
DB_Uselct_CS;
/*設置有功增益*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(AWG_W12);
ADE7758_WriteDatain(ref[133]);
ADE7758_WriteDatain(ref[132]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(BWG_W12);
ADE7758_WriteDatain(ref[135]);
ADE7758_WriteDatain(ref[134]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(CWG_W12);
ADE7758_WriteDatain(ref[137]);
ADE7758_WriteDatain(ref[136]);
DB_Uselct_CS;
/*設置無功增益為默認1*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(AVARG_W12);
ADE7758_WriteDatain(ref[139]);
ADE7758_WriteDatain(ref[138]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(BVARG_W12);
ADE7758_WriteDatain(ref[141]);
ADE7758_WriteDatain(ref[140]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(CVARG_W12);
ADE7758_WriteDatain(ref[143]);
ADE7758_WriteDatain(ref[142]);
DB_Uselct_CS;
/*設置輸出脈沖累計的是單相還是三相*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(COMPMODE_W8);
ADE7758_WriteDatain(0xbC);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(LCYCMODE_W8);
ADE7758_WriteDatain(0x3f);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(LINECYC_W16);
ADE7758_WriteDatain(0x0f);
ADE7758_WriteDatain(0xff);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(WDIV_W8);
ADE7758_WriteDatain(0x32);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(VARDIV_W8);
ADE7758_WriteDatain(0x32);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(VADIV_W8);
ADE7758_WriteDatain(0x32);
DB_Uselct_CS;
/*設置有功輸出脈沖分頻系數*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(APCFNUM_W16);
ADE7758_WriteDatain(0x00);
ADE7758_WriteDatain(0x00);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(APCFDEN_W12);
ADE7758_WriteDatain(ref[57]);
ADE7758_WriteDatain(ref[56]);
DB_Uselct_CS;
/*設置無功輸出脈沖分頻系數*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(VARCFNUM_W16);
ADE7758_WriteDatain(0x00);
ADE7758_WriteDatain(0x00);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(VARCFDEN_W12);
ADE7758_WriteDatain(ref[59]);
ADE7758_WriteDatain(ref[58]);
DB_Uselct_CS;
/*相位補償*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(APHCAL_W7);
ADE7758_WriteDatain(ref[144]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(BPHCAL_W7);
ADE7758_WriteDatain(ref[146]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(CPHCAL_W7);
ADE7758_WriteDatain(ref[148]);
DB_Uselct_CS;
/*電壓補償*/
/*DB_ADE7758_CS1;
ADE7758_WriteDatain(AVRMSOS_W12);
ADE7758_WriteDatain(ref[13]);
ADE7758_WriteDatain(ref[12]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(BVRMSOS_W12);
ADE7758_WriteDatain(ref[15]);
ADE7758_WriteDatain(ref[14]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(CVRMSOS_W12);
ADE7758_WriteDatain(ref[17]);
ADE7758_WriteDatain(ref[16]);
DB_Uselct_CS; */
/*電流增益*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(AIGAIN_W12);
ADE7758_WriteDatain(ref[19]);
ADE7758_WriteDatain(ref[18]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(BIGAIN_W12);
ADE7758_WriteDatain(ref[21]);
ADE7758_WriteDatain(ref[20]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(CIGAIN_W12);
ADE7758_WriteDatain(ref[23]);
ADE7758_WriteDatain(ref[22]);
DB_Uselct_CS;
}
void YS()
{
unsigned char i;
for(i=0;i<0xff;i++);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -