programm von c in assembler?

  • Hallo,


    ich habe ein programm in c geschrieben, das 2 Ausgänge eines Attiny12 schalten soll. Die Funktion ist folgende:
    Signal an B2 ---> B3 auf high
    Signal an B2 ---> B2 auf high
    Signal an B2 ---> B2 und B3 auf low.
    Auf einem Atmega32 läuft das Programm, ich brauche es aber für den Attiny12 für den das Programm in Assembler geschrieben sein muss. Leider hab ich von assembler keine Ahnung.
    Wär jemand so nett und kann mir das übersetzten?
    Danke im Vorraus.
    So sieht das Programm in C aus:

  • Lange Rede, kurzer Sinn: ist es denn wichtig, dass der Delay genau 50 ms ist, oder eben nur ne kurze Verzögerung zum entprellen...? - wenn's nicht so genau geht, kann ich Dir das schon schnell zusammentippen - aber ob ich heute noch dazu komme, weiß ich nicht...


    was ich nicht ganz verstehe: PB2 ist gleichzeitig Ein- und Ausgang...? ?( - mit "PORTB = 0b00000100;" schaltest Du ja eigentlich den Pullup ein, weil der PB2 ja als Eingang definiert ist...


    aber wenn das so passt, kein Problem, kann man ja 1:1 in asm umsetzen...


    "Signal an B2" bedeutet, es soll weiter gehen, wenn der Pin auf Low gezogen wird, richtig...? - so zumindest hätte ich als nicht-C-ler das "loop_until_bit_is_clear(WARTEPIN, WARTEBIT);" verstanden...?

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • Oh ja stimmt, hab da die pins durcheinander gebracht :S
    Nach einschalten B3 und B4 auf low
    Signal an B2 ---> B3 auf high
    Signal an B2 ---> B4 high, B3 low
    Signal an B2 ---> B3 und B4 auf low.
    Programm fängt von vorne an.



    Der Delay ist nur zum Entprellen da, es müssen also nicht genau 50ms sein.


    Zitat

    "Signal an B2" bedeutet, es soll weiter gehen, wenn der Pin auf Low gezogen wird, richtig...? - so zumindest hätte ich als nicht-C-ler das "loop_until_bit_is_clear(WARTEPIN, WARTEBIT);" verstanden...?


    ja genau. Das Signal kommt von einem Klatschschalter und ist so einen recht kurzen Moment auf low.


    Vielen dank für deine Mühe :)

  • Hier bitte, schnell mal zamgetippt... habe jetzt vorsichtshalber ca. 100 ms zum entprellen genommen, bei 1 MHz Takt...


    sollte laufen, braucht kein RAM, belegt 52 Byte im Flash.... ;)


    muss jetzt in die Bandprobe, wenn's nicht geht, heute abend noch mal...