Forum: FPGA, VHDL & Co. Probleme bei Programm


von brooklyn (Gast)


Lesenswert?

Hallo!

Fange gerade an mit dem AVR Studio zu spielen und habe mir das Tutorial
schon angesehen, nun habe ich folgendes Programm, was ich gerne
programmieren würde, aber ich bekomms einfach nicht hin.

Programmiere im AVR Studio mit Assembler. Die Codierung der Taster
nehme ich binär vor!

Das Programm soll folgendes können! Jedes Programm einzeln hatte ich
schon am Laufen!

H0=S0 and S1
H1=S2 and not S3 and S4

Das Programm soll beides gleichzeitig können, also in einem programm
verpackt.

Hoffe ihr könnt mir dabei helfen!
Schön wäre nen Assembler-Code (vielleicht mit Kommenatren!?!) an dem
ich es mir dann selber erklären könnte!

Gruß und besten dank im Vorraus!

von brooklyn (Gast)


Lesenswert?

Hier mal mein bisheriger Assembler Code


.include "8515def.inc"


ldi r16, 0x01
Out ddrc, r16


loop1:
in r16, pina
andi r16, 0b00011100
cpi r16,  0b00001000
breq led_ein1
sbi portc, 0
rjmp loop1

led_ein1:
cbi portc, 0
rjmp loop1



loop2:
in r16, pina
cpi r16, 0b11111100
breq led_ein2
cbi portc, 0
rjmp loop2

led_ein2:
sbi portc, 0
rjmp loop2

von Lars Lochmann (Gast)


Lesenswert?

org 0x00
rjmp main


main:
rcall loop1
rcall loop2
rjmp main

loop1:
...
...
ret     ;statt rjmp loop1

...
ret     ;statt rjmp loop1


loop2:
...
...
ret     ;statt rjpm loop2

...
ret     ;statt rjmp loop2

Ich denke so könnte es gehen. Und nimm für dein primitives Projekt nen
ordentlichen MC z.B. Attiny2313 oder Mega8, Mega16....

von brooklyn (Gast)


Lesenswert?

so???


.include "8515def.inc"

ldi r16, 0x01
Out ddrc, r16

main:
rcall loop1
rcall loop2

rjmp main

loop1:

in r16, pina
andi r16, 0b00011100
cpi r16,  0b00001000
breq led_ein1
sbi portc, 0

ret     ;statt rjmp loop1

led_ein1:
cbi portc, 0
rjmp loop1
ret     ;statt rjmp loop1


loop2:
in r16, pina
cpi r16, 0b11111100
breq led_ein2
cbi portc, 0
ret     ;statt rjpm loop2

led_ein2:
sbi portc, 0
ret     ;statt rjmp loop2

von Lars Lochmann (Gast)


Lesenswert?

Ja das sieht ganz gut aus. Hast du es mal durch den Compiler geschickt
und gebrannt plus getestet? Vorausgesetzt deine Programmstückeln haben
schon vorher funktioniert, müsste das eigentlich so laufen. Achso da
fällt mir nochawas auf bei deinem Quellcode, Ausgänge und Eingänge
müssen jeweils noch angepasst werden. Portc, 0 ist ja nur ein
Ausgang....

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.