Forum: FPGA, VHDL & Co. atmel c89c2051 proggen


von chris_s (Gast)


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;
}

von Wolfram (Gast)


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.

von chris_s (Gast)


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.

von Stephan H. (stephan-)


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

von chris_s (Gast)


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 ;)

von Stephan H. (stephan-)


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

von chris_s (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.