.include "m8515def.inc" .def null=r0 .def eins=r1 .def temp=r16 .def temp2=r17 .def temp3=r18 .def Bits=r19 .def NextOp=r20 .def tempm=r21 .def Flag=r22 .def Spalte=r25 .def XAdresseLow=r26 .def Zeile=r27 .def AdresseLow =r30 .def AdresseHigh=r31 ;PortB .equ EnLCD=0 .equ Command=1 .equ Debug =2 ;PortD .equ XSCL=3 .equ LP=4 .equ FLM=5 .org 0000 rjmp reset .org OVF0addr ;Timer 0 rjmp TOV .org URXCaddr ; Interruptvektor für UART-Empfang rjmp RXRoutine .org 32 reti TOV: ldi tempm, 100 out Tcnt0, tempm ser Flag reti Reset: ldi r16, low(RAMEND) out SPL, r16 ; setup stack pointer ldi r16, high(RAMEND) out SPH, r16 ; setup stack pointer clr null clr NextOp ldi temp, 1 mov eins, temp ldi temp, 252 out ddrd, temp ser temp out portd, temp cbi portd, XSCL sbi portb, EnLCD ldi temp,63+128 out ddrb, temp ldi temp, 2 out TCCR0, temp out TCNT0, null ldi temp, 2 out TIMSK, temp clr AdresseLow ldi AdresseHigh, 3 ldi Zeile, 3 ;Zeile = Beginn XRAM cbr Spalte, 128 ldi XAdresseLow, 36 ;Startadresse -2*62, um Header vom BMP zu entfernen clr Bits clr Spalte ; Baudrate einstellen ldi temp, 9 ;9 für 115,2k bei 18,432MHz out UBRR, temp ldi temp, (1< Max ? brne normal clr XAdresseLow ;Spalten Adresse = 0 inc Zeile ;Zeilen Adresse ++ cpi Zeile, 244 ;Zeilen Adresse in untere Displayhälfte ? brne normal ldi Zeile, 4 ;Zeile = Beginn XRAM sbr Spalte, 128 ;MSB Spalten Adresse = Displayhälfte cbi portd, XSCL out sreg, r9 reti untereHalfte: swap temp ld temp2, X andi temp2, 240 ;untere Datenhälfte behalten mov temp3, temp andi temp3, 15 ;erste Hälfte behalten or temp2, temp3 st X+,temp2 ld temp2, X andi temp2, 240 ;untere Datenhälfte behalten swap temp andi temp, 15 ;erste Hälfte behalten or temp2, temp st X+,temp2 cpi XAdresseLow, 160;Spalten Adresse > Max ? brne normal clr XAdresseLow ;Spalten Adresse = 0 inc Zeile cpi Zeile, 244 ;Zeilen Adresse in untere Displayhälfte ? brne normal ldi Zeile, 3 ;Zeile = Beginn XRAM cbr Spalte, 128 ldi XAdresseLow, 36 ;Startadresse -2*62, um Header vom BMP zu entfernen normal: cbi portd, XSCL ;MSB Spalten Adresse = Displayhälfte out sreg, r9 reti