Siemens Logo wird nicht programmiert, bestenfalls fast and dirty zusammengeschustert ... mit programmierung hat das nicht viel zu tun, zumindest nicht mit AVRs, die sind nmämlich ungleich mächtiger und auch felxibler einsetzbar. Das hat aber halt den Nachteil, dass man sich für die Programmierung mehr Zeit lassen muss und sich mit der Programmierung auch mehr auseinander setzen muss, damit das auch zuverlässig funktioniert.
Der erste Tip ... verabschiede dich von GOTO ... es gibt nur sehr sehr wenige Fälle, in denen Goto sinnvoll eingesetzt werden kann und sollte.
Für den Unterprogramm - Aufruf gibts Gosub und Return, bzw. Call.
Dann gibts da auch schöne Übergabe-Parameter, die sich, sinnvoll verwendet, deutlich auf die Codegröße und somit auf die Ausführungsgeschwindigkeiten auswirken.
Das nächste ist, lad dir mal das Datenblatt des verwendeten Bausteins runter auf die Platte. Das kann viele Unklarheiten schnell aufklären. Z.B. was ist UDR ... im PDF gesucht sieht man sofort, USART Data Register.
Dann überleg Dir mal ein systematisches Protokoll, das man auch "automatisieren" kann ... "!BA1" bis "!CC3" hat kein logisches System ...
einfacher wärs "!set1", "!set2", "!set3", etc. das kann man dann schön auf pinb.0, pinb.1 etc. beziehen und man kann mit 1/10 Code arbeiten.
> Was ich nicht verstehe ist wie der Aktor die Zeichenkette empfängt ?
tja, das ist auch etwas konfus zu erklären ... urxc ist der interrupt, der bei empfangenem zeichen ausgelöst wird. der Haken ist, du liest das UDR-Register aus, das hat aber nur EINEN Wert, keinen String, sondern ein ASCII Zeichen. Dann wandelst DU diesesn Zeichenwert in einen String um mit CHR (Character). Das bedeutet, Du hat als String (S) ein Zeichen, keine Zeichenkette ... Da Du aber die Zeichen nicht anreihst wird die Zeichenkette 100 (3 Zeichen) nie erreicht.
Der Anhang ist dran, als zip-File, musst aber eingeloggt sein um den ziehen zu können.
Lesezeichen