' Fuer Pollin Display 16080 , nur Display, ohne Touch ' allu 10/2009 $regfile = "m8def.DAT" $crystal = 8000000 $baud = 19200 $hwstack = 64 $swstack = 256 $framesize = 84 'PortPins zum Display 16080 festlegen und initialisieren Daten_bus_out Alias Portb Daten_bus_in Alias Pinb Daten_ddr Alias Ddrb Auf_input_stellen Alias &H00 Auf_output_stellen Alias &HFF Bussy Alias 7 Control_bus Alias Portd Rs Alias 2 Rw Alias 3 E Alias 4 Cs Alias 6 R Alias 7 Pullups_ein Alias &HFF Config Daten_bus_out = Input Daten_bus_out = Pullups_ein Config Control_bus = Input Control_bus = Pullups_ein Config Control_bus = Output Reset Control_bus.e Accu_l Alias R0 Accu_h Alias R1 Bccu_l Alias R2 Bccu_h Alias R3 ' R4, R5, R6 und R8 verwendet von Bascom Zeile Alias R9 Spalte Alias R10 Zeichen Alias R11 'R21 Temp_1 Alias R18 Temp_2 Alias R19 Temp_3 Alias R20 Daten Alias R22 Befehl Alias R23 Cursor_l Alias R24 Cursor_h Alias R25 Dim Ticker As Byte Dim Locate_zeile As Byte ' 0 bis 79 = 80 Zeilen Dim Locate_spalte As Byte ' 0 bis 22 = 23 Spalten Dim Lcd_string As String * 23 ' Gibt Eingaben vim Display zurück Gosub Display_initialisieren ' Hier beginnt das Hauptprogramm Dim Temp_a As Byte Dim Temp_b As Byte Dim Temp_c As Byte Gosub Lcd_clear Locate_spalte = 0 For Temp_a = 0 To 11 Locate_zeile = Temp_a Lcd_string = "12" Gosub Lcd_write_string Next Temp_a Locate_spalte = 0 For Temp_a = 0 To 12 Step 4 Locate_zeile = Temp_a + 37 Lcd_string = "Hallo " Gosub Lcd_write_string Next Temp_a Locate_zeile = 63 Locate_spalte = 11 Lcd_string = "Viel Spass !" Gosub Lcd_write_string Locate_zeile = 72 Locate_spalte = 11 Lcd_string = "Gruss allu" Gosub Lcd_write_string Wait 5 Gosub Lcd_clear Locate_zeile = 30 Locate_spalte = 4 Lcd_string = "Alle vorhandenen" Gosub Lcd_write_string Locate_zeile = 50 Locate_spalte = 4 Lcd_string = "Zeichen anzeigen" Gosub Lcd_write_string Wait 3 Gosub Lcd_clear Temp_c = 0 For Temp_b = 0 To 70 Step 10 Locate_zeile = Temp_b Locate_spalte = 3 For Temp_a = 0 To 15 Lcd_string = Chr(temp_c) Incr Temp_c Gosub Lcd_write_string Next Temp_a Next Temp_b Do Loop 'Unterprogramme Display_initialisieren: ' GLcd im Grafikmode mit 23 Spalten initialisieren: Waitms 50 Reset Control_bus.r Waitus 50 Set Control_bus.r Waitms 10 Gosub Lcd_initialisieren Gosub Lcd_clear 'Für die zukünftigen Timer Config Timer0 = Timer , Prescale = 1024 Enable Timer0 Enable Interrupts On Ovf0 Tim0_isr 'enable the interrupt Return Tim0_isr: 'Vorbereitung für die Timer Incr Ticker If Ticker = 3 Then Ticker = 0 End If Return ' und hier gehts in Assembler weiter .... $asm Lcd_write_string: Loadadr Locate_zeile , X ' Zeilen 0 bis 70 möglich ld Accu_L, X ldi Temp_2, 24 mov Spalte, Temp_2 mov Accu_H, Temp_2 ' so rechnet der Controller mul Accu_L, Accu_H Loadadr Locate_spalte , X ' Spalte 0 bis 22 möglich ld cursor_L, X clr Cursor_H ' Position = Zeile*24 + Spalte add Cursor_L, Accu_L ADC Cursor_H, Accu_H Loadadr Lcd_string , X Lcd_write_string_10: ld Zeichen, X+ 'Zeichen laden und nächste Bufferadresse ldi Temp_3, &B0111_1111 !and Zeichen, Temp_3 'String zu Ende ? ' !and Zeichen, Zeichen 'String zu Ende ? breq LCD_Write_String_99 ldi Temp_3, 8 'Offset in TabChr berechnen mov Accu_L, Temp_3 clr Accu_H mul Accu_L, Zeichen '..Offset + Anfangsadresse von TabChr ldi ZL, low(TabChr *2) ldi ZH, high(TabChr *2) add ZL, Accu_L adc ZH, Accu_H rcall LCD_Write_Chr Loadadr Locate_spalte , Z ' auf die nächste Spalte ld Temp_2, Z inc Temp_2 st Z, Temp_2 'Malprogramm aufrufen rjmp LCD_Write_String_10 Lcd_write_string_99: ret Lcd_write_chr: mov Accu_L, Cursor_L mov Accu_H, Cursor_H adiw Cursor_L, 1 clr Zeile ldi Temp_1, 24 mov Spalte, Temp_1 ldi Temp_1, 8 Lcd_write_chr_10: ldi Befehl, &H0A mov Daten, Accu_L rcall Write_2_Byte ldi Befehl, &HB0B mov Daten, Accu_H rcall Write_2_Byte lpm Temp_3, Z+ ldi Temp_2, 10 Lcd_write_chr_20: rol Temp_3 'Zeichen wenden und D0-bündig ror Daten dec Temp_2 brne LCD_Write_Chr_20 brcc LCD_Write_Chr_30 ' Lücken schliessen ori Daten, &b01000000 Lcd_write_chr_30: ldi Befehl, &H0C rcall Write_2_Byte add Accu_L, Spalte adc Accu_H, Zeile dec Temp_1 brne LCD_Write_Chr_10 Lcd_write_chr_99: ret Lcd_clear: ldi Befehl, &H0A ldi Daten, 0 rcall Write_2_Byte ldi Befehl, &H0B ldi Daten, 0 rcall Write_2_Byte ldi Befehl, &H0C ldi Daten, &H00 ldi Temp_2, 10 Lcd_clear_10: ldi Temp_1, 200 Lcd_clear_20: rcall Write_2_Byte dec Temp_1 brne LCD_Clear_20 dec Temp_2 brne LCD_Clear_10 Lcd_clear_99: ret Lcd_initialisieren: ldi ZL, low(Init_gc_mode *2) ldi ZH, high(Init_gc_mode *2) lpm Temp_1, Z+ ' Schleifenzähler lpm Temp_1, Z+ ' Schleifenzähler Lcd_initialisieren_10: lpm Befehl,Z+ lpm Daten,Z+ rcall Write_2_Byte dec Temp_1 brne LCD_Initialisieren_10 Lcd_initialisieren_99: ret Write_2_byte: push Temp_1 cbi Control_Bus, CS 'Chip select aktivieren rjmp Write_2_Byte_20 Write_2_byte_10: cbi Control_Bus, E 'Enable-Puls beenden nop 'warten nop 'warten nop nop 'warten Write_2_byte_20: sbi Control_Bus, E 'Enable-Puls beginnt nop 'warten nop 'warten nop 'warten 'warten sbic Daten_Bus_in, Bussy 'Fertisch ? rjmp Write_2_Byte_10 nop cbi Control_Bus, E 'Enable-Puls beenden cbi Control_Bus, RW 'Write Signal aktivieren nop 'Register im Grafikcontroller auswählen ldi Temp_1,auf_Output_stellen 'Datenbus auf Ausgabe stellen !out Daten_ddr, Temp_1 '..und umschalten nop !out Daten_Bus_out, Befehl 'Befehl-Register auswählen sbi Control_Bus, E 'ins Befehl-Register schreiben nop 'warten nop nop nop nop nop 'warten cbi Control_Bus, E 'Enable-Puls beenden nop 'Mode-Temp_1 in Grafikcontroller schreiben cbi Control_Bus,RS !out Daten_Bus_out, Daten 'Mode-Temp_1 aufv Bus legen sbi Control_Bus, E 'ins Mode-Register schreiben nop 'warten nop nop nop nop 'warten nop '... und warten cbi Control_Bus, E 'Enable-Puls beenden nop 'Ruhepegel wieder herstellen sbi Control_Bus, CS 'Chip select deaktivieren ldi Temp_1,auf_Input_stellen 'Datenbus auf Input stellen !Out Daten_ddr , Temp_1 '..und umschalten sbi Control_Bus, RW 'Read Signal deaktivieren sbi Control_Bus, RS Write_2_byte_99: pop Temp_1 ret $end Asm End Init_gc_mode: Data &H00 , &H07 'Die nächsten 7 Data &H00 , &H12 'Befehle an GC senden Data &H01 , &H76 Data &H02 , &H17 Data &H03 , &H4F Data &H08 , &H00 Data &H09 , &H00 Data &H00 , &H32 ' $include "C:/Font_16080.asm" Tabchr: Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H00 Data &H00 , &H00 , &H00 , &H47 , &H00 , &H00 , &H00 , &H00 ' &H01 Data &H20 , &H20 , &H20 , &H1E , &H20 , &H20 , &H20 , &H00 ' &H02 Data &H00 , &H0A , &H1F , &H1F , &H1F , &H0E , &H04 , &H00 ' &H03 Data &H00 , &H04 , &H0E , &H1F , &H1F , &H0E , &H04 , &H00 ' &H04 Data &H04 , &H0E , &H0E , &H04 , &H1F , &H1F , &H04 , &H00 ' &H05 Data &H00 , &H04 , &H0E , &H1F , &H1F , &H04 , &H0E , &H00 ' &H06 Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H07 Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H08 Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H09 Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H0A Data &H00 , &H07 , &H03 , &H0D , &H12 , &H12 , &H0C , &H00 ' &H0B Data &H0E , &H11 , &H11 , &H0E , &H04 , &H0E , &H04 , &H00 ' &H0C Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H0D Data &H03 , &H0D , &H0B , &H0D , &H0B , &H1B , &H18 , &H00 ' &H0E Data &H00 , &H15 , &H0E , &H1B , &H0E , &H15 , &H00 , &H00 ' &H0F Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H10 Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H7F ' &H11 Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H7F , &H7F ' &H12 Data &H00 , &H00 , &H00 , &H00 , &H00 , &H7F , &H7F , &H7F ' &H13 Data &H00 , &H00 , &H00 , &H00 , &H7F , &H7F , &H7F , &H7F ' &H14 Data &H00 , &H00 , &H00 , &H7F , &H7F , &H7F , &H7F , &H7F ' &H15 Data &H00 , &H00 , &H7F , &H7F , &H7F , &H7F , &H7F , &H7F ' &H16 Data &H7F , &H7F , &H7F , &H7F , &H7F , &H7F , &H7F , &H7F ' &H17 Data &H04 , &H0E , &H1F , &H04 , &H04 , &H04 , &H04 , &H77 ' &H18 Data &H04 , &H04 , &H04 , &H04 , &H1F , &H0E , &H04 , &H7D ' &H19 Data &H00 , &H04 , &H06 , &H1F , &H06 , &H04 , &H00 , &H77 ' &H1A Data &H00 , &H04 , &H0C , &H1F , &H0C , &H04 , &H00 , &H7D ' &H1B Data &H00 , &H00 , &H00 , &H10 , &H10 , &H10 , &H1F , &H77 ' &H1C Data &H00 , &H0A , &H0A , &H1F , &H0A , &H0A , &H00 , &H7D ' &H1D Data &H04 , &H04 , &H0E , &H0E , &H1F , &H1F , &H00 , &H77 ' &H1E Data &H1F , &H1F , &H0E , &H0E , &H04 , &H04 , &H00 , &H7D ' &H1F Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H20 Data &H04 , &H0E , &H0E , &H04 , &H04 , &H00 , &H04 , &H00 ' &H21 Data &H1B , &H1B , &H12 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H22 Data &H00 , &H0A , &H1F , &H0A , &H0A , &H1F , &H0A , &H00 ' &H23 Data &H08 , &H0E , &H10 , &H0C , &H02 , &H1C , &H04 , &H00 ' &H24 Data &H19 , &H19 , &H02 , &H04 , &H08 , &H13 , &H13 , &H00 ' &H25 Data &H08 , &H14 , &H14 , &H08 , &H15 , &H12 , &H0D , &H00 ' &H26 Data &H0C , &H0C , &H08 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H27 Data &H04 , &H08 , &H08 , &H08 , &H08 , &H08 , &H04 , &H00 ' &H28 Data &H08 , &H04 , &H04 , &H04 , &H04 , &H04 , &H08 , &H00 ' &H29 Data &H00 , &H0A , &H0E , &H1F , &H0E , &H0A , &H00 , &H00 ' &H2A Data &H00 , &H04 , &H04 , &H1F , &H04 , &H04 , &H00 , &H00 ' &H2B Data &H00 , &H00 , &H00 , &H00 , &H00 , &H0C , &H0C , &H08 ' &H2C Data &H00 , &H00 , &H00 , &H1F , &H00 , &H00 , &H00 , &H00 ' &H2D Data &H00 , &H00 , &H00 , &H00 , &H00 , &H0C , &H0C , &H00 ' &H2E Data &H00 , &H01 , &H02 , &H04 , &H08 , &H10 , &H00 , &H00 ' &H2F Data &H0E , &H11 , &H13 , &H15 , &H19 , &H11 , &H0E , &H00 ' &H30 Data &H04 , &H0C , &H04 , &H04 , &H04 , &H04 , &H0E , &H00 ' &H31 Data &H0E , &H11 , &H01 , &H06 , &H08 , &H10 , &H1F , &H00 ' &H32 Data &H0E , &H11 , &H01 , &H0E , &H01 , &H11 , &H0E , &H00 ' &H33 Data &H02 , &H06 , &H0A , &H12 , &H1F , &H02 , &H02 , &H00 ' &H34 Data &H1F , &H10 , &H10 , &H1E , &H01 , &H11 , &H0E , &H00 ' &H35 Data &H06 , &H08 , &H10 , &H1E , &H11 , &H11 , &H0E , &H00 ' &H36 Data &H1F , &H01 , &H02 , &H04 , &H08 , &H08 , &H08 , &H00 ' &H37 Data &H0E , &H11 , &H11 , &H0E , &H11 , &H11 , &H0E , &H00 ' &H38 Data &H0E , &H11 , &H11 , &H0F , &H01 , &H02 , &H0C , &H00 ' &H39 Data &H00 , &H00 , &H0C , &H0C , &H00 , &H0C , &H0C , &H00 ' &H3A Data &H00 , &H00 , &H0C , &H0C , &H00 , &H0C , &H0C , &H08 ' &H3B Data &H02 , &H04 , &H08 , &H10 , &H08 , &H04 , &H02 , &H00 ' &H3C Data &H00 , &H00 , &H1F , &H00 , &H00 , &H1F , &H00 , &H00 ' &H3D Data &H08 , &H04 , &H02 , &H01 , &H02 , &H04 , &H08 , &H00 ' &H3E Data &H0E , &H11 , &H01 , &H06 , &H04 , &H00 , &H04 , &H00 ' &H3F Data &H0E , &H11 , &H17 , &H15 , &H17 , &H10 , &H0E , &H00 ' &H40 Data &H0E , &H11 , &H11 , &H11 , &H1F , &H11 , &H11 , &H00 ' &H41 Data &H1E , &H11 , &H11 , &H1E , &H11 , &H11 , &H1E , &H00 ' &H42 Data &H0E , &H11 , &H10 , &H10 , &H10 , &H11 , &H0E , &H00 ' &H43 Data &H1E , &H11 , &H11 , &H11 , &H11 , &H11 , &H1E , &H00 ' &H44 Data &H1F , &H10 , &H10 , &H1E , &H10 , &H10 , &H1F , &H00 ' &H45 Data &H1F , &H10 , &H10 , &H1E , &H10 , &H10 , &H10 , &H00 ' &H46 Data &H0E , &H11 , &H10 , &H17 , &H11 , &H11 , &H0F , &H00 ' &H47 Data &H11 , &H11 , &H11 , &H1F , &H11 , &H11 , &H11 , &H00 ' &H48 Data &H0E , &H04 , &H04 , &H04 , &H04 , &H04 , &H0E , &H00 ' &H49 Data &H01 , &H01 , &H01 , &H01 , &H11 , &H11 , &H0E , &H00 ' &H4A Data &H11 , &H12 , &H14 , &H18 , &H14 , &H12 , &H11 , &H00 ' &H4B Data &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H1F , &H00 ' &H4C Data &H11 , &H1B , &H15 , &H11 , &H11 , &H11 , &H11 , &H00 ' &H4D Data &H11 , &H19 , &H15 , &H13 , &H11 , &H11 , &H11 , &H00 ' &H4E Data &H0E , &H11 , &H11 , &H11 , &H11 , &H11 , &H0E , &H00 ' &H4F Data &H1E , &H11 , &H11 , &H1E , &H10 , &H10 , &H10 , &H00 ' &H50 Data &H0E , &H11 , &H11 , &H11 , &H15 , &H12 , &H0D , &H00 ' &H51 Data &H1E , &H11 , &H11 , &H1E , &H12 , &H11 , &H11 , &H00 ' &H52 Data &H0E , &H11 , &H10 , &H0E , &H01 , &H11 , &H0E , &H00 ' &H53 Data &H1F , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H00 ' &H54 Data &H11 , &H11 , &H11 , &H11 , &H11 , &H11 , &H0E , &H00 ' &H55 Data &H11 , &H11 , &H11 , &H11 , &H11 , &H0A , &H04 , &H00 ' &H56 Data &H11 , &H11 , &H15 , &H15 , &H15 , &H15 , &H0A , &H00 ' &H57 Data &H11 , &H11 , &H0A , &H04 , &H0A , &H11 , &H11 , &H00 ' &H58 Data &H11 , &H11 , &H11 , &H0A , &H04 , &H04 , &H04 , &H00 ' &H59 Data &H1E , &H02 , &H04 , &H08 , &H10 , &H10 , &H1E , &H00 ' &H5A Data &H0E , &H08 , &H08 , &H08 , &H08 , &H08 , &H0E , &H00 ' &H5B Data &H00 , &H10 , &H08 , &H04 , &H02 , &H01 , &H00 , &H00 ' &H5C Data &H0E , &H02 , &H02 , &H02 , &H02 , &H02 , &H0E , &H00 ' &H5D Data &H04 , &H0A , &H11 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H5E Data &H00 , &H00 , &H00 , &H00 , &H60 , &H60 , &H7F , &H00 ' &H5F Data &H0C , &H0C , &H04 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H60 Data &H00 , &H00 , &H0E , &H01 , &H0F , &H11 , &H0F , &H00 ' &H61 Data &H10 , &H10 , &H1E , &H11 , &H11 , &H11 , &H1E , &H00 ' &H62 Data &H00 , &H00 , &H0E , &H11 , &H10 , &H11 , &H0E , &H00 ' &H63 Data &H01 , &H01 , &H0F , &H11 , &H11 , &H11 , &H0F , &H00 ' &H64 Data &H00 , &H00 , &H0E , &H11 , &H1E , &H10 , &H0E , &H00 ' &H65 Data &H06 , &H08 , &H08 , &H1E , &H08 , &H08 , &H08 , &H00 ' &H66 Data &H00 , &H00 , &H0F , &H11 , &H11 , &H0F , &H01 , &H0E ' &H67 Data &H10 , &H10 , &H1C , &H12 , &H12 , &H12 , &H12 , &H00 ' &H68 Data &H04 , &H00 , &H04 , &H04 , &H04 , &H04 , &H06 , &H00 ' &H69 Data &H02 , &H00 , &H06 , &H02 , &H02 , &H02 , &H12 , &H0C ' &H6A Data &H10 , &H10 , &H12 , &H14 , &H18 , &H14 , &H12 , &H00 ' &H6B Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H06 , &H00 ' &H6C Data &H00 , &H00 , &H1A , &H15 , &H15 , &H11 , &H11 , &H00 ' &H6D Data &H00 , &H00 , &H1C , &H12 , &H12 , &H12 , &H12 , &H00 ' &H6E Data &H00 , &H00 , &H0E , &H11 , &H11 , &H11 , &H0E , &H00 ' &H6F Data &H00 , &H00 , &H1E , &H11 , &H11 , &H11 , &H1E , &H10 ' &H70 Data &H00 , &H00 , &H0F , &H11 , &H11 , &H11 , &H0F , &H01 ' &H71 Data &H00 , &H00 , &H16 , &H09 , &H08 , &H08 , &H1C , &H00 ' &H72 Data &H00 , &H00 , &H0E , &H10 , &H0E , &H01 , &H0E , &H00 ' &H73 Data &H00 , &H08 , &H1E , &H08 , &H08 , &H0A , &H04 , &H00 ' &H74 Data &H00 , &H00 , &H12 , &H12 , &H12 , &H16 , &H0A , &H00 ' &H75 Data &H00 , &H00 , &H11 , &H11 , &H11 , &H0A , &H04 , &H00 ' &H76 Data &H00 , &H00 , &H11 , &H11 , &H15 , &H1F , &H0A , &H00 ' &H77 Data &H00 , &H00 , &H12 , &H12 , &H0C , &H12 , &H12 , &H00 ' &H78 Data &H00 , &H00 , &H12 , &H12 , &H12 , &H0E , &H04 , &H18 ' &H79 Data &H00 , &H00 , &H1E , &H02 , &H0C , &H10 , &H1E , &H00 ' &H7A Data &H06 , &H08 , &H08 , &H18 , &H08 , &H08 , &H06 , &H00 ' &H7B Data &H04 , &H04 , &H04 , &H00 , &H04 , &H04 , &H04 , &H00 ' &H7C Data &H0C , &H02 , &H02 , &H03 , &H02 , &H02 , &H0C , &H00 ' &H7D Data &H0A , &H14 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H7E Data &H04 , &H0E , &H1B , &H11 , &H11 , &H1F , &H00 , &H00 ' &H7F