Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

sms alarm

Başlatan necati, 01 Ekim 2007, 20:48:28

necati

#include <16F84A.h>
#use delay(clock=4000000)
#fuses HS,NOWDT
#use rs232(baud=9600,parity=N,xmit=PIN_A0)
#define db 10 //elemszám, kódhossz
#define t 100 //várakozási idõ
int adat=1011101001;
void main() {
int i; //ciklusváltozó
int f;
int bit[db];
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
output_bit(PIN_A2,0); //Clock alaphelyzetbe
output_bit(PIN_A3,0); //-RE alaphelyzetbe
output_bit(PIN_B1,0); //Chip in LED ki
output_bit(PIN_A2,0); //Progress LED ki
output_bit(PIN_A2,0); //Access ok LED ki
output_bit(PIN_A2,0); //Error LED ki
while(1) //végtelen ciklus
{
if(!pin_B7) //chipkártya behelyezve
{
output_bit(PIN_B1,1); //Chip in LED be
output_bit(PIN_A2,1); //
delay_ms(t); //
output_bit(PIN_A2,0); // Bekapcsolási RESET, 0 címre pozicionálás
delay_ms(t); //
output_bit(PIN_A3,1); //
delay_ms(t); //
output_bit(PIN_B2,1); //Progress LED be

for (i=0;i<db;i++) // adatbitek olvasása
{
bit=PIN_A4; //adatbit olvasása
delay_ms(t);
output_bit(PIN_A2,1); //
delay_ms(t); //
output_bit(PIN_A2,0); // órajel, léptetés következõ címre
delay_ms(t); //
} //end for
} //end if
//összehasonlítás
f=1;
for(i=0;i<db;i++)
{
if(bit!=adat)
{
f=0;
i=db;
}
}
if(!f) //nincs egyezés
{
output_bit(PIN_B4,1); //ERROR LED be
do
{}
while (!PIN_B0); //várakozás kártyakivételre
output_bit(PIN_B1,0); //Chip in LED ki
output_bit(PIN_B3,0); //Access ok LED ki
output_bit(PIN_A3,0); //-RE alaphelyzetbe
delay_ms(3000); //várakozás mielõtt újabb kártyát helyeznének be
output_bit(PIN_B2,0); //Progress LED ki
}
if(f) //egyezés esetén
{
puts("onoff"); //utasítás a fõmodulnak
output_bit(PIN_B3,1); //Access ok LED be
do
{}
while (!PIN_B0); //várakozás kártyakivételre
output_bit(PIN_B1,0); //Chip in LED ki
output_bit(PIN_B3,0); //Access ok LED ki
output_bit(PIN_A3,0); //-RE alaphelyzetbe
delay_ms(3000); //várakozás mielõtt újabb kártyát helyeznének be
output_bit(PIN_B2,0); //Progress LED ki
f=0;
} //end if (f)
} //end while
}

