Forum: Mikrocontroller und Digitale Elektronik Hilfe in der Umsetzung ASM in Bascom


von Avr N. (avrnix) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

im Thread Beitrag "Einfacher Low Cost LCD Controller für 320x240 LCD im Textmodus"

hat Benedikt eine Textausgabe im Assembler gemacht, diese ASM wollte ich 
in Bascom übertragen. Soweit habe ich das fertig gestellt, aber es gibt 
keine Ausgabe.

Da ich nicht unbedingt fit bin in ASM würde ich mich freuen wenn jemand 
der in Bascom und ASM auskennen würde und mir Tips bzw. die Fehler 
aufzeigen könnte.

Das Programm soll nur den Zeichensatz er am Anfang erscheint ausgeben, 
später soll dann der Eigene Text im Speicher sein ( Dim Zei As String * 
40 At &H200 )

Ich stehe erst am Anfang, obwohl die Umsetzung eigentlich gehen sollte, 
muss ich was übersehen haben, daher bitte ich um Hilfe.

In der Simulation sieht es gut aus und Arbeit ähnlich wie bei Benedikts 
asm Code.

Was habe ich Übersehen?

Anbei die BAS Datei und ASM Datei von Benedikt.

Danke für die Anregungen.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Keiner eine Anregung zum Thema?

von GastTX (Gast)


Lesenswert?

Hallo ,

du kannst auch ein .ORG 512 einbauen vor Data und statt const .equ 
nehmen.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Jo hilft mir schon weiter -> Bloss die Adresse des zeichensatzes beginnt 
jetzt bei 1050 statt bei 1024 :(

von Hannes L. (hannes)


Lesenswert?

Warum versuchst Du nicht einfach mal, ein bissel ASM zu lernen?
Der AVR kann kein BASCOM und der wird es auch nicht lernen. ;-)

Um in BASCOM oder C dasselbe zu erreichen wie Benedikt in ASM, musst Du 
BASCOM oder C und ASM schon verdammt gut beherrschen.

Alternativ kannst Du Benedikts Programm unbesehen (und unverstanden) in 
einen Mega8 flashen und von einem anderen AVR (auch unter BASCOM) den 
Text über UART an den Mega8 senden. Sieh den Mega8 einfach als 
"LCD-Controller".

...

von Hannes L. (hannes)


Lesenswert?

Achja, der Zeichensatz muss exakt bei einer Pagegrenze beginnen. Und die 
muss mit den Konstanten im Programm (Pointer auf Startzeile setzen, 
Pointer auf Endzeile prüfen) übereinstimmen.

...

von Frank L. (hermastersvoice)


Lesenswert?

und dann gibts noch die Möglichkeit ASM in BASCOM einzubinden. Wollts 
nur mal erwähnt haben.

bye

Frank

von Avr N. (avrnix) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich fange auch an ASM zu lernen :) und den Code von benedikt habe ich 
studiert .
Durch die Eigenarten von Bascom ist es nicht so einfach 1:1 umzusetzen 
auch die Hilfe (Mix ASM in Bascom ) habe ich gelesen.



Pagesize -> Wie setze ich den Pointer richtig ?

Anbei mein Aktuellen Code und paar Register geändert damit das zu Bascom 
kompatibel ist.

von Hannes L. (hannes)


Lesenswert?

Na ob Benedikts Codes das Richtige zum Lernen für Einsteiger ist, wage 
ich zu bezweifeln. Gut, den LCD-Code habe ich mir noch nicht angesehen, 
dafür aber den Code für die Textausgabe (25 Zeilen zu 40 Zeichen) für 
den TV, aus dem ich die Anregung für mein OSD-Projekt für ATV gefunden 
habe.

Beide Codes dürften sich in punkto Zeitknappheit nicht allzuviel nehmen. 
Auch der Umgang mit dem Charset dürfte recht ähnlich sein. Das Ganze ist 
halt nur mit ziemlich effizienter ASM-Programmierung erreichbar, bei der 
alle oft genutzten Variablen in Registern gehalten werden müssen um das 
Tempo zu schaffen. BASCOM hält seine Variablen aber grundsätzlich im 
RAM.

Verzichte bei diesem Projekt auf BASCOM und nimm es wie es ist oder 
arbeite in ASM im AVR-Studio.

...

von GastTX (Gast)


Lesenswert?

Das kritische Timeming ist HLOOP und ich gebe jetzt nicht die 800 
Zeichen, sondern erstmal die hälfte aus, Aufgrund das Bascom die 
Variabeln im Speicher vorhält.

Ich nehme Bascom, wenn die die Ausgabe steht ,da ich paar Sub Proggen 
möchte.
Vielleicht könnte sich das jemand das Programm Anschauen, vielleicht 
sind ja nur paar kleine Fehler drin die ich übersehen habe, vielleicht 
geht's dann.

Habe schon viel gelernt und umgesetzt, war auch schwierig durch 
Benedikts Code Durchzusteigen, aber der Kern die HLOOP Schleife ist die 
Ausgabe und die habe ich nur bei mir eingebaut. Ab Adresse H200 steht 
die ASCII Zeichen die Ausgegeben werden sollen.

Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.