Ü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 EndlosschleifeinitT0: 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-InitialisierunginitUhr mov R3,#00h ;Sekundenzähler auf 0 setzen
mov R4,#00h ;Minutenzähler auf 0 setzen
mov R5,#00h ;Stundenzähler auf 0 setzent0ISR: 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 ISRzaehler: dec A ;AKKU um 1 dekrementieren
mov @B,A ;Wert von R0 in A zurück schreibenlcdout:
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?