Code:
' Fuer Pollin Display 16080 , nur Display, ohne Touch
' allu 10/2009
$regfile = "m168def.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
Gosub Lcd_clear
Do
Locate_zeile = 1
Locate_spalte = 1
Lcd_string = "ABCDEFGHIJKLMNOPQRST"
Gosub Lcd_write_string
Locate_zeile = 72
Locate_spalte = 11
Lcd_string = "Gruss allu"
Gosub Lcd_write_string
Locate_zeile = 48
Locate_spalte = 25
Lcd_string = "123456789"
Gosub Lcd_write_string
Wait 5
Gosub Lcd_clear
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 , &H27 , &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
Danke Kollimann
Lesezeichen