|
|
Veröffentlicht am 25.11.2014 22:12:09
|
|
|

[mw_shl_code=c,true]#include<pic.h> // Verwenden Sie einen 12M-Kristalloszillator #include"12864.h" #define unsignierte Int #define Uchar unsignierter Char __CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF); Uchar temp_valueH, hum_valueH, hum_valueL, temp_valueL, check; Uint delay_time; Void timer0_init()
{ TMR0=0; Erster Wert T0CS=0; Wählen Sie die Taktquelle, die zu einem Viertel des Kristalloszillators ist; T0SE=1; Taktquellen-Kantenauswahlbits PSA=0; Vorteiler-Allokationsbits PS0=0; PS1=0; PS2=0; Selektionsbits vor der Division TMR0IF=0; Die Timer-Flagge ist gelöscht 0 GIE=1; Öffne die globale Unterbrechung TMR0IE=0; Timer 0 aktiviert TMR0=236; Der erste Wert des Gedichts
} Void Interrupt Timer0()
{ if(TMR0IF) { TMR0IF=0; TMR0=235; delay_time--; }
} Void timer0_delay(UINT delay_value)
{ delay_time=delay_value; TMR0IE=1; während (delay_time); TMR0IE=0;
} Uchar Read_byte()
{ Uchar I, Temp, Hum; for(i=0; i<8; i++) { während(! RC1); timer0_delay(2); Verzögerung 20us Temperatur=0; if(RC1){temp=1; während (RC1); } else{temp=0; } hum<<=1; hum|=Temperatur; } return (summen);
} Void Read_data()
{ Uchar ckeck_value; RC1=0; timer0_delay(2500); Der Bus wird um mindestens 18 MS nach unten gezogen RC1=1; timer0_delay(2); Der Bus wird vom Pull-up-Widerstand nach oben gezogen und die Host-Verzögerung beträgt 20 US. TRISC1=1; Der Host ist auf Eingang eingestellt, um das Slave-Antwortsignal zu beurteilen RC1=1; wenn(! RC1) { während((! RC1)) // Bestimmen Sie, ob der Slave ein 80us-Low-Response-Signal aussendet oder nicht { NOP(); } while(RC1) // Bestimmen Sie, ob der Slave einen hohen Wert von 80 us aussendet, und falls ja, tritt er in den Datenempfangszustand ein { NOP(); } temp_valueH=Read_byte(); temp_valueL=Read_byte(); hum_valueH=Read_byte(); hum_valueL=Read_byte(); check=Read_byte(); ckeck_value=hum_valueL+hum_valueH+temp_valueL+temp_valueH; wenn(check==ckeck_value) { Proce_num(0x84,temp_valueH); Proce_num(0x94,hum_valueH); } } TRISC1=0; RC1=1;
} void main()
{ TRISB=0X00; lcdinit(); timer0_init(); während(1) { Read_data(); } }[/mw_shl_code]
|
Vorhergehend:Gedanken und nackte Programmierung [Serialisiert]Nächster:Sozialleistungen, C-Sprach-Benennungsregeln, sehr praktische Dinge
|