bonjour tout le monde. je veux réaliser un systeme d'alarme, qui contient 3 capteurs PIR, choc et détecteur des portes et il gère le verrouillage centralise et une siréne et un module GSM. tout sa sera contrôle par un PIC 16F877A qui a une horloge (Quartz) de 4MHz.
pour la partie hard tout marche a merveille(chaque partie séparément) , mais mon plus grand probleme c'est la programmation de PIC. quand je le compile y'a aucune erreur quand je le transfert sur mon PIC rien ne marche.
SI quelqu'un peut m'aide je lui sera très très très reconnaissant.
je vous donne le programme.
je crois que j'ai oublie quelque chose au niveau des registres de réglage et de configuration.Code://déclaration des variables int detection ; int raf ; //assignation #define recepteur portb.f0 #define buzz re1_bit #define verrou ra3_bit #define pir rb4_bit #define choc rb1_bit #define dtp rb2_bit void main(){ option_reg=0x80 ; intcon = 0x10 ; pie1=0x0 ; // aucun préphirique n'est autorise a faire une interuption pie2=0x0 ; // adcon1=0x06; //tout les pin sont en I/O numerique trisb=0xFF; trisa=0x0; trisc=0x80; trise=0x0; UART1_Init(9600); delay_ms(100); detection=0; verrou=0; recepteur=1; while(1) start : { if(recepteur==0) //utilisation de la télécommande { if(verrou==0) //Portes verrouillées?? { if(dtp==1) // portes fermées?? { verrou=1; intcon=0x90; detection =1 ; } else //portes pas fermées { buzz=1; delay_ms(2000); buzz=0; } goto start; } else if(buzz==0 && verrou==1) // déverrouiller les portes { verrou=0; intcon=0x10; detection=0; // activé la détection } else if(buzz==1 && verrou==1) // arreter la siréne { buzz=0; } } detec : // routine de détection while(detection==1) { if(pir==1 || dtp==0) {buzz=1; UART1_write_text("AT"); // Envoi de la commande AT UART1_write(13); // Code ASCII equivalent pour ENTRE UART1_write(10); // Code ASCII equivalent pour (CTRL+H) delay_ms(1000); UART1_write_text("AT+CSMS"); // Envoi de la commande "AT+CSMS" pour la selection de service de messagerie UART1_write(13); UART1_write(10); delay_ms(1000); UART1_write_text("AT+CMGF=1"); // Envoi de la commande "AT+CMGF=1" pour la selection du format du SMS le 1 pour le mode TEXT UART1_write(13); UART1_write(10); delay_ms(1000); UART1_write_text("AT+CMGS="); // Commande pour l'envoi d'un SMS,on indiquant le numéro du destinataire UART1_write(34); // code ASCII de (") UART1_write_text("0633825379"); UART1_write(34); // code ASCII de (") UART1_write(13); UART1_write(10); delay_ms(1000); UART1_write_text("alarme"); // le contenu de notre message UART1_write(13); UART1_write(10); delay_ms(1000); } if(choc==1) {raf++; if(raf==4) {buzz=1; UART1_write_text("AT"); // Envoi de la commande AT UART1_write(13); // Code ASCII equivalent pour ENTRE UART1_write(10); // Code ASCII equivalent pour (CTRL+H) delay_ms(1000); UART1_write_text("AT+CSMS"); // Envoi de la commande "AT+CSMS" pour la selection de service de messagerie UART1_write(13); UART1_write(10); delay_ms(1000); UART1_write_text("AT+CMGF=1"); // Envoi de la commande "AT+CMGF=1" pour la selection du format du SMS le 1 pour le mode TEXT UART1_write(13); UART1_write(10); delay_ms(1000); UART1_write_text("AT+CMGS="); // Commande pour l'envoi d'un SMS,on indiquant le numéro du destinataire UART1_write(34); // code ASCII de (") UART1_write_text("0633825379"); UART1_write(34); // code ASCII de (") UART1_write(13); UART1_write(10); delay_ms(1000); UART1_write_text("alarme"); // le contenu de notre message UART1_write(13); UART1_write(10); delay_ms(1000); raf=0;} else {buzz=1; delay_ms(3000); buzz=0;} } goto detec; } } } void interrupt() { if(buzz==1) // arrete la siréne { buzz=0; intcon=0x90 ; } else //déverouiller les portes et arrete la détection { verrou=0; detection=0; raf=0; intcon=0x10; } }
-----