|
|
Közzétéve 2014. 11. 25. 22:12:09
|
|
|

[mw_shl_code=c,true]#include<pic.h> // 12M kristályoscillátort használj #include"12864.h" #define unsigned int #define Uchar aláíratlan char __CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF); uchar temp_valueH,hum_valueH,hum_valueL,temp_valueL,ellenőrzés; uint delay_time; Void timer0_init()
{ TMR0=0; Első érték T0CS=0; Válaszd ki az órajel forrást, amely a kristályoszcillátor 1/4-e; T0SE=1; Órajel forrás élválasztó bitek PSA=0; Előosztó allokációs bitek PS0=0; PS1=0; PS2=0; Osztály előtti válogatói részek TMR0IF=0; Az időzítő zászló tiszta, 0 GIE=1; Nyisd meg a globális megszakítást TMR0IE=0; Időzítő 0 engedélyezve TMR0=236; A vers első értéke
} void interrupt timer0()
{ if(TMR0IF) { TMR0IF=0; TMR0=235; delay_time--; }
} Void timer0_delay(uint delay_value)
{ delay_time=delay_value; TMR0IE=1; miközben (delay_time); TMR0IE=0;
} uchar Read_byte()
{ uchar i, temp, hum; for(i=0; i<8; i++) { miközben (! RC1); timer0_delay(2); Késlelés 20us temp=0; if(RC1){temp=1; míg (RC1); } else{temp=0; } hum<<=1; hum|=hőmérséklet; } return (zúgás);
} Void Read_data()
{ uchar ckeck_value; RC1=0; timer0_delay(2500); A buszt legalább 18 MS húzza le RC1=1; timer0_delay(2); A buszt a húzóellenállás húzza fel, és a host késleltetés 20us TRISC1=1; A gazda bemenetre van állítva, hogy megítélje a slave válaszjelet RC1=1; ha(! RC1) { miközben ((! RC1)) // Határozd meg, hogy a slave 80us alacsony válaszú jelet bocsát-e ki vagy sem { NOP(); } while(RC1) // Határozd meg, hogy a slave magas, 80us szintet bocsát-e ki, és ha igen, akkor belép az adatvevő állapotba { 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(); while(1) { Read_data(); } }[/mw_shl_code]
|
Előző:Gondolat és meztelen programozás [sorozatos]Következő:Jóléti juttatások, C nyelvi elnevezési szabályok, nagyon gyakorlati dolgok
|