Хочу собрать сигнализацию на базе мобильного телефона. Схема есть, есть текстовый файл программы, но какой программой его можно перевести в пригодный для программирования формат. Микроконтроллер pic16f84.
Вот текст этого файла:
Programmlisting
// Programmname: sms1 .c
// c'2001 by Wendt and KastI, Berlin Jun 2001
// Der Messagetext wird PDU-Codiert.
//lnfos zum PDU-Mode bei
www.nobbi.com
// Details zur SMS bei
www.etsi.org
// In dieser Form lautet die Nachricht:
//"Achtung Einbruch! Ausgeloest
// wurde(n) Sensor xxx". In Abhaengigkeit
//der ausgeloesten Sensoren wird
//xxx durch "1 ","2 ", oder "1+2" ersetzt.
#include‹PIC16C84.H› //kompat. m.16F84
#include ‹stdio.h›
#include "villa.h"
#FUSES XT, NOPROTECT
#use DELAY(CLOCK=4000000)
#use RS232 (Baud=2400, Xmit=PIN_17, Rcv=PIN_1
#BYTE PORT_B=6
int ctrl_z = 26; // Zum Beend.d.SMS
void sendhandy(int sensor)
{
delay_ms(1000);
puts(""); // cr/lf zur Baudratenerkennung
//durch das Handy
delay_ms(2000);
puts("atz"); // Modem zuruecksetzen
delay_ms(2000);
puts("at+cmgf=0"); // benutze d. PDU-Mode
delay_ms(2000);
puts("at+cmgs=57"); // errechnete
//SMS-Laenge -› Modem
delay_ms(2000); // SMS mit SMSC-Nr.
// und Empfaengernr.
printf("0791947101670000"); // Header+
//SMS-Servicecenter +491710760000
printf("1100"); // 11 =Flag, 00=Reference
printf("0D91946190611294F1 ");
//Zieladresse+4916091621491 AENDERN"
//Fuellbyte F
printf("0000A830");//ld=00,Codesche
//ma=00,gueltig 2 Tage=A8, 48 Zeichen=30
printf("C1319A5E779F41 C5B45B2CAF8FD12
150B03E3F97D9E"); //MSG-Text
printf("FF29C0EBAD7E5E432CA9D024DC-
BEEF95BOE"); //MSG-Text
if(sensor==1){
printf("8A8140");
//"1 " }
if (sensor==2){
printf("928140");
//"2 " }
if (sensor==3){
printf("8AAD64");
//"1+2" }
putc(ctrl_z); // Ende der Uebertragung
}
main()
{
int ctrl_z = 26;
int i, j, k,
S, B, l, TX,
z, y, r, sn;
y=o;
TX=0;
r=0;
SET_TRIS_B(79);
SET_TRIS_A(255);
OUTPUT_HIGH(LED);
WD: // Scharfstellen nach 42 s mit Rogerbeep
1=0;
i=0;
j=0;
B = 0; //Signalspeicher. zuruecksetzen
S=0;
OUTPUT_LOW(Piezo);
OUTPUT_LOW(Sirene);
for (i = 0; i ‹= 7; i++) { delay_ms(5000);}
OUTPUT_HIGH(Piezo);
//Rogerbeep nach Ablauf der 40 s
delay_ms(2000);
OUTPUT_LOW(Piezo);
MRO:
// Sensorabfrage u. Signalspeicherung
if (!INPUT(IR))
&&(!INPUT(Sen2)) {
goto MRO;
}
if (INPUT(IR)) {
B=1;
}
if (INPUT(Sen2)) {
S=1;
}
MR1:
// Piezosummer aktivieren, Abbruch moeglich,
// Signalspeicherung (30 s)
OUTPUT_HIGH(Piezo);
delay_ms(2000);
OUTPUT_LOW(Piezo);
J = ++I;
if (B == 0)
&&(INPUT(IR)) {
B=1;
}
if(S==0)
&&(INPUT(Sen2)) {
S=1;
}
if (!INPUT(Taster)) {
goto MR4;
}
// Alarmabbruch bei Tastendruck › 3s
ifь‹=14){
goto MR1;
}
1=0;
k=0;
MR2: // Sirene 1 min aktivieren
OUTPUT_HIGH(Sirene);
delay_ms(5000);
k = ++I;
if(k‹= 12) {
goto MR2;}
OUTPUT_LOW(Sirene);
// fuer y›=4 wird keine SMS
//mehr gesendet
if(y›=4){
goto MP;}
l = 0;
k=0;
y = ++r; // Zaehler
if(TX==1)
&&(y ‹= 3) {
goto WD;
}
// 2. SMS nach 1. SMS u. y=3 senden
OUTPUT_HIGH(LED);
// SMS-LED vor 2. Aussendung ausschalten
delay_ms(1000); // SMS senden
if((B==1)&&(S==0)){
sn=1;
sendhandy(sn);
OUTPUT_LOW(LED);
// LED-Anzeige fuer gesendete SMS ein
}
if((S==1)&&(B==0)){
sn=2;
sendhandy(sn);
OUTPUT_LOW(LED);
// LED-Anzeige fuer gesendete SMS ein
}
if((S==1)&&(B==1)){
sn=3;
sendhandy(sn);
OUTPUT_LOW(LED);
// LED-Anzeige fuer gesendete SMS ein
}
TX= 1;
// SMS-Meldespeicher
MP:
// Nach einer 5 Min Pause
delay_ms(10000);
k = ++I;
if (k ‹= 29) {
goto MP;
}
l=0;
k=0;
goto WD;
// wird die Station erneut gestartet
MR4:
// Programmabbruch mit Rogerbeep
delay_ms(3000);
OUTPUT_HIGH(Piezo);
delay_ms(700);
OUTPUT_LOW(Piezo);
MR5:
OUTPUT_LOW(LEDA); // gelbe LED
blinkt nach Alarmabbruch
delay_ms(70);
OUTPUT_HIGH(LEDA);
delay_ms(2000);
if (!input(Taster)) {
r=0; y=0; TX=0; OUTPUT_HIGH(LED); goto
WD;}
//Programm-Neustart nach Abbruch
goto MR5;
}
// Programmname: Villa.h
// c'2001 by A.Wendt u. R.KastI / Germany /
Berlin-Charlottenburg
#define IR Pin_6
// Bewegungsmelder input aktiv high
#define Sen2 PIN_7
// 2. Sensor input aktiv high
#define Taster PIN_8
// Alarmabbruch input aktiv low
#define Sirene Pin_10
// Sirene Output aktiv high
#define Piezo PIN_11
// Piezosummer Output aktiv high
#define LED PIN_13
// SMS wurde gesendet(rt) Output aktiv low
#defineLEDAPIN_12
// Abbruch (gelb) Output aktiv low