//////////////////////////////////////////////////////////////////////////////////
#include <16F628.h>
#include <string.h>
#use delay(clock=20000000)
#fuses HS,NOWDT
#define rovid 1;
#define hosszu 100;
#int_RB
int i; //ciklusváltozó
char adat[20]; //modul beérkezõ adat
char parancs[20]; //modul beérkezõ adat
char betu;
char f1[5];
char f2[5];
char fogadott_telszam[12];
char tarolt_telszam[12];
char smsc[12];
char pdu[70];
int r=0; //be-ki
int db=0;
int hossz=0;
RB_isr() //megszakítás
{
if(r)
{
if(input(PIN_B7)) db=rovid; //ha rövid riasztás kell
if(input(PIN_B6)) db=hosszu;//ha hosszú riasztás kell
}
}
void central() //impulzus kimenet
{
output_bit(pin_b2,1);
delay_ms(100);
output_bit(pin_b2,0);
}
void riasztas_be()
{
output_bit(pin_b1,1);
output_bit(pin_b3,1);
}
void riasztas_ki()
{
output_bit(pin_b1,0);
output_bit(pin_b3,0);
}
void main()
{
strcpy(f1,"onoff");
strcpy(f2,"panic");
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
enable_interrupts(INT_RB);
enable_interrupts(global);
while(1)
{
//sms
#use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1) //rs232 definiálás sms-hez
printf("at+cmgr=1");
for(i=0;i<7;i++) betu=getc(); //bevezetõ karakterek elnyelése
betu=getc();
if (betu=='0') //van olvasatlan üzenet
{
betu=getc();
betu=getc();
betu=getc();
if(betu=!'0') //valóban van üzenet
{
betu=getc();
if(betu!=13) //max 10 karakter hosszu
{
betu=getc();
if(betu!=13) //max 100 karakter hosszu
{
betu=getc(); //enter
}
}
//pdu kezelés
betu=getc(); //smsc hossz meghatározása
hossz=betu*10; //
betu=getc(); //
hossz=hossz+betu;//smsc meghatározás vége
for(i=0;i<hossz+2;i++)
{
smsc=getc();
}
getch();
getch();
betu=getc(); //telefonszám hossz meghatározása
hossz=betu*10; //
betu=getc(); //
hossz=hossz+betu;//telefonszám meghatározás vége
for(i=0;i<hossz;i++) //fogadott szam eltarolasa
{
fogadott_telszam=getc(); //telefonszám eltárolása
}
for(i=0;i<20;i++) getc(); //ugrás következõ mûveletre
//valódi pdu innen
gets(adat); //üzenet beolvasása
//identifikáció kell ide!!!
printf("at+cpbr=1");
for(i=0;i<11;i++) getc();
// identifikacio
printf("at+cpbr=1"); //telefonkönyv olvasása
for(i=0;i<10;i++) getc(); //ugrás telefonszámhoz
i=0;
while((betu=getch())!='"') // olvasás " jelig
{
tarolt_telszam=betu;
i++;
}
printf("at+csca?"); //smsc meghatározása
for(i=0;i<9;i++) getc(); //ugrás telefonszámhoz
i=0;
while((betu=getch())!='"') // olvasás " jelig
{
smsc=betu;
i++;
}
for(i=0;i<strlen(smsc);i++) //smsc kódolása
{
betu=smsc;
smsc=smsc[i+1];
smsc[i+1]=betu;
i++;
}
if(strcmp(tarolt_telszam,fogadott_telszam)) //authentikáció
{
strcpy(parancs,"D26470AAA53EBFCB24"); //RIASZTO_KI PDU-ban
if(strcmp(adat,parancs)) //f1 parancs (riasztó ki)
{
r=0;
central();
db=0;
}
strcpy(parancs,"D26470AAA53EBFC222"); //RIASZTO_BE PDU-ban
if(strcmp(adat,parancs)) //f2 parancs (riasztó be)
{
r=1;
central();
}
strcpy(parancs,"536A905A9D02"); //STATUS PDU-ban
if(strcmp(adat,parancs)) //f3 parancs (status)
{
if(r) if(db)
{
strcpy(parancs,"D26470AAA506A7"); //üzenet másolása változóba (RIASZTAS)
printf("at+cmgs=");
printf("%s",(strlen(parancs)+strlen(fogadott_telszam)+16)/2);
delay_ms(50); //várakozás, hogy a > jel biztosan megérkezzen
printf("%s",strlen(smsc)/2+1); //smsc hossz küldése
printf("91"); //nemzetközi formátum
printf("%s",smsc); //üzenetközpont elküldése
printf("11000B91"); //inicializáló beállítások
printf("%s",fogadott_telszam); //fogadott számra küldi vissza az sms-t
printf("%s",parancs); //parancs küldése
printf("%c",26); //CTRZ-Z
}
if(r) if(!db)
{
strcpy(parancs,"D26470AAA53EBFC222"); //üzenet másolása változóba (RIASZTO_BE)
printf("at+cmgs=");
printf("%s",(strlen(parancs)+strlen(fogadott_telszam)+16)/2);
delay_ms(50); //várakozás, hogy a > jel biztosan megérkezzen
printf("%s",strlen(smsc)/2+1); //smsc hossz küldése
printf("91"); //nemzetközi formátum
printf("%s",smsc); //üzenetközpont elküldése
printf("11000B91"); //inicializáló beállítások
printf("%s",fogadott_telszam); //fogadott számra küldi vissza az sms-t
printf("%s",parancs); //parancs küldése
printf("%c",26); //CTRZ-Z
}
if(!r)
{
strcpy(parancs,"D26470AAA53EBFCB24"); //üzenet másolása változóba (RIASZTO_KI)
printf("at+cmgs=");
printf("%s",(strlen(parancs)+strlen(fogadott_telszam)+16)/2);
delay_ms(50); //várakozás, hogy a > jel biztosan megérkezzen
printf("%s",strlen(smsc)/2+1); //smsc hossz küldése
printf("91"); //nemzetközi formátum
printf("%s",smsc); //üzenetközpont elküldése
printf("11000B91"); //inicializáló beállítások
printf("%s",fogadott_telszam); //fogadott számra küldi vissza az sms-t
printf("%s",parancs); //parancs küldése
printf("%c",26); //CTRZ-Z
}
}
strcpy(parancs,"D0A0333904"); //PANIC PDU-ban
if(strcmp(adat,parancs)) //f1 parancs (panic)
{
if(r)
{
central(); //impulzus adás (ajtók bezárása stb)
r=1; //riasztó élesít
}
db=hosszu; //riasztás aktivizálás
}
}
}
printf("at+cmgd=1");
}
//modulok lekezelése
#use rs232(baud=9600,parity=N,rcv=PIN_A2) //rs232 definiálás modulokhoz
for(i=0;i<100;i++) //fõleg modulokat figyelje
{
gets(adat);
if(strcmp(adat,f1)) //be-ki jel van
{
if(r)
{
r=0; //be volt kapcsolva kikapcsol
central();
db=0;
}
else
{
r=1; //ki volt kapcsolva kikapcsol
central();
}
}
if(strcmp(adat,f2)) //panic jel van
{
r=1;
db=hosszu;
}
}
//riasztás lekezelése
if(r)
{
db--;
if(db) riasztas_be();
else if(!input(PIN_B7)) if(!input(PIN_B6)) riasztas_ki(); //ha még mindig fennáll a riasztási jel nem kapcsol ki
}
}//end while
} //end main

eksikleri duzeltebilirmisiniz
[email]entegreterbiyecisi@yahoo.com[/email]

zafzaf82

nasıl yani  8O  o kadar kodu kim okuyacak. kopyala yapıştır yap sonra eksikleri düzeltin de.
Mikroişlemci bi araçtır, amaç değil.....