-
51串口打印不出来,12M晶振!!哪里出问题了!!求看!
晶振12M,波特率设置的2400,打印就不出来,更别提别的数据了。 #include
#include #include sbit Temp_data = P3^6; void DHT11_start(); unsigned char DHT11_rec_byte(); void DHT11_receive(); void DHT11_delay_us(unsigned char n); void DHT11_delay_ms(unsigned int z); void InitUART(void); unsigned int rec_dat[4]; void main() { InitUART(); P1 = 0Xf0; EA = 1; while(1) { DHT11_delay_ms(150); DHT11_receive(); printf("Humi:%d.%d\n",rec_dat[0],rec_dat[1]); printf("Temp:%d.%d C\n",rec_dat[2],rec_dat[3]); } } void DHT11_start() { Temp_data =1; DHT11_delay_us(2); Temp_data =0; DHT11_delay_ms(20); Temp_data =1; DHT11_delay_us(13); } unsigned char DHT11_rec_byte() { unsigned char i,dat; for(i=0;i<8;i++) { while(!Temp_data); DHT11_delay_us(8); dat<<=1; if(Temp_data ==1) { dat+=1; } while(Temp_data); } return dat; } void DHT11_receive() { unsigned int R_H,R_L,T_H,T_L; unsigned char RH,RL,TH,TL,revise; DHT11_start(); Temp_data =1; if(Temp_data == 0) { while(Temp_data == 0); DHT11_delay_us(40); R_H=DHT11_rec_byte(); R_L=DHT11_rec_byte(); T_H=DHT11_rec_byte(); T_L=DHT11_rec_byte(); revise=DHT11_rec_byte(); DHT11_delay_us(25); if((R_H+R_L+T_H+T_L)==revise) { RH=R_H; RL=R_L; TH=T_H; TL=T_L; } rec_dat[0]=RH; rec_dat[1]=RL; rec_dat[2]=TH; rec_dat[3]=TL; } } void DHT11_delay_us(unsigned char n) { while(--n); } void DHT11_delay_ms(unsigned int z) { unsigned int i,j; for(i=z;i>0;i--) for(j=110;j>0;j--); } void InitUART(void) { SCON=0x50; REN =1; TMOD = 0x20; TH1 = 0xE6; // ??????V1.3???2400??????? TL1 = TH1; // ??????????? PCON = 0x80; // ???????? T1 =1; TR1 =1; } 1018浏览量 5回复量 关注量