|
|
Pubblicato su 25/11/2014 22:12:09
|
|
|

[mw_shl_code=c,true]#include<pic.h> // Usa un oscillatore a cristallo da 12M #include"12864.h" #define uint unsigned int #define uchar personaggio senza firma __CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF); Uchar temp_valueH, hum_valueH, hum_valueL, temp_valueL, controllo; uint delay_time; void timer0_init()
{ TMR0=0; Primo valore T0CS=0; Seleziona la sorgente di clock, che corrisponde a 1/4 dell'oscillatore di cristallo; T0SE=1; Bit di selezione dei bordi della sorgente di clock PSA=0; Bit di allocazione del predivisore PS0=0; PS1=0; PS2=0; Bit di selezione pre-divisione TMR0IF=0; Il segnale del timer è libero 0 GIE=1; Apri l'interruzione globale TMR0IE=0; Timer 0 abilitato TMR0=236; Il primo valore della poesia
} Time di interruzione void Timer0()
{ se(TMR0IF) { TMR0IF=0; TMR0=235; delay_time--; }
} Void timer0_delay(uint delay_value)
{ delay_time=delay_value; TMR0IE=1; mentre(delay_time); TMR0IE=0;
} Uchar Read_byte()
{ uchar i, temp, hum; per (i=0; i<8; i++) { mentre(! RC1); timer0_delay(2); Delay 20us temp=0; if(RC1){temp=1; while(RC1); } else{temp=0; } ronzio<<=1; hum|=temp; } ritorno (hum);
} void Read_data()
{ Uchar ckeck_value; RC1=0; timer0_delay(2500); L'autobus viene trainato giù da almeno 18 MS RC1=1; timer0_delay(2); Il bus viene tirato verso l'alto dalla resistenza di pull-up e il ritardo dell'host è di 20us TRISC1=1; L'host è impostato per l'input per giudicare il segnale di risposta dello slave RC1=1; se(! RC1) { mentre((! RC1)) // Determina se lo schiavo emette un segnale a bassa risposta di 80us o meno { NOP(); } while(RC1) // Determinare se lo schiavo emette un livello elevato di 80us e, in tal caso, entra nello stato di ricezione dei dati { 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; if(check==ckeck_value) { Proce_num(0x84,temp_valueH); Proce_num(0x94,hum_valueH); } } TRISC1=0; RC1=1;
} void main()
{ TRISB=0X00; lcdinit(); timer0_init(); mentre(1) { Read_data(); } }[/mw_shl_code]
|
Precedente:Pensiero e programmazione nuda [Serializzato]Prossimo:Sussidi sociali, regole di denominazione in lingua C, cose molto pratiche
|