Kein Problem:
So, das sollte es gewesen sein... Jetzt vielleicht eine Idee?Code:.include "m128def.inc" .dseg .org 0x0100 ; benutzerdefinierte Variablen clock_hour: .byte 1 clock_min: .byte 1 clock_sec: .byte 1 ; Ende benutzerdefinierte Variablen .cseg .org 0x0000 rjmp init ; Systeminitialisierung init: .org 0x0030 ; Stackpointer initialisieren ldi R16, high(RAMEND) out SPH, R16 ldi R16, low(RAMEND) out SPL, R16 ldi R16, 0xFF ; PORTA (Ausgabe) out DDRA, R16 ldi R16, 0x00 out PORTA, R16 ldi R16, 0x00 ; PORTB (Eingabe) out DDRB, R16 ldi R16, 0xFF out PORTB, R16 ldi R16, 0x42 ; PORTD (Bidirektional) out DDRD, R16 ldi R16, 0x00 out PORTD, R16 call lcd_init ; LCD initialisieren call init_extint ; externe Interrups initialisieren call init_timer ; timer inistialiseren clr R16 ; loeschen der Uhrzeit sts clock_sec, R16 sts clock_min, R16 sts clock_hour, R16 sei ; globale Interrupts aktivieren ldi R16, (1<<INT1)|(1<<INT0)|(1<<INT2) out GICR, R16 ; General Interrupt Control Register setzen main: ldi R16, FF ; loesche das Display ; call write_chr ldi R16, LF ; Zeilenumbruch call write_chr ldi ZL, LOW(zeichenkette<<1) ; lade Zeichenkette für 2.Zeile ldi ZH, HIGH(zeichenkette<<1) call write_str ; Ausgabe 2te Zeile haupt: ldi R16, VT ; Zurueck zum Anfang 1.Zeile call write_chr ldi ZL, LOW(leerzeichen<<1) ; Leerzeichen laden ldi ZH, HIGH(leerzeichen<<1) call write_str ; und ausgeben lds R16, clock_hour ; Stunden laden call write_bcd ; und ausgeben ldi R16, ':' ; Doppelpunkt call write_chr ; und schreiben lds R16, clock_min ; min laden call write_bcd ldi R16, ':' call write_chr lds R16, clock_sec ; sec laden call write_bcd jmp haupt
MfG, Ozzy







Zitieren

Lesezeichen