#include <lcd.c>
#include <18F4550.h>
#include <kbd.c>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#define LED_R PIN_C5
#define sonnerie PIN_C4
char cot[]={"\X22"};
char code[]={'1','2','3','4'};
int8 ft=1,cnt=0,flag,k,j,s;
int1 mouv=1;
int32 ms1,ms2;
/******************************************************************************/
lcd_init();
#int_ext
void int_rb0()
{
mouv=1;
}
#int_timer2
void isr_timer2(void) {
ms2++;
}
#int_timer1
void isr_timer1(void) {
ms1++;
}
//*********************************************************************************
/************Fonction that sends sms **********/
/******************************************************************************/
void send_sms() {
ft=1;
if(ft==1&&cnt==0)
{
output_high(LED_R);
output_high(alarm);
delay_ms(2000);
printf("at+cmgf=1\r\n"); //mode texte
delay_ms(1000);
printf("AT+CMGS=%s92334936%s\r\n",cot,cot); //selectionner le destinataire
delay_ms(1000);
printf("someone entered your house\X1A"); //ecrire les infos dans le msg
delay_ms(2000);
cnt=1;
}
}
//###############################################################################
#
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
ext_int_edge(H_TO_L); // init interrupts
enable_interrupts(INT_EXT);
setup_timer_2(T2_DIV_BY_4,78,16);
enable_interrupts(INT_TIMER2);
enable_interrupts(GLOBAL);
while(true) {
if (!input(pin_A0))
{send_sms();flag=1;}
if (!input(pin_A1))
{
k=1;ms2=0;flag=0;
lcd_init();
lcd_putc("/f");lcd_gotoxy(1,1);lcd_putc("donner le code");
for (j=0,j<4,j++)
{
s=0;
while ((s==0)&& (ms2<10000))
{
s=kbd_getc();
}
if (code[j+1]!=s)
k=0;
lcd_gotoxy(j+1,2);
lcd_putc(s);
}
if ((ms2>10000)||(k=0)) {send_sms();flag=1;}
lcd_putc("/f");
lcd_gotoxy(1,1);
if (k=1) {lcd_putc("code correct")};
else {lcd_putc("code incorrect");}
}
if (flag=1)
{lcd_putc("/f");lcd_gotoxy(1,1);lcd_putc("donner le code");
k=1;
for (j=0,j<4,j++)
{
do { s=kbd_getc();}
while (s==0) ;
if (code[j+1]!=s) {k=0};
lcd_gotoxy(j+1,2);
lcd_putc(s);}
lcd_putc("/f");
lcd_gotoxy(1,1);
if (k=1) {lcd_putc("code correct");
output_low(led_R);
output_low(alarm);}
else
{lcd_putc("code incorrect")}
}}}