|
下面是我写的程序,当在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_CLK BIT(4) /*时钟线引脚 */
#define R_IO BIT(5) /*数据线引脚 */
#define R_RST BIT(3) /*复位线引脚 */
#define R_DDR DDRD /*数据线方向*/
#define R_PORT PORTD
#define R_PIN PIND
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
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|