|
|
Δημοσιεύτηκε στις 25/11/2014 10:12:09 μ.μ.
|
|
|

[mw_shl_code=c,true]#include<pic.h> // Χρησιμοποιήστε κρυσταλλικό ταλαντωτή 12M #include"12864.h" #define uint ανυπόγραφο int #define uchar ανυπόγραφο char __CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF)· uchar temp_valueH,hum_valueH,hum_valueL,temp_valueL,έλεγχος; uint delay_time; άκυρο timer0_init()
{ TMR0=0; Πρώτη τιμή T0CS=0; Επιλέξτε την πηγή ρολογιού, η οποία είναι το 1/4 του ταλαντωτή κρυστάλλου. T0SE=1; Bit επιλογής άκρων πηγής ρολογιού PSA=0; Bit κατανομής προδιαιρέτη ΥΓ0=0; ΥΓ1=0; ΥΓ2=0; Κομμάτια επιλογής πριν από τη διαίρεση TMR0IF=0; Η σημαία του χρονοδιακόπτη είναι σαφής 0 GIE=1; Άνοιγμα της καθολικής διακοπής TMR0IE=0; Ενεργοποιημένος χρονοδιακόπτης 0 TMR0=236; Η πρώτη αξία του ποιήματος
} Void Interrupt Timer0()
{ αν(TMR0IF) { TMR0IF=0; TMR0=235; delay_time--; }
} άκυρο timer0_delay(uint delay_value)
{ delay_time=delay_value; TMR0IE=1; ενώ(delay_time); TMR0IE=0;
} Ουχάρ Read_byte()
{ uchar i,temp,hum; for(i=0; i<8; i++) { ενώ(! RC1)· timer0_delay παράγραφος 2· Καθυστέρηση 20us θερμοκρασία=0; if(RC1){temp=1; ενώ(RC1); } else{temp=0; } βουητό<<=1; hum|=temp; } επιστροφή(βουητό);
} άκυρο Read_data()
{ Ουχάρ ckeck_value; RC1=0; timer0_delay(2500); Το λεωφορείο έχει τραβηχτεί από τουλάχιστον 18 MS RC1=1; timer0_delay παράγραφος 2· Ο δίαυλος τραβιέται προς τα πάνω από την αντίσταση έλξης και η καθυστέρηση του κεντρικού υπολογιστή είναι 20us ΤΡΙΣΚ1=1; Ο κεντρικός υπολογιστής έχει ρυθμιστεί σε είσοδο για να κρίνει το σήμα απόκρισης slave RC1=1; Αν(! RC1) { ενώ((! RC1)) // Προσδιορίστε εάν το slave εκπέμπει σήμα χαμηλής απόκρισης 80us ή όχι { ΝΟΠ(); } while(RC1) // Προσδιορίστε εάν το slave εκπέμπει υψηλό επίπεδο 80us και, εάν ναι, εισέρχεται στην κατάσταση λήψης δεδομένων { ΝΟΠ(); } temp_valueH=Read_byte(); temp_valueL=Read_byte(); hum_valueH=Read_byte(); hum_valueL=Read_byte(); έλεγχος=Read_byte(); ckeck_value=hum_valueL+hum_valueH+temp_valueL+temp_valueH; if(έλεγχος==ckeck_value) { Proce_num(0x84,temp_valueH)· Proce_num(0x94,hum_valueH)· } } ΤΡΙΣΚ1=0; RC1=1;
} κενό κύριο()
{ TRISB=0X00; lcdinit(); timer0_init(); ενώ(1) { Read_data(); } }[/mw_shl_code]
|
Προηγούμενος:Σκέψη και γυμνός προγραμματισμός [σειριακό]Επόμενος:Επιδόματα πρόνοιας, κανόνες ονομασίας στη γλώσσα C, πολύ πρακτικά πράγματα
|