[Atmel] 求助Atmega16+sht10 异常

[复制链接]
929|0
 楼主| sanguanko 发表于 2015-3-31 22:05 | 显示全部楼层 |阅读模式
sht10的data接M16的PA0,clk接M16的PA1,是按照附件中SHT10的典型应用电路连的线,下面的子程序是往sht10里写一个字节的数据,如果成功写入error应该为0,但是不知道为什么error总是为1.电路也反复检查过了,肯定没接错。求解,多谢。

#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;
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

262

主题

290

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部