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
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?
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
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
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.