Advertisement
Guest User

Untitled

a guest
May 28th, 2017
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 2.29 KB | None | 0 0
  1. .syntax unified
  2. .global main, EXTI0_IRQHandler, EXTI1_IRQHandler
  3.  
  4. .include "macros.s"
  5.  
  6. main:
  7.   bl init_gpio
  8.   bl init_audio
  9.   bl FourFortySender
  10.  
  11. @ we will use r11 to keep track of control
  12.  
  13. set_counter:
  14.   mov r7, #31 @sender_counter
  15.   bx lr
  16.  
  17. FourFortySender:
  18.   bl set_counter
  19.   @ good luck!
  20.   @lsl r6, #1
  21.   ldr r6, =message
  22.   ldr r9, =#FourFortyHz
  23.   GPIOx_ODR_set E, 12
  24.   bl sender
  25.  
  26. sender:
  27.   ldr r8, [r9]
  28.   lsr r8, r7  @ bit loaded
  29.   ands r8, #1 @ get the most significant bit
  30.   it ne
  31.   blne sendOne
  32.   it eq  @ send
  33.   bleq sendZero
  34.   GPIOx_ODR_toggle E, 13
  35.   @ orr r6, r8
  36.   cmp r7, #-1
  37.   it eq
  38.   bleq loop
  39.   it ne
  40.   blne sender
  41.  
  42.  
  43. sendOne:
  44.   GPIOx_ODR_set E, 14
  45.   bx lr
  46.  
  47. sendZero:
  48.   GPIOx_ODR_clear E, 14
  49.   bx lr
  50.  
  51.  
  52. thinker:
  53.   @ good luck!
  54.   @lsl r6, #1
  55.   ldr r8, [r9]
  56.   lsr r8, r7  @ bit loaded, send
  57.   lsl r8, #31
  58.   lsr r8, #31
  59.   @ orr r6, r8
  60.   cmp r7, #-1
  61.   it eq
  62.   bleq loop
  63.   it ne
  64.   blne receiveOne
  65.  
  66. loop:
  67.   GPIOx_ODR_clear E, 12
  68.   ldr r6, =message
  69.   ldr r5, [r6]
  70.   nop
  71.   b loop
  72.  
  73. .type EXTI0_IRQHandler, %function
  74. EXTI0_IRQHandler:
  75.   push {lr}
  76.   EXTI_PR_clear_pending 0
  77.   GPIOx_IDR_read H, 0
  78.   it eq
  79.   moveq r11, #0
  80.   it ne
  81.   movne r11, #1
  82.   pop {lr}
  83.   bx lr
  84.  
  85. .type EXTI1_IRQHandler, %function
  86. EXTI1_IRQHandler:
  87.   push {lr}
  88.   EXTI_PR_set_pending 0
  89.   cmp r7, #0
  90.   it ne
  91.   blne checker
  92.   pop {lr}
  93.   bx lr
  94.  
  95. checker:
  96.   GPIOx_IDR_read E, 11
  97.   bne receiveOne
  98.   beq receiveZero
  99.  
  100. receiveOne:
  101.   ldr r6, =message
  102.   ldr r5, [r6]
  103.   lsl r5, #1
  104.   orr r5, #1
  105.   str r5, [r6]
  106. @  lsl r6, #1
  107. @  orr r6, #1
  108. @  sub r7, #1
  109.   bx lr
  110.  
  111. receiveZero:
  112.   ldr r6, =message
  113.   ldr r5, [r6]
  114.   lsl r5, #1
  115.   str r5, [r6]
  116. @  lsl r6, #1
  117. @  orr r6, 0b00000000000000000000000000000000
  118.   sub r7, #1
  119.   bx lr
  120.  
  121. message:
  122.     .word 0
  123. delay:
  124.   .word 0b00000000000000000111111111111111   @ 0Hz in binary (for the delay)
  125. ThreeNinetyTwoHz:                                       @ the least significant 16 bits of each of these are the amplitude 0x7FFF
  126.   .word 0b00000001100010000111111111111111   @ 392Hz in binary
  127. FourNinetyFourHz:
  128.   .word 0b00000001111011100111111111111111   @ 494Hz in binary
  129. FiveTwentyThreeHz:
  130.   .word 0b00000010000010110111111111111111   @ 523Hz in binary
  131. FourFortyHz:
  132.   .word 0b00000001101110000111111111111111   @ 440Hz in binary
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement