www.mikrocontroller.net

Forum: Projekte & Code BASIC-Apfelmännchen mit ATmega168


Autor: Ralf Rosenkranz (voltax)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

dies ist nun noch ein Posting für die Rubrik "Hallo, ich habe auch ein 
Basic". Aber ich hoffe, dass das Thema doch noch den ein oder anderen 
interessiert. Jedenfalls habe ich in den letzten Wochen mein 
Mini-Java-BASIC nach C für den ATmega168 portiert. Es ist zwar noch 
nicht wirklich fertig, und es kennt auch nur ein paar wenige Befehle, 
aber ich kann schonmal etwas zeigen, nämlich ein Apfelmännchen-Programm, 
das ein ebensolches mit Buchstabengrafik an ein Terminalprogramm sendet.

Unten ist das Basic-Programm gelistet,
und gelaufen ist es auf einem Prototype Board von embedit.de,
mit einem 18,432 MHz Quarz
und die Baudrate ist 9600,8,n,1
und oben kann man die HEX-Files downloaden (Flash und EEPROM)
wo schon das Apfel-BASIC-Programm drin ist.

(Vielleicht hat ja einer ein ähnliches Board, und möchte das 
Apfelmännchen mal ausprobieren, über Feedback würde ich mich freuen)

Später werde ich wahrscheinlich (sofern Interesse besteht) ein paar 
Teile aus dem Programm veröffentlichen, zB. die Fixpoint-Arithmetic 
(float war leider zu fett für mein BASIC). Das Basic-Programm wird 
übrigens im Flash gespeichert, woduch man ungefähr 2 KB Programmspeicher 
frei hat (puh das war kniffelig). Die Kontrollstrukturen für die 
BASIC-Zeilen liegen im EEPROM. Man kann etwas über 100 BASIC-Zeilen 
schreiben, und die Zeilennummern liegen zwischen 1 und 999. Und der 
Expression-Parser beherrscht Punkt-Vor-Strich-Rechnung und falls noch 
genug Platz im RAM ein bis drei Klammerebenen. Variablenbezeichner sind 
"a"-"z" und man kann in den Variablen Fixpointzahlen oder kleine Strings 
(max 20 Zeichen) ablegen. Bisher sind folgende Befehle implementiert: 
"LET", "IF", "THEN", "GOTO", "REM", "PRINT", "INPUT", "LIST", "END", 
"RUN", "NBPRINT", und die Operatoren + - * / = < > ; NOT

nundenn, vielleicht ists ja doch interessant, und wahrscheinlich gehts 
mit dem Projekt noch ein Stück weiter, mit der Version 1.00 kommt dann 
noch eine kleine Homepage.

das wars,
Grüße Ralf
001 rem Apfel.bas
002 rem ---------
100 c=0
110 l=" "
120 rem LOOP1START
130 e=1.1
140 rem LOOP1
150 if e<-1.2 then 570
160 if e=-1.2 then 570
170 rem LOOP2START
180 b=-2
190 rem LOOP2
200 if b>0.96 then 540
220 r=0
230 n=0
240 rem LOOP3START
250 h=128
260 rem LOOP3
270 if r*r+n*n>3.990 then 340
280 h=h-1
290 if h<33 then 340
300 d=r
310 r=r*r-n*n+b
320 n=2*d*n+e
330 goto 260
340 rem LOOP3END
400 rem CHAR
410 j=" "
430 if h<64 then 490
440 j="*"
441 if h<96 then 490
442 j="O"
443 if h<112 then 490
444 j="H"
445 if h<120 then 490
446 j="x"
447 if h<124 then 490
448 j="="
449 if h<126 then 490
450 j="-"
451 if h<127 then 490
452 j="+"
490 rem l=l;j
491 nbprint j
520 b=b+0.04
530 goto 190
540 rem LOOP2END
542 print l
544 l=" "
550 e=e-0.1
560 goto 140
570 rem LOOP1END

  

