Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Programmgeruest zur Aufgabe Termin6 WS2013
- // von: Manfred Pester
- // vom: 18.09.2013
- // @ int Operationen(volatile unsigned int* u_int_Taster, volatile unsigned int* u_int_LedsOn)
- @ Diese Funktion soll auf
- @ - LED DS1 (Bit 8) das Ergebnis von SW1 AND SW2 anzeigen
- @ - LED DS2 (Bit 9) das Ergebnis von SW1 OR SW2 anzeigen
- @ - LED DS3 (Bit 10) das Ergebnis von SW1 EOR SW2 anzeigen
- @ - LED DS4 und 5 (Bit 11/12) das Ergebnis von SW1 ADD SW2 anzeigen
- @ - LED DS6 und 7 (Bit 13/14) das Ergebnis von SW1 SUB SW2 anzeigen
- @ und bei gedrueckter TASTE SW3 (Bit 5) soll die Funktion ein TRUE (Wert ungleich 0) ansonsten FALSE (Wert gleich 0) an das aufrufende Programm zurueck geben.
- @ ACHTUNG die Tasten und auch die Leuchtdioden sind Low-Aktiv beschaltet.
- .file "Funktionen.S"
- .text
- .align 2
- .global Operationen
- .type Operationen, %function
- Operationen:
- // LESEN
- push {r4,r5,r6,r7}
- ldr r2, [r0]
- ldr r7, [r1]
- mov r3, #0 //! Too much code
- mov r4, #0
- mov r5, #0
- //If the value of the button is '0', then we save a '1' in register, to make them "high active"
- lsrs r0, r2, #4 // SW1
- movcc r3, #1
- lsrs r0, r2, #5 // SW2
- movcc r4, #1
- lsrs r0, r2, #6 // SW3
- ldrcc r0, =3135097598 //! why? because hexspeak.
- movcs r0, #0
- // AND
- tst r3, r4
- addne r7, r7, #0x100
- // OR
- cmn r3, r4
- addne r7, r7, #0x200
- // EOR
- teq r3, r4
- addne r7, r7, #0x400
- // ADDITION
- adds r6, r3, r4
- addne r7, r7, r6,lsl #11
- // SUBTRAKTION
- subs r6, r3, r4
- addpl r7, r7, r6,lsl #13 // PL : Positiv oder Null
- addmi r7, r7, #0x6000 // MI : Negativ
- // Beenden
- str r7, [r1]
- pop {r4,r5,r6,r7} //! PC?
- bx lr
- .Lfe1:
- .size Operationen,.Lfe1- Operationen
- // End of File
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement