数字电位器X9111读写程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

// 写一个字节
void WR_Byte(unsigned char dat)
{
unsigned char i;

for(i=0; i<8; i++)
{

SCK = 0;
_nop_();
_nop_();
_nop_();
_nop_();

if(dat & 0x80)
MOSI = 1;
else
MOSI = 0;
_nop_();
_nop_();
_nop_();
_nop_();

SCK = 1; // 时钟上升沿写入数据
_nop_();
_nop_();
_nop_();
_nop_();

dat <<= 1;
}
}

// 读一个字节
unsigned char RD_Byte(void)
{
unsigned char i;
unsigned char dat;

dat = 0;
MISO = 1;
_nop_();
_nop_();
_nop_();
_nop_();

for(i=0; i<8; i++)
{
SCK = 1;
_nop_();
_nop_();
_nop_();
_nop_();

dat <<= 1;

SCK = 0;
_nop_();
_nop_();
_nop_();
_nop_();

if(MISO)
dat++; // 即当SO等于1时dat就加1
}

return dat;
}

// 输入10位数至寄存器中
void WriteData1(unsigned int dat)
{
X9111_CS1 = 0;
_nop_();
_nop_();
_nop_();
_nop_();

WR_Byte(0x52);
WR_Byte(0xA0);

WR_Byte(dat/256);
WR_Byte(dat%256);

SCK = 0; // 恢复为0准备下次的写数据
MOSI = 0;
_nop_();
_nop_();
_nop_();
_nop_();

X9111_CS1 = 1;
}


// 输出寄存器中的10位数
unsigned int ReadData1(void)
{
unsigned char dat0, dat1;
unsigned int idat;

X9111_CS1 = 0;
_nop_();
_nop_();
_nop_();
_nop_();

WR_Byte(0x53);
WR_Byte(0x80);

dat1 = RD_Byte();
dat0 = RD_Byte();
idat = dat1*256 + dat0;

SCK = 0;
_nop_();
_nop_();
_nop_();
_nop_();

X9111_CS1 = 1;
_nop_();
_nop_();
_nop_();
_nop_();

return idat;
}

相关文档
最新文档