Autor: Ralf Rosenkranz (voltax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ooch, ... schade kein Feedback :((
naja, HEX-Files sind vielleicht auch nicht so spannend.

Den Sourcecode kann ich aber erst später irgendwann einmal 
veröffentlichen, momentan sind einfach noch zu viele Baustellen und Bugs 
drin. Aus den Downloadzahlen des HEX-Files schließe ich mal, dass doch 
eventuell ein gewisses Interesse an meinem AVRFlashBasic besteht, also 
werde ich mal weitermachen.

Falls das x-te BASIC hier aber nun keiner mehr sehen will, dann sind 
aber eventuell ein paar spannende Teilprojekte darin enthalten, und da 
mache ich jetzt schonmal Werbung für:
- zeilenorientierte Datenspeicherung im Flash (als Ringpuffer),
- schnelle und platzsparende Fixpoint-Arithmetik,
- naja und halt ein BASIC-Interpreter, alles in C geschrieben.

Oder ist das alles langweilig? Dann sagts bitte. Würde mir einiges an 
Mühe sparen.

Grüße Ralf

Autor: SIGINT112 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Ralf,
  das was ich gesehen habe sieht schonmal interesannt aus. Ein Problem 
ist aber eventuell, daß du einen ATmega168 verwendest... der dürfte 
weniger verbreitet sein als z.B. der ATmega8 oder ATmega16. Ich hab 
leider keinen passenden AVR um dein Programm zu testen und kann deshalb 
wenig darüber sagen. An einem kleinen BASIC-Interpreter hab ich aber 
immer interesse... sowas wie das 8051-Basic für den AVR wäre echt super. 
Aber im Moment hoffe ich auf folgendes Projekt:
Beitrag "Mini-Computer mit BASIC"
Wenn die 20 Zeilen beschränkung fällt und externes EEPROM unterstüzt 
wird, dann wäre das echt ein Traum.
Wenn ich aber irgendwann einen passenden AVR habe, dann werd ich dein 
BASIC auch mal auf Herz und Nieren prüfen. Also nicht vom Weg abbringen 
lassen und einfach weiterproggen.... irgendwann werden die Leute auf 
dein Projekt aufmerksam.

Gruß,
  SIGINT

Autor: Ralf Rosenkranz (voltax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo SIGINT,

... das klingt ja ganz ermutigend :)

Wegen ATmega168: Ich habe nur den einen, aber ich kanns ja heute abend 
einfach mal für ein oder zwei andere Typen compilieren und uploaden. 
Muss aber einer mit wenigstens 16kB Flash sein, und 512 Byte Ram. Was 
für einen AVR hättest Du denn da, und mit wieviel MHZ läuft der?

Ich kann für einen anderen Processor kein HEX-File mit fertig 
einprogrammiertem Basic-Programm machen. Das müsstest Du dann noch per 
Terminalprogramm übertragen. (9600Baud, 8, n, 1, Xon/Xoff Protokoll, 
plus einige zehn ms Delay nach jedem Zeichen, ist zumindest bei 
Hyperterm nötig).

>auf Herz und Nieren

Du wirst vermutlich noch reichlich Bugs finden. Und das Apfelmännchen 
ist auch ein bischen grumpelig, was vermutlich an der zwangsweise 
geringen Genauigkeit meiner Fixpoint-Zahlen liegt (nur 10 Bit für die 
Nachkommastellen). Aber immerhin kommt etwas heraus, was ungefähr so wie 
ein Apfelmännchen aussieht ;)

jo, dann bis dann, Grüße Ralf

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ralf Rosenkranz wrote:
>
> Oder ist das alles langweilig?

Überhaupt nicht!

Nur. Na ja. Im Moment hab ich keinen Bedarf danach.

Allerdings würden mich die Abfallprodukte die
du da hast durchaus interessieren.

Autor: SIGINT112 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Ralf,
  im Moment hab ich nur ATmega8, ATtiny2313,ATtiny13 und einen AT90S8515 
da... mehr als 8kiB Flash hab ich bis jetzt noch nicht benötigt,da ich 
gerade mit AVRs anfange. [Ich brauch für alles etwas länger ;-) ]
In einigen Wochen wollte ich aber was bei Reichelt bestellen... da 
besorg ich mir dann mal nen größeren AVR und teste dein Basic.

Gruß,
  SIGINT

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.