/****************************************************************************************************************
*************************
*Author:JYW
*Time:2019_04_13
*Describe:LetAllLinesOfCodeSpeak
*****************************************************/
/*********************************************************
Describe:代码练习,勤能生巧
*********/
void COM(void)
{
unsigned char i;
for(i=0;i<8;i++)
{
ucharFlAG = 2;
while((!DATA_PIN)&&ucharFLAG++);
Delay_10us();
Delay_10us();
Delay_10us();
uchartemp=0;
if(DATA_PIN) uchartemp = 1;
ucharFLAG=2;
while((DATA_PIN)&&ucharFLAG++);
if(1 == ucharFLAG) break;
ucharcondata <<=1;
//首先写入的是高位
ucharcomdata |=uchartemp;
}
}
void DHT11(void)
{
DATA_PIN = 0;
Delay_ms(19);
DATA_PIN = 1;
P0DIR &=~0x80;
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
if(!DATA_PIN)
{
ucharFLAG=2;
while((!DATA_PIN)&&ucharFLAG++);
ucharFLAG=2;
while((DATA_PIN)&&ucharFLAG++);
COM();
ucharRH_data_H_temp = ucharcomdata;
COM();
ucharRH_data_L_temp = ucharcomdata;
COM();
ucharT_data_H_temp = ucharcomdata;
COM();
ucharT_data_L_temp = ucharcomdata;
COM();
ucharcheckdata_temp = ucharcomdata;
P0DIR |= 0x80; //IO口需要重新配置
DATA_PIN = 1;
uchartemp =(ucharT_data_H_temp+ucharT_data_L_temp+ucharRH_data_H_temp+ucharRH_data_L_temp);
if(uchartemp==ucharcheckdata_temp)
{
ucharRH_data_H=ucharRH_data_H_temp;
ucharRH_data_L=ucharRH_data_L_temp;
ucharT_data_H=ucharT_data_H_temp;
ucharT_data_L=ucharT_data_L_temp;
ucharcheckdata=ucharcheckdata_temp;
}
wendu_shi=ucharT_data_H/10;
wendu_ge=ucharT_data_H%10;
shidu_shi=ucharRH_data_H/10;
shidu_ge=ucharRH_data_H%10;
}
else //没用成功读取,返回0
{
wendu_shi=0;
wendu_ge=0;
shidu_shi=0;
shidu_ge=0;
}
P0DIR |= 0x80; //IO口需要重新配置
}