📄 ade7758.txt
字号:
#define MANIP7758_GLOBALS
#include "includes.h"
const uchar GACHC_58addr_num[]={1,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,
2,1,3,1,1,1,1,1,3,3,3,2,2,1,1,1,
1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,
1,1,1,1,1,2,2,2,2
};
/****************************************************************/
/* Read a byte from 7758 */
/*description: get byte for 7758 output */
/* */
/* */
/*input parameters: none */
/* */
/*output argument: return the obtaned byte which type is uchar*/
/*relative globe variables or functons: none */
/***************************************************************/
uchar read_1byte7758(void)
{
union UN_DEF LUB_data;
uchar i;
LUB_data.BYTE=0;nop();
for(i=0;i!=8;i++)
{
P_7758CLK_HIGH;
//us_delay(1);
us_delay(2);
P_7758CLK_LOW;
LUB_data.BIT.b0=P_7758DOUT;
if(i==7)
{
LUB_data.BYTE=~LUB_data.BYTE;/*invert the obtain bit*/
return LUB_data.BYTE;
}
LUB_data.BYTE<<=1;
//us_delay(1);
us_delay(2);
}
}
/****************************************************************/
/* write a byte to 7758 */
/*description: this function write one byte to the 7758 */
/* */
/* */
/*input parameters: PB_data:the data ready to be write */
/* */
/*output argument: none */
/*relative globe variables or functons:none */
/***************************************************************/
void write_1byte7758(uchar PB_data)
{
uchar i;
union UN_DEF LUB_data;
LUB_data.BYTE=~PB_data;/*invert the certain bit before output*/
for(i=0;i!=8;i++)
{
P_7758DIN=LUB_data.BIT.b7;
P_7758CLK_HIGH;
LUB_data.BYTE<<=1;
//us_delay(1);
us_delay(2);
P_7758CLK_LOW;
//us_delay(1);
us_delay(2);
nop();
}
}
/****************************************************************/
/* write a command to 7758 */
/*description: this fuction send a certain command to the 7758 */
/* */
/* */
/*input parameters: PB_addr: the command address */
/* PB_byte_nums: the numbers of the given command */
/* PP_data_point: a pointer which is point to the first byte*/
/*output argument: none */
/*relative globe variables or functions :none */
/***************************************************************/
void Data_wr7758(uchar PB_addr ,uchar *PP_data_point)
{
uchar i,LB_byte_nums;
ready_7758com();us_delay(2);
if((PB_addr==0x7e)||(PB_addr==0x7f))LB_byte_nums=1;
else LB_byte_nums=GACHC_58addr_num[PB_addr];
P_7758NCS_active;
us_delay(50);
//us_delay(150);
PB_addr|=0x80;
write_1byte7758(PB_addr);/*send the command address*/
LB_byte_nums&=0x03;
for(i=0;i!=LB_byte_nums;i++)
{
write_1byte7758(*(PP_data_point+i));
}
P_7758NCS_inactive;
us_delay(50);
//us_delay(150);
sleep_7758com();
}
/****************************************************************/
/* read a data from 7758 */
/*description: this fuction send a certain command to the 7758 */
/* */
/* */
/*input parameters: PB_addr: the command address */
/* PB_byte_nums: the numbers of the obtained data */
/* */
/*output argument: GA_buf_rdwr7758 saving the obtained data */
/*relative globe variables or functions :GA_buf_rdwr7758, read_1byte7758 */
/*read_1byte7758 */
/***************************************************************/
void Data_rd7758(uchar PB_addr)
{
uchar i,LB_byte_nums;
ready_7758com();us_delay(2);
if((PB_addr==0x7e)||(PB_addr==0x7f))LB_byte_nums=1;
else LB_byte_nums=GACHC_58addr_num[PB_addr];
P_7758NCS_active;
us_delay(50);
//us_delay(150);
nop();/*debug*/
write_1byte7758(PB_addr);
for(i=0;i!=LB_byte_nums;i++)
{
GA_buf_rdwr7758[i]=read_1byte7758();
}
P_7758NCS_inactive;
sleep_7758com();
us_delay(50);
//us_delay(150);
sleep_7758com();
nop();/*debug*/
}
/****************************************************************/
/* Initialize the 7758 */
/*description: this fuction initialize the relatived ports of 7758 */
/* */
/* */
/*input parameters: none */
/* */
/* */
/*output argument: none */
/*relative globe variables or functions :none */
/***************************************************************/
void ini_7758(void)
{
uint LW_data;
SET_OUTPUT_7758NCS;P_7758NCS_inactive;
SET_OUTPUT_7758CLK;P_7758CLK_LOW;
SET_OUTPUT_7758DIN;
SET_INPUT_7758DOUT;
SET_INT_MODE7758IQR;
us_delay(10);
GA_buf_rdwr7758[0]=0x40;
Data_wr7758(Addr_OPMODE, GA_buf_rdwr7758);
us_delay(30);
Read_EeprData(GST_58para.U_apcf.ACH_apcf,2,APCFDEN_EeAddr);
if(GST_58para.U_apcf.APCFDEN>0x0fff)
{
GST_58para.U_apcf.APCFDEN=0x0fff;
}
Data_wr7758(Addr_APCFDEN, GST_58para.U_apcf.ACH_apcf);
Read_EeprData(GST_58para.U_varcp.ACH_varcp,2,VARCFDEN_EeAddr);
if(GST_58para.U_varcp.VARCFDEN> 0x0fff )
{
GST_58para.U_varcp.VARCFDEN=0x0fff;
}
Data_wr7758(Addr_VARCFDEN, GST_58para.U_varcp.ACH_varcp);
Read_EeprData(GST_58para.U_awg.ACH_awg,2,AWG_EeAddr);
if(GST_58para.U_awg.AWG> 0x0fff )
{
GST_58para.U_awg.AWG=0x0f35;
}
Data_wr7758(Addr_AWG, GST_58para.U_awg.ACH_awg);
Read_EeprData(GST_58para.U_bwg.ACH_bwg,2,BWG_EeAddr);
if(GST_58para.U_bwg.BWG> 0x0fff)
{
GST_58para.U_bwg.BWG=0x0f35;
}
Data_wr7758(Addr_BWG, GST_58para.U_bwg.ACH_bwg);
Read_EeprData(GST_58para.U_cwg.ACH_cwg,2,CWG_EeAddr);
if(GST_58para.U_cwg.CWG>0x0fff )
{
GST_58para.U_cwg.CWG=0x0f35;
}
Data_wr7758(Addr_CWG, GST_58para.U_cwg.ACH_cwg);
Read_EeprData(GST_58para.U_avarg.ACH_avarg,2,AVARG_EeAddr);
if(GST_58para.U_avarg.AVARG>0x0fff)
{
GST_58para.U_avarg.AVARG=0x0f35;
}
Data_wr7758(Addr_AVARG, GST_58para.U_avarg.ACH_avarg);
Read_EeprData(GST_58para.U_bvarg.ACH_bvarg,2,BVARG_EeAddr);
if(GST_58para.U_bvarg.BVARG> 0x0fff)
{
GST_58para.U_bvarg.BVARG=0x0f35;
}
Data_wr7758(Addr_BVARG, GST_58para.U_bvarg.ACH_bvarg);
Read_EeprData(GST_58para.U_cvarg.ACH_cvarg,2,CVARG_EeAddr);
if(GST_58para.U_cvarg.CVARG>0x0fff)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -