求大神幫忙看看為什么用串口調試助手接收不到數據
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit adin=P2^3;
sbit dht_dat=P0^5;
uint num;
uchar dht_t1=0,dht_t2=0;
uchar dht_d1=0,dht_d2=0;
uchar dht_chk=0;
uchar dht_num=0;
float cin,cout;
uint ca,a,b;
void init()
{
TMOD=0x02;
TH0=6;
TL0=6;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;
ET0=1;
TR0=1;
}
void dht_delay_10us()
{
uchar i=0;
for(i=0;i<1;i++);
}
void dht_delay_10ms(uchar t)
{
uchar i=0,j=0,k=0;
for(i=0;i<t;i++)
{
for(j=0;j<40;j++)for(k=0;k<75;k++);
}
}
uchar dht_readat()
{
uchar i=0,dat=0;
for(i=0;i<8;i++)
{
dht_num=2;
while((dht_dat==0)&&(dht_num++));
dht_delay_10us();dht_delay_10us();dht_delay_10us();dht_delay_10us();
dat=dat<<1;
if(dht_dat==1)
{
dht_num=2;
dat=dat|0x01;
while((dht_dat==1)&&(dht_num++));
}
}
return dat;
}
void dht_getdat()
{
uchar i=0;
dht_dat=0;
dht_delay_10ms(4);
dht_dat=1;
dht_delay_10us();dht_delay_10us();dht_delay_10us();dht_delay_10us();
dht_dat=1;
if(dht_dat==0)
{
dht_num=2;while((dht_dat==0)&&(dht_num++));
dht_num=2;while((dht_dat==1)&&(dht_num++));
dht_d1=dht_readat();
dht_d2=dht_readat();
dht_t1=dht_readat();
dht_t2=dht_readat();
dht_chk=dht_readat();
}
dht_dat=1;
dht_delay_10ms(10);
}
void dht_init()
{
dht_delay_10ms(100);
dht_dat=1;
}
void T0_TIME() interrupt 1
{
num++;
}
void main()
{
uint a,b;
init();
dht_init();
a=0xaa;
b=0x01;
num=0;
while(1)
{
if(num==9999)
{
num=0;
dht_getdat();
cin=adin;
cout=cin*1000/5.0;
ca=(int)cout;
ES=0;
TI=1;
printf("%x",a);
while(!TI);
TI=0;
printf("%x",b);
while(!TI);
TI=0;
printf("%x",dht_d1);
while(!TI);
TI=0;
printf("%x",dht_d2);
while(!TI);
TI=0;
printf("%x",dht_t1);
while(!TI);
TI=0;
printf("%x",dht_t2);
while(!TI);
TI=0;
printf("%x",cout);
while(!TI);
TI=0;
ES=1;
}
}
}
|