Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Programmgeruest zur Aufgabe Termin6 WS2013
  2. // von: Manfred Pester
  3. // vom: 18.09.2013
  4. // @ int Operationen(volatile unsigned int* u_int_Taster, volatile unsigned int* u_int_LedsOn)
  5. @ Diese Funktion soll auf
  6. @ - LED DS1 (Bit 8) das Ergebnis von SW1 AND SW2 anzeigen
  7. @ - LED DS2 (Bit 9) das Ergebnis von SW1 OR SW2 anzeigen
  8. @ - LED DS3 (Bit 10) das Ergebnis von SW1 EOR SW2 anzeigen
  9. @ - LED DS4 und 5 (Bit 11/12) das Ergebnis von SW1 ADD SW2 anzeigen
  10. @ - LED DS6 und 7 (Bit 13/14) das Ergebnis von SW1 SUB SW2 anzeigen
  11. @ 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.
  12. @ ACHTUNG die Tasten und auch die Leuchtdioden sind Low-Aktiv beschaltet.
  13.     .file   "Funktionen.S"
  14.     .text
  15.     .align  2
  16.     .global Operationen
  17.     .type   Operationen, %function
  18. Operationen:
  19.  
  20. // LESEN
  21. push {r4,r5,r6,r7,lr}
  22. mov r2, r0
  23. mov r7, r1
  24.  
  25. mov r3, #0  //! Too much code
  26. mov r4, #0
  27. mov r5, #0
  28.  
  29. //If the value of the button is '0', then we save a '1' in register, to make them "high active"
  30. lsrs r0, r2, #4 // SW1
  31.  movcc r3, #1
  32. lsrs r0, r2, #5 // SW2
  33.  movcc r4, #1
  34. lsrs r0, r2, #6 // SW3
  35.  ldrcc r0, =3135097598  //! why? because hexspeak.
  36.  movcs r0, #0
  37.  
  38.      
  39. // AND
  40. tst r3, r4
  41.  subne r7, r7, #0x100
  42.  
  43. // OR    
  44. cmn r3, r4
  45.  subne r7, r7, #0x200
  46.  
  47. // EOR
  48. teq r3, r4
  49.  subne r7, r7, #0x400
  50.  
  51. // ADDITION  
  52. adds r6, r3, r4
  53.  subne r7, r7, r6,lsl #11  
  54.  
  55. // SUBTRAKTION
  56. subs r6, r3, r4
  57.  subpl r7, r7, r6,lsl #13   // PL : Positiv oder Null
  58.  submi r7, r7, #0x6000      // MI : Negativ
  59.      
  60. // Beenden
  61.  
  62. str r7, [r1]
  63. pop {r4,r5,r6,r7,pc}        //! PC?
  64.  
  65.  
  66. .Lfe1:
  67.     .size   f_int_Funktionen,.Lfe1- f_int_Funktionen
  68. // End of File
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement