|
|
Paskelbta 2014-11-25 22:12:09
|
|
|

[mw_shl_code=c,true]#include<pic.h> // Naudokite 12M kristalinį osciliatorių #include"12864.h" #define uint unsigned int #define uchar nepasirašytas 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; Pirmoji vertė T0CS=0; Pasirinkite laikrodžio šaltinį, kuris yra 1/4 kristalinio osciliatoriaus; T0SE=1; Laikrodžio šaltinio krašto pasirinkimo bitai PSA = 0; Išankstinio skirstytuvo paskirstymo bitai PS0=0; PS1=0; PS2=0; Išankstinio padalijimo atrankos antgaliai TMR0IF=0; Laikmačio vėliavėlė aiški 0 GIE = 1; Atidarykite visuotinį pertraukimą TMR0IE = 0; Laikmatis 0 įjungtas TMR0=236; Pirmoji eilėraščio vertė
} Void Interrupt Timer0()
{ if(TMR0IF) { TMR0IF=0; TMR0=235; delay_time--; }
} void timer0_delay(uint delay_value)
{ delay_time=delay_value; TMR0IE = 1; while (delay_time); TMR0IE = 0;
} uchar Read_byte()
{ uchar i,temp,hum; for(i=0; I<8; i++) { Nors (! RC1); timer0_delay straipsnio 2 dalis; Vėlavimas 20us temp=0; if(RC1){temp=1; while (RC1); } else{temp=0; } hum<<=1; hum|=temp; } grįžimas (dūzgimas);
} negaliojantis Read_data()
{ uchar ckeck_value; RC1 = 0; timer0_delay(2500); Autobusas traukiamas mažiausiai 18 MS RC1 = 1; timer0_delay straipsnio 2 dalis; Autobusas traukiamas iki traukimo rezistorius ir šeimininko vėlavimas yra 20us TRISC1=1; Pagrindinis kompiuteris nustatytas įvesties, kad būtų galima įvertinti vergų atsako signalą RC1 = 1; jei(! RC1) { Nors ((! RC1)) // Nustatykite, ar vergas skleidžia 80us mažo atsako signalą, ar ne { NOP (); } while (RC1) // Nustatykite, ar vergas skleidžia aukštą 80us lygį, ir jei taip, jis patenka į duomenų priėmimo būseną { 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 (); nors (1) { Read_data(); } }[/mw_shl_code]
|
Ankstesnis:Mintis ir nuogas programavimas [Serializuota]Kitą:Socialinės išmokos, C kalbos pavadinimų taisyklės, labai praktiški dalykai
|