[Assembler] Ampelschaltung

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von aegis, 19. Oktober 2005 .

Schlagworte:
  1. 19. Oktober 2005
    Hi, ich habe ein relativ großes Problem :
    Wir sollen für die Schule eine Ampelschaltung machen, dies habe ich bereits geschafft. Nur bekomme ich durch Timer\Warteschleifen nicht die geforderten Zeiten für die Ampelphasen hin. Die Phasen sind:

    grün 4 sek.
    rot 6 sek.
    gelb 1 sek
    gelb rot 1 sek.

    Die Dioden des Microcontrollers sollen wie folgt geschaltet werden:

    X (grün) X (gelb) X (rot) XX X (grün) X (gelb) X (rot)



    Hier das Programm wie es bisher aussieht:

    Code:
    sfr P2M1 = 0xA4 ; Steuerregister für Port 2
    
    ljmp Initialisierung ; Springen zum Unterprogramm Initialisierung
    
    org 0x000b
    
    Timer0: ; Timer 0 Interrupt, 122 Hz
     
     
     djnz r7, EndeTimer ; Wenn R7 nicht 0 ist, dann auf EndeTimer Marke springen
    
     djnz r6, RotGelb1 ; Wenn R6 nicht 0 ist, dann auf RotGelb1 springen
     djnz r5, Gruen1 ; Wenn R5 nicht 0 ist, dann auf Gruen1 springen
     djnz r4, Gelb1 ; Wenn R4 nicht 0 ist, dann auf Gelb1 springen
     djnz r3, RotGelb2 ; Wenn R3 nicht 0 ist, dann auf RotGelb2 springen
     djnz r2, Gruen2 ; Wenn R2 nicht 0 ist, dann auf Gruen2 springen
     djnz r1, Gelb2 ; Wenn R1 nicht 0 ist, dann auf Gelb2 springen
    
    EndeTimer:
    reti
    
    
    ; Ampel 1 - ersten 3 Bits
    
    RotGelb1: ; Unterprogramm für die Rot-Gelb Phase von Ampel 1
    mov P2, #01100001b 
    mov r7, #255
    mov r6, #1
    
    
    
    reti 
    
    Gruen1: ; Unterprogramm für die GrünPhase von Ampel 1
    mov P2, #10000001b
    mov r7, #255
    mov r6, #1
    mov r5, #1
    
    
    reti
    
    Gelb1:
    mov P2, #01000001b
    mov r7, #255
    mov r6, #1
    mov r5, #1
    mov r4, #1
    
    
    reti
    
    ; Ampel 2 - letzten 3 Bits
    
    RotGelb2:
    mov P2, #00100011b
    mov r7, #255
    mov r6, #1
    mov r5, #1
    mov r4, #1
    mov r3, #1
    
    
    reti
    
    Gruen2:
    mov P2, #00100100b
    mov r7, #255
    mov r6, #1
    mov r5, #1
    mov r4, #1
    mov r3, #1
    mov r2, #1
    
    
    reti
    
    Gelb2:
    mov P2, #00100010b
    mov r7, #1
    mov r6, #1
    mov r5, #1
    mov r4, #1
    mov r3, #1
    mov r2, #1
    mov r1, #1
    
    reti
    
    Initialisierung: ; Unterprogramm Initialisierung
    
    mov P2M1, #0b ; P2M1 auf 0 setzen
    mov P2, #0b ; P2 auf 0 setzen
    
    setb TR0 ; TR0 Bit setzen
    
    setb ET0 ; ET0 Bit setzen
    setb EA ; EA Bit setzen
    
    ende: sjmp ende ; Endlosschleife
    END 
    
    
    Währe nett wenn mir irgendwer helfen könnte die richtigen Zeiten hinzubekoomen.
     
  2. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.