Advertisement
Eldoprano

Untitled

Jun 28th, 2019
3,071
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 1.70 KB | None | 0 0
  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.  
  19. Operationen:
  20.    
  21. // LESEN
  22. push {r4,r5,r6,r7}
  23. ldr r2, [r0]
  24. ldr r7, [r1]
  25.  
  26. mov r3, #0  //! Too much code
  27. mov r4, #0
  28. mov r5, #0
  29.  
  30. //If the value of the button is '0', then we save a '1' in register, to make them "high active"
  31. lsrs r0, r2, #4 // SW1
  32.  movcc r3, #1
  33. lsrs r0, r2, #5 // SW2
  34.  movcc r4, #1
  35. lsrs r0, r2, #6 // SW3
  36.  ldrcc r0, =3135097598  //! why? because hexspeak.
  37.  movcs r0, #0
  38.  
  39.      
  40. // AND
  41. tst r3, r4
  42.  addne r7, r7, #0x100
  43.  
  44. // OR    
  45. cmn r3, r4
  46.  addne r7, r7, #0x200
  47.  
  48. // EOR
  49. teq r3, r4
  50.  addne r7, r7, #0x400
  51.  
  52. // ADDITION  
  53. adds r6, r3, r4
  54.  addne r7, r7, r6,lsl #11  
  55.  
  56. // SUBTRAKTION
  57. subs r6, r3, r4
  58.  addpl r7, r7, r6,lsl #13   // PL : Positiv oder Null
  59.  addmi r7, r7, #0x6000      // MI : Negativ
  60.      
  61. // Beenden
  62. str r7, [r1]
  63. pop {r4,r5,r6,r7}       //! PC?
  64. bx  lr
  65.  
  66. .Lfe1:
  67.     .size   Operationen,.Lfe1- Operationen
  68. // End of File
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement