sht10的data接M16的PA0,clk接M16的PA1,是按照附件中SHT10的典型应用电路连的线,下面的子程序是往sht10里写一个字节的数据,如果成功写入error应该为0,但是不知道为什么error总是为1.电路也反复检查过了,肯定没接错。求解,多谢。
SHT10_SHT11数字温湿度传感器-中文资料.pdf
(473.48 KB)
#define DATA_1 PORTA|=0X01
#define DATA_0 PORTA&=0XFE
#define SCK_1 PORTA|=0X02
#define SCK_0 PORTA&=0XFD
#define DATA_SETINPUT DDRA&=0XFE;PORTA|=0X01
#define DATA_SETOUTPUT DDRA|=0X01
#define SCK_SETINPUT DDRA&=0XFD;PORTA|=0X02
#define SCK_SETOUTPUT DDRA|=0X02
#define DATA_IN (PINA&0X01)
#define noACK 0
#define ACK 1
char s_write_byte(unsigned char value)
{
unsigned char i;
char error;
DATA_SETOUTPUT;//DDRA|=0X01
SCK_SETOUTPUT;//DDRA|=0X02
SCK_0;
DATA_0;
for(i=0;i<8;i++) //发送8位数据,丛机将在上升沿读取数据
{
SCK_0;
if(value&(0x80>>i))
DATA_1;
else
DATA_0;
delay_little();
SCK_1;
delay_little();
}
SCK_0; //在接下来的上升沿读取从机发送的“已收到”信号。
DATA_SETINPUT;
delay_little();
SCK_1;
delay_little();
putchar0(0x01);
error = (DATA_IN?1:0);//在这里,error应为0,不知道为什么老是为1
putchar0(error);
putchar0(0x02);
delay_little();
SCK_0;
DATA_SETOUTPUT;
return error;
}
|