#include <iostm8l152c6.h>
#include "delay.h"
#define PC_4 PC_IDR_bit.IDR4
void THD11_init();
void THD11_init();
u32 temp;
u8 verify;
void CLK_init()
{
CLK_CKDIVR = 0X00; //16 MHZ 系统时钟
}
void IO_output_init()
{
PC_DDR |= MASK_PC_DDR_DDR4;
PC_CR1 |= MASK_PC_CR1_C14;
PC_CR2 &= ~MASK_PC_CR2_C24;
//推挽输出
}
void IO_input_init()
{
PC_DDR &= ~MASK_PC_DDR_DDR4;
PC_CR1 &= ~MASK_PC_CR1_C14;
PC_CR2 &= ~MASK_PC_CR2_C24;
//悬浮输入
}
void THD11_init()
{
u8 i;
temp = 0;
verify = 0;
IO_output_init();
PC_ODR &= ~MASK_PC_ODR_ODR4;
delay_ms_16M(19); //delay 19 ms
PC_ODR |= MASK_PC_ODR_ODR4;
delay_us_16M(40); //delay 21.3 us
IO_input_init();
while(PC_4!=0);
while(1);
}
int main( void )
{
CLK_init();
while(1)
{
THD11_init();
delay_ms_16M(200); //delay 200 ms
}
}
我初始化为什么DHT11 不返回值????哪里有问题吗?
------解决方案--------------------
输入寄存器和输出寄存器是不同的 判断条件不对