T
teongkia
Guest
Ahoj mám tento kód.Snažil som sa to v mikrokontroléru, ale nefungoval.V súčasnej dobe som s autom zabezpečenia projektu.Čo chcem, je, keď je niektorý z čidla úhrade (vysoké napätie vo vstupných pinov), bude mať vysoké napätie na výstupe sirény pin a volajte vopred vlastníka číslo.Môže niekto skontrolovať to a dajte mi vedieť, čo je problém? Vďaka.
Kód:
/ / Preprocesor
# Include <16F877.H>
Poistky # HS, NOWDT, NOLVP
# USE DELAY (hodiny = 12000000)
# USE RS232 (baud = 9600, parity = N, xmit = PIN_C6, HPM = PIN_C7, bitov = 8)/ / Definovanie pin
# Define SIREN PIN_B5
# Define CL1 PIN_B4
# Define CL2 PIN_B3
# Define ULTRA PIN_A0
# Define TOUCH PIN_A1
# Define LIGHT PIN_A2
# Define DOOR PIN_A3
# Define REMOTE PIN_A4/ / Globálne deklarácie
int A, B, C, D, RC, EN;
int RC1 [2];
char SENSOR1, SENSOR2, SENSOR3, SENSOR4, SENSOR5, TEMP;
char P [4];
char s [51];/ / Zvuk sirény
void SIREN_ON ()
(
OUTPUT_HIGH (siréna);
DISABLE_INTERRUPTS (INT_RTCC);
)
/ / Uvoľniť dvere
void Unlock ()
(
OUTPUT_HIGH (CL1);
OUTPUT_LOW (CL2);
)
/ / Lock dvere
void LOCK ()
(
OUTPUT_LOW (CL1);
OUTPUT_HIGH (CL2);
)/ / Ultrazvukový senzor spúšťa
void SEND_CALL1 ()
(
Printf ( "ATD0123456789; \ n \ r");
)
/ / Touch senzor spúšťa
void SEND_CALL2 ()
(
Printf ( "ATD0123456789; \ n \ r");
)
/ / Svetelný senzor spúšťa
void SEND_CALL3 ()
(
Printf ( "ATD0123456789; \ n \ r");
)
/ / Dverný senzor spúšťa
void SEND_cALL4 ()
(
Printf ( "ATD0123456789; \ n \ r");
)
/ / Centrální zámek spustená
void SEND_CALL5 ()
(
Printf ( "ATD0123456789; \ n \ r");
)
# INT_RTCC
T0 ()
(
SENSOR1 = INPUT (ULTRA);
SENSOR2 = INPUT (TOUCH);
SENSOR3 = INPUT (LIGHT);
SENSOR4 = INPUT (dvere);
SENSOR5 = INPUT (CL1);
if (SENSOR1)
(
SEND_CALL1 ();
SIREN_ON ();
)
else if (SENSOR2)
(
SEND_CALL2 ();
SIREN_ON ();
)
else if (SENSOR3)
(
SEND_CALL3 ();
SIREN_ON ();
)
else if (SENSOR4)
(
SEND_CALL4 ();
SIREN_ON ();
)
else if (SENSOR5)
(
SEND_CALL5 ();
SIREN_ON ();
)
)# INT_RDA
SERIAL ()
(
/ / Nepovinné
if (kbhit ())
(
TEMP = getc ();
if (<50)
(
S [] = temp;
;
)
iné
(
= 0;
S [] = temp;
;
)
)
DELAY_MS (100);
návrat, S;
)/ / Hlavné funkcie
void main ()
(SET_RTCC (0);
SETUP_COUNTERS (RTCC_INTERNAL, RTCC_DIV_64);
EXT_INT_EDGE (0, H_TO_L);
ENABLE_INTERRUPTS (INT_EXT);
ENABLE_INTERRUPTS (INT_RDA);
ENABLE_INTERRUPTS (GLOBAL);
ENABLE_INTERRUPTS (INT_RTCC);
SET_TRIS_A (0x3F);
SET_TRIS_B (0x01);
/ / SET_TRIS_C (0x0F);
SET_TRIS_D (0x00);DELAY_MS (5000);Printf ( "\ n \ Ratz \ n \ r");
DELAY_MS (500);
Printf ( "\ n \ RAT \ n \ r");
DELAY_MS (500);
Printf ( "\ n \ RAT CNMI = 2,3,0,0,0 \ n \ r");
DELAY_MS (500);SENSOR1 == 0;
SENSOR2 == 0;
SENSOR3 == 0;
SENSOR4 == 0;
SENSOR5 == 0;
= 0;
B = 0;
C = 0;
D = 0;
EN = 0;
RC = 0;
UNLOCK ()
Kód:
/ / Preprocesor
# Include <16F877.H>
Poistky # HS, NOWDT, NOLVP
# USE DELAY (hodiny = 12000000)
# USE RS232 (baud = 9600, parity = N, xmit = PIN_C6, HPM = PIN_C7, bitov = 8)/ / Definovanie pin
# Define SIREN PIN_B5
# Define CL1 PIN_B4
# Define CL2 PIN_B3
# Define ULTRA PIN_A0
# Define TOUCH PIN_A1
# Define LIGHT PIN_A2
# Define DOOR PIN_A3
# Define REMOTE PIN_A4/ / Globálne deklarácie
int A, B, C, D, RC, EN;
int RC1 [2];
char SENSOR1, SENSOR2, SENSOR3, SENSOR4, SENSOR5, TEMP;
char P [4];
char s [51];/ / Zvuk sirény
void SIREN_ON ()
(
OUTPUT_HIGH (siréna);
DISABLE_INTERRUPTS (INT_RTCC);
)
/ / Uvoľniť dvere
void Unlock ()
(
OUTPUT_HIGH (CL1);
OUTPUT_LOW (CL2);
)
/ / Lock dvere
void LOCK ()
(
OUTPUT_LOW (CL1);
OUTPUT_HIGH (CL2);
)/ / Ultrazvukový senzor spúšťa
void SEND_CALL1 ()
(
Printf ( "ATD0123456789; \ n \ r");
)
/ / Touch senzor spúšťa
void SEND_CALL2 ()
(
Printf ( "ATD0123456789; \ n \ r");
)
/ / Svetelný senzor spúšťa
void SEND_CALL3 ()
(
Printf ( "ATD0123456789; \ n \ r");
)
/ / Dverný senzor spúšťa
void SEND_cALL4 ()
(
Printf ( "ATD0123456789; \ n \ r");
)
/ / Centrální zámek spustená
void SEND_CALL5 ()
(
Printf ( "ATD0123456789; \ n \ r");
)
# INT_RTCC
T0 ()
(
SENSOR1 = INPUT (ULTRA);
SENSOR2 = INPUT (TOUCH);
SENSOR3 = INPUT (LIGHT);
SENSOR4 = INPUT (dvere);
SENSOR5 = INPUT (CL1);
if (SENSOR1)
(
SEND_CALL1 ();
SIREN_ON ();
)
else if (SENSOR2)
(
SEND_CALL2 ();
SIREN_ON ();
)
else if (SENSOR3)
(
SEND_CALL3 ();
SIREN_ON ();
)
else if (SENSOR4)
(
SEND_CALL4 ();
SIREN_ON ();
)
else if (SENSOR5)
(
SEND_CALL5 ();
SIREN_ON ();
)
)# INT_RDA
SERIAL ()
(
/ / Nepovinné
if (kbhit ())
(
TEMP = getc ();
if (<50)
(
S [] = temp;
;
)
iné
(
= 0;
S [] = temp;
;
)
)
DELAY_MS (100);
návrat, S;
)/ / Hlavné funkcie
void main ()
(SET_RTCC (0);
SETUP_COUNTERS (RTCC_INTERNAL, RTCC_DIV_64);
EXT_INT_EDGE (0, H_TO_L);
ENABLE_INTERRUPTS (INT_EXT);
ENABLE_INTERRUPTS (INT_RDA);
ENABLE_INTERRUPTS (GLOBAL);
ENABLE_INTERRUPTS (INT_RTCC);
SET_TRIS_A (0x3F);
SET_TRIS_B (0x01);
/ / SET_TRIS_C (0x0F);
SET_TRIS_D (0x00);DELAY_MS (5000);Printf ( "\ n \ Ratz \ n \ r");
DELAY_MS (500);
Printf ( "\ n \ RAT \ n \ r");
DELAY_MS (500);
Printf ( "\ n \ RAT CNMI = 2,3,0,0,0 \ n \ r");
DELAY_MS (500);SENSOR1 == 0;
SENSOR2 == 0;
SENSOR3 == 0;
SENSOR4 == 0;
SENSOR5 == 0;
= 0;
B = 0;
C = 0;
D = 0;
EN = 0;
RC = 0;
UNLOCK ()