sbit X_CS_1=P1^0; //
sbit X_INC=P1^1;//
sbit X_UD=P1^2; //
sbit X_CS_2=P1^4; //
//有关电位器的宏定义
#define SETB_X9C103_CS1 X_CS_1=1
#define CLRB_X9C103_CS1 X_CS_1=0
#define SETB_X9C103_INC X_INC=1
#define CLRB_X9C103_INC X_INC=0
#define SETB_X9C103_UD X_UD=1
#define CLRB_X9C103_UD X_UD=0
#define SETB_X9C103_CS2 X_CS_2=1
#define CLRB_X9C103_CS2 X_CS_2=0
void X9C103_Inc_N_Step(unsigned char Sel,unsigned char N);
void X9C103_Dec_N_Step(unsigned char Sel,unsigned char N);
void Delay(unsigned int t) ;
void X9C103_Init(unsigned char Sel);//初始化至中间位置
//延时us子程序
void Delay(unsigned int t)
{
unsigned int i;
for(i=0;i<t;i++) ;
}
//************************************************************************ // 数字电位器向上调一步
// 数字电位器100个抽头,相当于99步
//************************************************************************ void X9C103_Inc_N_Step(unsigned char Sel,unsigned char N)
{
unsigned char i=0;
SETB_X9C103_UD; // U/D 拉高则下面的INC下沿,执行UP操作
Delay(3); // 延时大约2us
switch(Sel)
{
case 1:
CLRB_X9C103_CS1;
break;
case 2:
CLRB_X9C103_CS2;
break;
default:break;
}
// CLRB_X9C103_CS; // CS 拉低
for(i=N;i>0;i--)
{
SETB_X9C103_INC; // 拉高INC 因为INC的下沿有效
Delay(2); // 延时2us左右
CLRB_X9C103_INC; // INC 拉低; // 产生一个下沿
Delay(600); // 延时大约500us, Rw等待输出稳定
}
SETB_X9C103_INC;//保存模式
switch(Sel)
{
case 1:
SETB_X9C103_CS1;
break;
case 2:
SETB_X9C103_CS2;
break;
default:break;
} // 完毕CS拉高 //store
}
//************************************************************************ // 数字电位器向下调一步
// 数字电位器100个抽头,相当于99步
//************************************************************************ void X9C103_Dec_N_Step(unsigned char Sel,unsigned char N)
{
unsigned char i=0;
CLRB_X9C103_UD; // U/D 清0,则下面的INC下沿,执行Down操作
Delay(3); // 延时大约2us
switch(Sel)
case 1:
CLRB_X9C103_CS1;
break;
case 2:
CLRB_X9C103_CS2;
break;
default:break;
}
for(i=N;i>0;i--)
{
SETB_X9C103_INC; // 拉高INC 因为INC的下沿有效Delay(2); // 延时2us左右
CLRB_X9C103_INC; // INC 拉低; // 产生一个下沿Delay(600); // 延时大约500us, Rw等待输出稳定}
SETB_X9C103_INC;//保存模式
switch(Sel)
{
case 1:
SETB_X9C103_CS1;
break;
case 2:
SETB_X9C103_CS2;
break;
default:break;
} // 完毕CS拉高 // store
}
void X9C103_Init
(unsigned char Sel)
{
X9C103_Dec_N_Step(Sel,99);
X9C103_Inc_N_Step(Sel,49);
}。