Uhren Tuto mit Wecker

OP #4668147
Guten Tag

Ich habe die Uhre der Tuto genohmmen, für die 8515 umgebaut, 
funktioniere einwandfrei. Dieser Uhr startet leider bei 00, und ich habe 
angefangen mit 2 Taster die Einstellung zu ermöglichen was aber auch 
scheinbar ohne Probleme lief. Ich wollte aber ein Weckfunktion einbauen, 
Die Routines dazu habe ich vorbereitet, der Summer möchte ich später mit 
ein Timmer erledigen, aber ich kanne in mein Datenblatte nicht finden 
wie ich die Anzeige der Wecker auf die 2. zeile einbringe. Kann mir 
jemand zeigen der beste Weg dafür?
Danke
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite
Claude B. schrieb:
> ich kanne in mein Datenblatte nicht finden
In welchem Datenblatt schaust du?
Bei den meisten HD44780 kompatiblen Displays beginnt die 2. Zeile an der 
RAM-Adresse 0x40. Du musst also einfach das Kommando SET DDRAM ADDRESS 
einfügen:
http://mil.ufl.edu/3744/docs/lcdmanual/commands.html#Sda

Und auch das Koppeln der Einstell-Taster an das Sekunden-Flag bringt 
sicher ein ungeahnt holpriges und zähes Bediengefühl....
OP
Vielendank, ich Probiere

Marc V. schrieb:
> ; Sendet den Befehl: Cursor auf 2-te Zeile
> lcd_Row2:
>            ldi temp1, 0xC0
>            rcall lcd_command
>            rcall delay5ms
>            ret

Viellen Dank und es Funktioniert, ich hatte die delay nicht ein gefügt.

Aber jetzt, ich habe ein Zeile (Vorbereitung) eingefügt, auf die 
2.Zeile, ich möchte mein name einfügen, und zur Zeit ich bekomme auf die 
1. Zeile ( Vorberitung)  und auf die 2., Wieder ( Vorbereitung) wie 
bekomme ich das in?
Angehängte Dateien:
(Firma: Vescomp)
Claude B. schrieb:
> 1. Zeile ( Vorberitung)  und auf die 2., Wieder ( Vorbereitung) wie
> bekomme ich das in?

 Hier:
1
;-----------------------------------------------------
2
weiter1:  rcall  lcd_clear             ; das LCD löschen
3
    
4
;************************************************************************
5
    ldi  temp1, 0xC0
6
    rcall  lcd_command
7
    rcall  delay5ms
8
    ldi  ZL, LOW(text2*2)
9
    ldi  ZH, High(text2*2)
10
    rcall  lcd_flash_string
11
    ldi  temp1, 0x80
12
    rcall  lcd_command
13
    rcall  delay5ms
14
;************************************************************************
15

16
    mov  temp1, Stunden        ; und die Stunden ausgeben
17
    rcall   lcd_number
18
    ldi     temp1, ':'            ; zwischen Stunden und Minuten einen ':'
19
    rcall   lcd_data
20
    mov     temp1, Minuten        ; dann die Minuten ausgeben
Gast
Hi

>Was bedeutet die 0x80?

Befehl zum Setzen der DDRAM-Adresse:

         RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

Set
DDRAM     0  0   1  ADD ADD ADD ADD ADD ADD ADD
address

MfG Spess
(Firma: Vescomp)
Claude B. schrieb:
> das bedeutet, dass wenn ich noch Irrgenwo in den Programm ein 2. Zeile
> einbringen möchte, ich muss diese Procedure folgen.

 Nein.
1
    ldi  temp2, 2    ;* Cursor auf Zeile 2, Anfang
2
    rcall  SetLcdRow
3
    ldi  ZL, LOW(text*2)
4
    ldi  ZH, High(text*2)
5
    rcall  lcd_flash_string  ;* " Vorbereitung   " ausgeben
6

7
    ldi  temp2, 1    ;* Cursor auf Zeile 1, Anfang
8
    rcall  SetLcdRow
9
    ldi  ZL, LOW(text2*2)
10
    ldi  ZH, High(text2*2)
11
    rcall  lcd_flash_string  ;* " Claude Bochard " ausgeben
12
    ret
13

14
 ; Sendet den Befehl: Cursor auf Zeile in temp2
15
SetLcdRow:
16
    ldi  temp1, 0x80
17
    cpi  temp2, 1
18
    breq  slr_0
19
    ldi  temp1, 0xC0
20
slr_0:
21
    rcall  lcd_command
22
    rjmp  delay5ms

Claude B. schrieb:
> Was bedeutet die 0x80?

Lothar M. schrieb:
> Bei den meisten HD44780 kompatiblen Displays beginnt die 2. Zeile an der
> RAM-Adresse 0x40.

 Demzufolge ist:

 0x80 = RAM Adresse für Zeile 1 +  Kommando SET DDRAM ADDRESS.
 0xC0 = RAM Adresse für Zeile 2 +  Kommando SET DDRAM ADDRESS
OP
Nils S. schrieb:
> Wenn du die Sekunden einstellen willst, brauchst du keinen Trick,
> sondern eine Taste, die die Sekunden heraufzählt.

Was ich aber gemacht habe,
1.Probleme die Uhr läuft langsmer
2. Die Sekunden Steigen in 1 Sekundentackt, was mein Uhr damit nicht 
eingestell werden kann

Danke für die Link, ich werde versuchen
OP
Marc V. schrieb:
> Um wieviel langsamer ?

Um die Heft,ungefähr, nicht gemessen und auskommentiert aber wie schon 
gesagt, die sekunden Steigen von 1 pro sekunde, was mir gar nicht nütze

Nils S. schrieb:
> Taster mit Timer Interrupt von ca. 20mS auslesen.

Also ei 2. Timer benutzen?
und dann in der Sekunden_up runtine als Timer(2) routine??
sekunden_up:
    inc  Sekunden
    cpi  Sekunden, 60
    brne  return
    clr  Sekunden
    Ret  (oder iret)
kein Berücksichtigung der Minuten

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.