|
|
Publisert på 25.11.2014 22:12:09
|
|
|

[mw_shl_code=c,true]#include<pic.h> // Bruk 12M krystalloscillator #include"12864.h" #define usignert int #define uchar usignert karakter __CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF); Uchar temp_valueH, hum_valueH, hum_valueL, temp_valueL, sjekk; uint delay_time; tomrom timer0_init()
{ TMR0=0; Første verdi T0CS=0; Velg klokkekilden, som er 1/4 av krystalloscillatoren; T0SE=1; Klokkekilde-kantutvelgelsesbiter PSA=0; Predidiver-allokeringsbiter PS0=0; PS1=0; PS2=0; Pre-divisjonsutvelgelsesbiter TMR0IF=0; Timerflagget er clear 0 GIE=1; Åpne den globale avbrytelsen TMR0IE=0; Timer 0 aktivert TMR0=236; Diktets første verdi
} void interrupt timer0()
{ hvis(TMR0IF) { TMR0IF=0; TMR0=235; delay_time--; }
} Void timer0_delay(uint delay_value)
{ delay_time=delay_value; TMR0IE=1; mens (delay_time); TMR0IE=0;
} Uchar Read_byte()
{ Uchar I, Temp, Hum; for(i=0; i<8; i++) { Mens(! RC1); timer0_delay(2); Forsinkelse 20us temp=0; if(RC1){temp=1; mens (RC1); } else{temp=0; } hum<<=1; hum|=temp; } return(hum);
} tomrom Read_data()
{ Uchar ckeck_value; RC1=0; timer0_delay(2500); Bussen er trukket ned med minst 18 MS RC1=1; timer0_delay(2); Bussen trekkes opp av pull-up-motstanden, og vertsforsinkelsen er 20 us. TRISC1=1; Verten settes til inngang for å vurdere slaveresponssignalet RC1=1; hvis(! RC1) { mens ((! RC1)) // Bestem om slaven sender ut et 80 US lavresponssignal eller ikke { NOP(); } while(RC1) // Bestem om slaven sender ut et høyt nivå på 80u, og hvis ja, går den inn i datamottakstilstanden { NOP(); } temp_valueH=Read_byte(); temp_valueL=Read_byte(); hum_valueH=Read_byte(); hum_valueL=Read_byte(); sjekk=Read_byte(); ckeck_value=hum_valueL+hum_valueH+temp_valueL+temp_valueH; hvis(sjekk==ckeck_value) { Proce_num(0x84,temp_valueH); Proce_num(0x94,hum_valueH); } } TRISC1=0; RC1=1;
} void main()
{ TRISB=0X00; lcdinit(); timer0_init(); mens(1) { Read_data(); } }[/mw_shl_code]
|
Foregående:Tanke og naken programmering [Serialisert]Neste:Velferdsytelser, regler for C-språklig navngivning, veldig praktiske ting
|