Moin ok
geb mal nen bisherigen Sachstand bitte denn laufen so richtig tuts ja noch nicht oder???
Hi,
danke ich werde mal deine Rat befolgen....
Moin ok
geb mal nen bisherigen Sachstand bitte denn laufen so richtig tuts ja noch nicht oder???
Hallo,
also immer noch hats sich nichts getan.. Ich habe einiges an meinem Code verändert und trotzdem sehe ich nichts...
Ich gucke mall weiter und probiere bis etwas am LCD ausgegeben wird..
OK Poste mal bitte als Zip Datei den kompletten Quellcode denn schau ich mal drüber. Dann umgehen wir auch gleich das Problem mit der CodeFormatierung hier im Forum... erstmal...
Hi,
der veränderte Code ist im Anhang als Zip-Datei beigefügt...Ich gehe davon aus, dass dieses Mal der Code keine Fehler enthält...
Hey ho,
AAAALLLSSSOOOO du weißt gar nicht wie knapp du vor dem Ziel bist!!!!!!!!!!!!!!!!!!!!!!!!
Dein Problem ist das Verständniss wie man die 8Bit-Ansteuerung in eine 4bit-Ansteurung umwandelt und welche Daten als erstes übermittelt werden müssen,
damit sich das 2x4Bit-Word zu 1x8BitWord zusammensetzt.
Problem ist in den Unterroutinen des
LCD-Command
LCD-Data
zu suchen.
In der ZIP findest du die modifizierte Variante, beide mal mit einander vergleichen und durchsimulieren was da passiert und wo genau der Unterschied liegt.
Dein zusätzliches Problem ist das Grundverständiss vom Aufbau eines Programmes in ASM und wann man wie welche CALL'S oder xJUMPS man nutzt.
Am besten hier mal nachlesen und verstehen
http://www.avr-asm-tutorial.net/avr_de/index.html
Probiers mal aus und bei Problemen einfach durchschreiben....
Hallo,
ich hätte gerade noch eine Verständnisfrage zur LCD_Data ( LCD_Command).. Ich habe Kommentare eingefügt und würde gerne wissen ob diese richtig sind.
LCD_DATA
mov mp2, mp1
andi mp1, 0b11110000 ; untere Nibble auf Null gesetzt
sbr mp1, 1<<lcd_rs ;RS auf H setzen
out lcd_port, mp1 ;Ausgabe obere Nibble (1111)
rcall lcd_enable
swap mp2 ;vertauschen der 4 höherwertigen Bits mit den 4 niederwertigen bits (entspricht 00001111)
andi mp2, 0b11110000 ;obere Nibble auf Null setzen
sbr mp2, 1<<lcd_rs ;RS auf L setzen
out lcd_port, mp2 ; Ausgabe der unteren Nibble ( entspricht 1111)
rcall lcd_enable
rcall delay50us
ret
Kommt noch die Frage zu LCD DATA/COMMAND oder bezieht sich das auf die Kommentare??? 0.o
Kommentare sind soweit in Ordnung
geb mal Sachstand wie weit du bist!Code:LCD_DATA: mov mp2, mp1 andi mp1, 0b11110000 ; untere Nibble auf Null gesetzt << ok sbr mp1, 1<<lcd_rs ;RS auf H setzen << ok out lcd_port, mp1 ;Ausgabe obere Nibble (1111) << ok rcall lcd_enable swap mp2 ;vertauschen der 4 höherwertigen Bits mit den 4 niederwertigen bits (entspricht 00001111) <<joar optimaler: vertauschen der des High und Low-Nibble andi mp2, 0b11110000 ;obere Nibble auf Null setzen << ok sbr mp2, 1<<lcd_rs ;RS auf L setzen << falsch auch hier RS wird zu 1 out lcd_port, mp2 ; Ausgabe der unteren Nibble ( entspricht 1111) << ok rcall lcd_enable rcall delay50us ret
Enthält lcd_enable eine kurze Wartezeit zwischen setzen und löschen der enable-Leitung?
Der enable-Puls darf nicht beliebig kurz sein.
Lesezeichen