Übergabe von Adresse



  • Hi Leute,
    ich habe mich an einem Programm versucht womit ich die Uhrzeit über daß LCD-Display ausgeben lassen kann. Nun habe ich daß Problem, daß ich in dem Unterprogramm "zaehler" immer nur den jeweiligen Wert(sek, min, std) einlesen möchte, decrementieren und dann wieder in die Speicherstelle schreiben lassen wo es her kam. Mein Problem ist nun, daß ich nur den Wert der Speicherstelle auslesen kann und nich weiß wie ich die Stelle selber auslese und anschließend wieder reinschreiben lasse. Vielleicht könnt ihr mir dabei helfen.

    Danke

    yellow1

    [asm]
    main:
    call initT0 ; Timer 0 für Sekundentakt initialisieren
    loop: jmp loop ; leere Endlosschleife

    initT0: mov R7,#250 ; Zähler für Sekundentakt
    mov R6,#16 ; initialisieren ( 250x16x250µs = 1s )
    mov TMOD,#02h ; Timer 0 im Autoreloadbetrieb
    ohne Gate als Timer
    mov TL0,#6 ; Startwert und
    mov TH0,#6 ; Reloadwert auf 250µs ( 256 - 250 = 6 )
    setb EAL ; Interruptsystem aktivieren
    setb ET0 ; Timer 0 IRQ freischalten
    setb TR0 ; Timer 0 starten
    ret ; Ende der Timer-Initialisierung

    initUhr mov R3,#00h ;Sekundenzähler auf 0 setzen
    mov R4,#00h ;Minutenzähler auf 0 setzen
    mov R5,#00h ;Stundenzähler auf 0 setzen

    t0ISR: djnz R7,t0ISREnd ; Schon
    mov R7,#250 ; 1s
    djnz R6,t0ISREnd ; mit
    mov R6,#16 ; R6/R7 abgezählt?
    call zaehler ; Ja: Sekundensystemtakt
    t0ISREnd: reti ; Nein: Ende der Timer 0 ISR

    zaehler: dec A ;AKKU um 1 dekrementieren
    mov @B,A ;Wert von R0 in A zurück schreiben

    lcdout:

    cjne R3,#3Ch,zaehlerEnde ;Sekunden schon auf 60 gezählt?
    ;Wert von Register 3 auf LCD ausgeben lassen
    mov A,R3 ;Wert von Register 3 in Akku
    mov B,R3 ;Zeiger von Register 3 auf B
    call zaehler ;

    zaehlerEnde: ret ;Nein: Ende von zaehler

    END
    [/a sm]



  • Öhm was für einen mikroprozessor verwendest du denn? bzw. Was ist R6 und so?


Anmelden zum Antworten