;**************************************************************************** ;* * ;* LCD Controller für 4Graustufen (nach Benedikt) * ;* * ;**************************************************************************** ; .NOLIST .INCLUDE "m162def.inc" .LIST .def Null =r1 .def Fuellung =r15 ;Füllfarbe .def temp =r16 .def temp1 =r17 .def temp2 =r18 .def YCnt =r19 ;Zeilenzähler ;Takt .equ F_CPU =16000000 ;Framerate .equ F_rate =85 ;LCD_Pixel .equ XSize =320 ;Bildgröße in X Richtung in Pixel .equ YSize =240 ;Bildgröße in Y Richtung pro Bild .equ XOScan =0 ;Anzahl der zusätzlich auszugebenden Bytes in X Richtung .equ YOScan =0 ;Anzahl der zusätzlich auszugebenden Zielen in Y Richtung .equ GrayCnt =3 ;ext. RAM .equ YMin =5 ;ext. Speicher beginnt ab 10100000000 = 0x500 .equ YMax =YMin+YSize .equ YScan =YMin+YSize+YOScan ;Endadresse bei der Bildausgabe in Y Richtung .equ Reload =(F_CPU/8/(F_rate*(YSize+YOScan)))-1;Wert für Timer: Timertakt/Zeilenfrequenz-1 ;PortD .equ CKDIS =3 ;CLK disable .equ FLM =4 ;VSync .equ LP =5 ;HSync ;**************************************************************************** ; Interrupt Vektoren ;**************************************************************************** .cseg .org 0 rjmp Reset .org OC0addr rjmp LCD_int ;**************************************************************************** Reset: ldi temp, LOW(RAMEND) out SPL, temp ;setup stack pointer ldi temp, HIGH(RAMEND) out SPH, temp ;setup stack pointer clr Null LCD_Init: ldi temp, 0x03 ;PIN 0(RXD) und 1(NC) auf Pullup bzw. 1 out PORTD, temp ldi temp, 0xFE ;nur PIN 0(RXD) auf Eingang out DDRD, temp ldi temp, 0xFF out DDRB, temp ;alles Ausgang out DDRE, temp ;alles Ausgang out PORTA, temp ;Pullup out PORTC, temp ;Pullup cli ldi temp, (1<