mikrocontroller.net

Forum: FPGA, VHDL & Co. atmel c89c2051 proggen


Autor: chris_s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ihr seit meine letzte hoffung.

habe schon stundenlang google gequählt aber noch nicht weiter :((

ich muss den ic mit dem unten stehenden source code programmieren.
ich weiß assembler etc. allerdings weiß ich nicht welchen assembler ich
nehmen muss um den text in hex umzuwandeln.

zum proggen wollte ich mir den programmer bei ebay kaufen und mit
ic-prog programmieren.

passt der sourcecode überhaupt?? weil da ja text drinsteht etc. hab von
sowas echt keine ahnung.

bedanke mich schonmal
chris


// komfort.c
// Komfortschließung, copyright Julian Baker 2004
// 2x Tastendruck innerhalb 2 sek.(t1) --> Ausgang(P1.7)PIN19 nach
  t_Einschalt_delay für
// 10sek(t2) High, dann wieder Low
// weiterer Tastendruck: Ausgang Low
// Taster: ext. Interrupts INT0 (P3.2)PIN 6
// PIN 1 Reset(bei High)
// PIN 4,5 XTAL + 2 x 22pF
// PIN 10: GND, PIN 20. VCC(5V)

#include

# define Quarzfrequenz 11059  // f in khz
# define T0_1msec 0xFFFF-Quarzfrequenz/12     // Ladewert von T0
  (TH0+TL0), t=1mS

#define t1 2000      // 2sec
#define t2 10000    // 10sec (Wert mit SSD muss 15000 -> 15sec sein!!!)
#define t_Einschalt_delay 500  // 500 msec

# define T0HI_1msec    T0_1msec / 256    // T0 High-Order (durch
  int.Division)
# define T0LO_1msec    T0_1msec % 256    // T0 Low-Order (Modulo liefert
  Rest)
#define start_T0 TR0=1;            // Timer 0 starten
#define stop_T0  TR0=0;            // Timer 0 abschalten

#define Out P1_7      // Ausgang P1.7
#define Out_High Out=1
#define Out_Low  Out=0

unsigned char status;

unsigned int msec;        //Variable für Zeitverzögerung

void main(void)
{

  TH0 = T0HI_1msec;  // Timer0 High-Order Register für 1ms laden
    TL0 = T0LO_1msec;  // Timer0  Low-Order Register für 1ms laden
    TMOD &= 0xF0;      // Timer0 Einstellungen zurücksetzen
    TMOD |= 0x01;        // T0 Modus1, 16bit Zeitgeber
  ET0 = 1;      // Freigabe des Interrupts bei Überlauf T0
     EX0 = 1;        // Freigabe des ext. Interrupts INT0 (P3.2)
         IT0 = 1;        // externer Interrupt0 wird flankenaktiviert


  EA = 1;          // alle Interruptquellen möglich

  ausgangszustand();

  while (1)         // Beginn Endlosschleife
  {

    PCON=0x01;       // enter idle mode
  }
}

void ext_INT0 (void) interrupt 0    //
{
  unsigned char i;
  //Tastenentprellung;
  EX0 = 0;
  for (i=0; i<255; i++);
  IE0=0;
  EX0 = 1;


      switch (status)
      {
          case 4:  // 3.Tastendruck = Abbruch
      ausgangszustand();
      break;

    case 3:  // 3.Tastendruck = Abbruch
      ausgangszustand();
      break;

    case 2:

        status=3;  // Verzögerung aktivieren
        msec=0;


    case 1:    // 1.Tastendruck: starte T0, msec werden gezählt

      stop_T0;
      msec=0;
      TH0 = T0HI_1msec;  // Timer0 High-Order Register für 1ms laden
        TL0 = T0LO_1msec;  // Timer0  Low-Order Register für 1ms laden
      start_T0;
      status=2;
      break;

       }
}


void random_time (void) interrupt 1 using 1  // Timer0 Interruptroutine

{
  TH0 = T0HI_1msec;  // Timer0 High-Order Register für 1ms laden
  TL0 = T0LO_1msec;  // Timer0  Low-Order Register für 1ms laden
  msec++;    // msec inkrementieren

    if (msec>t2)      // wenn Zeit t2 abgelaufen
    {
      ausgangszustand();
    }
    if (msec>t1 && status== 2)  // kein weiterer Tastendruck->
    {
      ausgangszustand();
    }
    if (msec>t_Einschalt_delay && status==3) // Verzögerung vorbei
    {
    status=4;
    Out_High;    // Ausgang für t2 sec = High
    msec=0;
    }

}

void ausgangszustand (void)
{
  Out_Low;
  status=1;
  stop_T0;
  msec=0;
}

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
würde mich echt interessieren womit man stundenlang google quälen kann.
Zum einen ist das nicht Assembler sondern C, zu anderen bist du in
einem vollkommen falschem Forum.
Probier mal bei goolge die Suchworte C Compiler 8051
In dem Quelltext ist mindestens ein Fehler über den der Kompiler
stolpern duerfte und einige Sachen sind Compilerspezifisch. Es dürfte
also besser sein nochmal auf die Seiten zu schauen wo der Quelltext
herstammt.

Autor: chris_s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achja. sorry. gehört ins µc-forum

der quelltext stammt von bmw-secrets.de angeblich stimmt der so.

ich habe gedacht assembler ist ein proggi das den text in hex
umwandelt.

sorry. aber mit dem programmiersprachen kenn ich mich net aus.

ich such ein proggi das den text in hex umwandelt. mehr brauch ich
nicht.

mit google hab ich gesucht wie man in hex umwandelt. aber wenn man
keinen plan hat ist das ne zeitaufwendige sache. ich such erst bevor
ich jemanden belästige. aber diesmal seh ich keinen anderen weg mehr
als mal in nem forum zu fragen. wo leute nen richten plan haben.

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine Konfortschließung zum Nachrüsten ??
Für ZKE oder für ZVM ?? Habe E34.


Hallöchen,
ich mache zwar in Assembler und nicht in C aber der Text muß erst
kompiliert werden. Ist für nen 8051. Mal sehen wer sicher erbarmt die 3
Mausklicks zu machen.

@Rahul oder Peter

könnt Ihr helfen ?? Habe auch Ineteresse daran !!

Danke

Autor: chris_s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke.

für zke. soll aber auch für zvm gehen. aber nur wenn man mit dem
schlüssel im schloss die fenster schließen kann (komfortschließen,
zentralsichern).

platinen hab ich schon entworfen. gehen heute raus zum fertigen.

nur der schrott mit dem proggen raubt mir den letzten nerv ;)

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallochen,
also ich habs hier mal versucht zu compilieren. Habe mal schnell die
Keil uVision drauf gemacht. Aber ich komme damit nicht klar. etliche
Einstellungen etc.pp. C ist mir einfach zu kryptisch.
Man könnte es in Assembler umschreiben, aber vorher solltest Du die
Routine mal in die Sektion "Codesammlung" reinstellen und fragen ob
dir das mal jemand "compilieren" kann. Das sollte auf nem 89C2051
laufen bei 11,059 MHz.
Für nen C Programmierer sind das wenige Handgriffe.
Ich bleibe bei Assembler !!! SO

Also bis dann

Autor: chris_s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe mir auch µc51 und keil draufgemacht.
aber keinen plan...

habe gedahct ich muss nur das file laden und dann einfach nen knopf
drücken und das proggi wandelt mir das ins hex um das ich in den chip
flashen kann.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.