PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LED-Laufzeile für Text/Grafiken



Madgyver
10.05.2006, 16:01
So, jetzt mal mein erstes Projekt, dass ich in Assembler geschrieben hab, so um mal ein bischen zu üben. Die 8xLED Zeile ist an PortB eines alten 2313 angeschlossen und gibt mit 1/100 Sekunde Verzögerung einzelne Reihen des Textes/ der Grafik aus. Der µC läuft dabei auf 8Mhz, das ist aber glaube niet so wichtig.

Bewegt man die Zeile schnell Seitwärts, erscheint die Illusion eines Grafik-Displays.

Hier ist das Logo der TU-München zu sehen.
http://madgyver.roboterbastler.de/content/images/ebc9cc897d41109904e2452db49d0143.jpg

http://madgyver.roboterbastler.de/content/images/0d59fdacd1a5aa2dfdc96f36f978c5dd.jpg


Der Quellcode ist derbst dümmlich geschrieben, und ist ja eigentlich nicht wirklich so schwer. Ich hab halt noch nie in Assembler gecoded.
Später wird das ganze ne Engine enthalten, die Text / Grafik automatisch umwandelt und mit einer schnittstelle (IR) zum neu texten.

Felixx87
10.05.2006, 17:54
Hey

sieht klasse aus! aber könntest du vl. das ganze auch mal in "ruhe" Position fotografieren? wär vl. net schlecht ;)

und wie schaut denn dein "dümmlich geschriebener" Quelltext aus? würde mich mal so interessieren da ich grade son bisschen an Assembler verzweifel :(

ich würde mich freun.

MFG Felix

Madgyver
10.05.2006, 18:01
Hier in Ruhe. Die Leds sind so schnell, dass man nicht sieht wie sie leuchten.

http://madgyver.roboterbastler.de/content/images/1d7b960d8b20d41a6c2529d468c54550.jpg



;************************************************* *********
.include "2313def.inc" ; Definitionen für AT90S2323
.org 0x000 ; kommt ganz an den Anfang des Speichers
rjmp RESET ; Reset Handle
;************************************************* *********

RESET:
.def temp = r16 ; temp als Universalregister definieren

ldi temp,low(RAMEND) ; Stackpointer initialisieren
out SPL,temp
ser temp ; temp = FF
out DDRB,temp ; Datenrichtungsregister für Port B auf Ausgang schalten





Text:

ldi temp, $C0
out PORTB,temp
rcall wait
ldi temp, $FF
out PORTB,temp
rcall wait
ldi temp, $C0
out PORTB,temp
rcall wait
ldi temp, $FF
out PORTB,temp
rcall wait
ldi temp, $03
out PORTB,temp
rcall wait
ldi temp, $FF
out PORTB,temp
rcall wait
ldi temp, $C0
out PORTB,temp
rcall wait
ldi temp, $FF
out PORTB,temp
rcall wait
ldi temp, $C0
out PORTB,temp
rcall wait
ldi temp, $FF
out PORTB,temp
rcall wait
ldi temp, $00
out PORTB,temp
rcall wait
rcall wait
rjmp Text




wait:

; =============================
; Warteschleifen-Generator
; 80000 Zyklen:
; -----------------------------
; warte 79998 Zyklen:
ldi R17, $86
WGLOOP0: ldi R18, $C6
WGLOOP1: dec R18
brne WGLOOP1
dec R17
brne WGLOOP0
; -----------------------------
; warte 2 Zyklen:
nop
nop
; =============================
ret

CowZ
10.05.2006, 18:12
Schick :) Das ganze jetzt noch auf einen Rotor bauen und fertig is die Propellerclock ;)

Gruß, CowZ