Forum: Mikrocontroller und Digitale Elektronik Steuerung über Atmel 8051


von SK (Gast)


Lesenswert?

Hallo,
arbeite zur Zeit an nem Schulprojekt und hab nen problem muss ein 
Programm für den Atmel 8051 schreiben in C, Assambler oder mischung.
Ich weis genau wie das Programm laufen soll nur bekomme es irgendwie net 
hin.
Kleine übersicht:

Endlosschleife
{
  Port0 soll gelesen werden
  if(Port0>=1)
  {
    if(Port0=3)
    {
      auf Port1 01h übertragen
      (Verzögerungsschleife von 20sek)
        if(Port0=3)//Ja erneute Abfrage
        {
           While(Port0>2)
           {
              Port1 07h
           }
         Port1 00h
        }
         else
         {
            Port1 00h
}}} }

So hoffe mir kann jemand helfen.
MfG
SK

von Alexander S. (schroeder_90)


Lesenswert?

1
//Endlosschleife
2
*fett*while(1)*fett*
3
{
4
  //Port0 soll gelesen werden
5
  if(Port0>=1)
6
  {
7
    *fett*if(Port0==3)*fett*
8
    {
9
      auf Port1 01h übertragen
10
      (Verzögerungsschleife von 20sek)
11
       *fett* if(Port0==3)*fett*//Ja erneute Abfrage
12
        {
13
           While(Port0>2)
14
           {
15
              Port1 = 07;
16
           }
17
         Port1 = 00h;
18
        }
19
         else
20
         {
21
            Port1 = 00;
22
         }
23
      }
24
   
25
   }
26
}

So vielleicht?

von SK (Gast)


Lesenswert?

ne, ich brauch das in Assembler oder C code für den 8051 also mit 
Portansteuerung -.-
Also lauffähig
mir würde ne erklärung für if bedinung die sich auf einen Port bezieht 
in Assembler reichen

von Alexander S. (schroeder_90)


Lesenswert?

Das ober Programm geht doch???
bis auf die zeitschleife und auf Port1 01h übertragen, wenn du eine 
richtig header datei mit den register und port definitionen hast...

in asm ne if schleife(geht auch mit pointer und registern statt a):

mov a,port
cjne a,#wert,#ifschleife

von E. B. (roquema) Benutzerseite


Lesenswert?

Was denn jetzt C oder Assembler?
Findet sich alles im Netz.
In Assembler: schau Dir den Befehlssatz an. Z.B. hier:
http://www.ipd.uka.de/~buchmann/microcontroller/assembler2.htm
1
JB [Pin],[Sprungziel] springe wenn Pin high
2
JNB [Pin],[Sprungziel] springe wenn Pin low
3
4
CJNE [Op1],[Op2],[Label] springe zu Label, wenn Op1 und Op2 unterschiedlich
In C:
Kommt es auf den Compiler an --> Handbuch, beim SDCC geht:
1
if (P1_0) tu was; //Pinabfrage
2
if (P1 == 0x07) tu was; //Portabfrage
Das da oben ist aber noch kein vollständiges Programm...

von SK (Gast)


Lesenswert?

Danke vielmals das Programm funzt nu wie es soll hab irgendwie zu 
kompliziert Gedacht =)
Danke an alle Posts
MfG
SK

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.