Druck Messung Keil

Dieses Thema im Forum "Elektrotechnik" wurde erstellt von technikerphysik, 12 Aug. 2017.

  1. Lage des Programms Haupt ab B0h
    Nach der Initialisierung den Drukwert 1 der an P0 des 8051 anliegt in R1 ablegen und den Druckwert 2 der an P1 anliegt in R2 ablegen
    Lage des Unterprogramms VGL ab 100H

    1.Warum wird das Programm mit der Adresse 00B0h angefangen, obwohl in der Anleitung steht, dass der Anfang ab Adresse B0h beginnen soll

    2. Was ist das für Adresse 00011111b ;optional. Woher kommt die und wozu ?


    org 00B0h
    jmp 00B0h

    org 00B0h
    mov r1,#00h
    mov r2,#00h
    mov a,p0
    anl a,#00011111b ;optional
    mov r1,a
    mov a,p1
    anl a,#00011111b; optional
    mov r2,a
    call vgl
    jmp loop
     
  2. upload_2017-8-12_10-53-55.png
     
  3. P05-P07 und P1.5-P1.7 an Masse. Bedeutet es, dass falls an P0 11111 und P1 11111 anliegt sind die Werte gleich ?
     
  4. B0H

    Der ORG "Befehl" will halt 16bit. Da muss man dann die oberen 8bit halt auf 0 legen.

    org 00B0H


    anl a,#00011111b ;optional
    Es werden nur die unteren 5 Port-Pins verwendet. Die oberen 3 Port-Bins sind zwar extern auf 0 gelegt, aber es schadet nicht die unbenutzten oberen Bits wegzumaskieren. Motto: Doppelt genäht hält besser. Es könnte ja sein, dass später jemand doch noch etwas anderes mit den oberen Bits macht.


    > P05-P07 und P1.5-P1.7 an Masse
    Wenn man die einliest, bekommt man da 0.
     
  5. org 0100h
    vgl: mov a,r1
    clr c
    subb a,r2
    JZ gleich kleiner
    JC gleich kleiner
    mov p2,#02h
    setb p2,7
    ret
    gleich_kleiner: mov p2,#01h
    clr p2.7
    ret
    end

    muss hier JC gleich kleiner nichr größer stehen ? Und warum sol ich mov p2,#02h setzen ?
     
  6. mov p2,#02h
    setb p2,7
    ret
    gleich_kleiner: mov p2,#01h
    clr p2.7
    ret
    end


    R1 kleiner oder gleich R2
    P2.0 leuchtet. Signal an P2.7=0
    R1 größer R2
    P2.1 Leuchtet. Signal an P2.7

    muss hier JC gleich kleiner nichr größer stehen ? Und warum sol ich mov p2,#02h setzen ?
     
  7. mov p2,#02h warum ????
    setb p2,7
    ret
    gleich_kleiner: mov p2,#01h warum ????
    clr p2.7
     
  8. Die LED leuchtet, wenn man den Port-pin auf 0 setzt.
     
  9. #02H

    schreib R1 in Akku
    lösche CB
    Subtrahiere R2 vom Akku
    JZ gleich springt
    JC springt

    mov p2,#02H ???????????????? den Schritt verstehe ich nicht
    setb setzt 2.7 auf 1
    ende
     
    #10 technikerphysik, 12 Aug. 2017
    Zuletzt bearbeitet: 12 Aug. 2017
  10. > mov p2,#02H ???????????????? den Schritt verstehe ich nicht

    LED an P2.0 leuchtet
    LED an P2.1 leuchtet nicht
     
  11. Bitte nicht aufregen aber ich verstehe es nicht
    Ich vergleiche 2 Werte Druck1 und Druck2. Wenn Druck1 kleiner oder gleich Druck2 P2.7=0 leuchtet nicht.
    Druck1 größer Druck2 leuchtet P2.1 signal an P2.7.
    Warum ausgerechnet #02H um durch SETB P2,7 auf 1 zu setzen ?
    und warum nicht zB 05H


    es bedeutet, dass bei einem Wert 02H muss der Zustand antreten und es ist Zustand nach der Subtraktion von D1 und D2. Falls Subtraktion von D1 und D2 #01 ergibt wird P2.7 gelöscht ?
     
    #12 technikerphysik, 12 Aug. 2017
    Zuletzt bearbeitet: 12 Aug. 2017
  12. Kannst mir ein Beispiel schreiben.
    ZB
    D1 Wert 05H (Minus) D2 Wert 01H =04H
    Was pasiert bei diesem Wert mit P2.0 und P2.1 zu
    P2.7
     
  13. > D1 Wert 05H (Minus) D2 Wert 01H =04H
    Ergebnis positiv da Druck1 > Druck 2

    mov p2,#02h
    setb p2,7
    ret

    LED P2.1 leuchtet (Druckwert 1 größer Sollwert)
    Da ist ein Tippfehler in der Aufgabe. In dem Bild muss stehen "Druckwert 1 größer Sollwert" und nicht "Druckwert 2 größer Sollwert", Druckwert 2 der Sollwert ist.

    ****** Ich hatte bisher den Inverter übersehen. Die LED leuchtet, wenn am Port-Pin eine 1 ausgegeben wird. *****
     
  14. OK D1 ist mein Sollwert mit dem wird verglichen. Jetzt verstehe
    mov P2,#02H
    setb P2.7 wird auf 1 gesetzt leuchtet weil #02H größer als #01H - leuchtet bis
    .


    mov p2,#01H ( #01h wird größer als #02H )
    clr P2.7
    ret
     
  15. Helmut danke bin ich wieder Schritt weiter. Ich denke, dass mit kleinen Vergleich Programmen könnte langsam klappen.
    Jetzt die Frage.
    Womit könnte ich Zahl 00011111b ersetzen. Sicher würde gehen 1FH. Gibt auch andere Möglichkeit P0 oder P1 in Akkumulator zu schreiben. Assembler versteht feste Befehle. Also kann ich nicht einfach schreiben zB ANL A,#Ausgang P0 oder ? oder würde es auch gehen. anl a,#00011111b ;optional.
    Mit welchem Programm könnte ich Keil verknüpfen um die Schaltung mit Bausteinen zu erstellen und mit dem Programm dann prüfen. Brauche ich 2 Programme oder kann ich alles mit einem Programm und dem dazu gehörigen Schaltbild mein Programm zu prüfen.?


    org 00B0h
    jmp 00B0h

    org 00B0h
    mov r1,#00h
    mov r2,#00h
    mov a,p0
    anl a,#00011111b ;optional
    mov r1,a
    mov a,p1
    anl a,#00011111b; optional
    mov r2,a
    call vgl
    jmp loop
     
    #16 technikerphysik, 12 Aug. 2017
    Zuletzt bearbeitet: 12 Aug. 2017
  16. > ANL A,#Ausgang P0 oder

    Das geht nicht. Versuch die Beispiele zu verstehen und mach es auch so. Ansonsten schau in den Befehlsbeschreibungen was geht und was nicht geht. Der Assembler müsste meckern, wenn es nicht geht. Allerdings steht in der Prüfung vermutlich kein Assembler zur Verfügung und ein Simulator schon gar nicht.

    Die meisten Entwicklungsumgebungen haben doch bestimmt auch einen Simulator.
     
  17. Kann es sein dass die Programme eine feste Struktur haben. Die zwei Programme die wir gemacht haben, haben mir gezeigt, dass die Struktur bei diesen einfachen Programmen bleibt. Höchstens wird zB ein Programm um ein Befehl erweitert. Jetzt habe ich etwas mehr Mut als noch vor ein paar Tagen. Danke. Spielt es eine Rolle ob ich D1 mit D2 vergleiche oder D2 mit D1. P0 steht vor P1 also muss ich in Zukunft P0 (Sollwert) sein und P1 wird mit dem P0 verglichen oder ?
     

Diese Seite empfehlen