pasguoneng 发表于 2006-2-25 11:12:56

求助:数字式电位器DS1267,DS1868的程序问题。

下面是我写的程序,当在MAIN程序中,分别用write_data(126,126),write_data(130,130)时,测出来的阻值是不是最大就是最小,我用的是100K,以128为分界,写到DS1267中的值大于128时,阻值是100K,写到DS1267中的值小于128时,阻值是0K,.我想这个write_data(unsigned char res0,unsigned char res1)应该没问题.不知道怎么回事.

#define R_CLKBIT(4)/*时钟线引脚 */

#define R_IO   BIT(5) /*数据线引脚 */

#define R_RSTBIT(3)/*复位线引脚 */

#define R_DDRDDRD   /*数据线方向*/

#define R_PORT PORTD

#define R_PINPIND



void write_data(unsigned char res0,unsigned char res1)

{

unsigned char i,temp;

R_DDR|=R_IO;

R_PORT&=~R_RST;

R_PORT&=~R_CLK;         

asm("nop");

asm("nop");

asm("nop");

asm("nop");

R_PORT|=R_RST;                  //信号低时拉高RST初始化

//写STACK 0



R_PORT |=R_IO ;

asm("nop");

asm("nop");

R_PORT |=R_CLK;             //时钟上升沿写入数据

asm("nop");

R_PORT &=~R_CLK;             //时钟拉低电平

//1端电位器

temp=res1;

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

{

if(temp&(1<<i))

                R_PORT |=R_IO ;

else

          R_PORT &=~R_IO ;

asm("nop");

asm("nop");

R_PORT |=R_CLK;             //时钟上升沿写入数据

asm("nop");

R_PORT &=~R_CLK;             //时钟拉低电平

}

//1端电位器

temp=res0;

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

{

if(temp&(1<<i))

          R_PORT |=R_IO ;

else

          R_PORT &=~R_IO ;

asm("nop");

asm("nop");

R_PORT |=R_CLK;             //时钟上升沿写入数据

   asm("nop");

R_PORT &=~R_CLK;             //时钟拉低电平

}

R_PORT&=~R_RST;             //禁止DS1267

}

pasguoneng 发表于 2006-2-25 16:13:23

终于搞定,原来它的17位寄存器是高位在前,低位在后,害我看了半天的DATASHEET。

changtf 发表于 2013-1-17 15:10:52

{:titter:}

flyheart33 发表于 2014-4-23 16:30:08

不知道楼主还在不在,我用STM32驱动DS1868就是不行
页: [1]
查看完整版本: 求助:数字式电位器DS1267,DS1868的程序问题。