Advertisement
Guest User

Untitled

a guest
Dec 27th, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 2.45 KB | None | 0 0
  1.     PRESERVE8                           ; 8-битное выравнивание стека
  2.     THUMB                               ; Режим Thumb (AUL) инструкций
  3.  
  4.     GET config.s                        ; include-файлы
  5.     GET stm32f10x.s
  6.  
  7.     AREA RESET, CODE, READONLY
  8.  
  9.     ; Таблица векторов прерываний
  10.     DCD STACK_TOP                       ; Указатель на вершину стека
  11.     DCD Reset_Handler                   ; Вектор сброса
  12.  
  13.     ENTRY                               ; Точка входа в программу
  14.  
  15. Reset_Handler   PROC                    ; Вектор сброса
  16.      EXPORT  Reset_Handler              ; Делаем Reset_Handler видимым вне этого файла
  17.          
  18. main                                    ; Основная подпрограмма
  19.     MOV32   R0, PERIPH_BB_BASE + \     
  20.             RCC_APB2ENR * 32 + \
  21.             4 * 4                       ; вычисляем адрес для BitBanding 5-го бита регистра RCC_APB2ENR
  22.                                         ; BitAddress = BitBandBase + (RegAddr * 32) + BitNumber * 4
  23.     MOV     R1, #1
  24.     STR     R1, [R0]                    ; загружаем это значение и включаем тактирование порта С
  25.     MOV32   R0, PERIPH_BB_BASE + \
  26.             RCC_APB2ENR * 32 + \
  27.             2 * 4                       ; вычисляем адрес для BitBanding 5-го бита регистра RCC_APB2ENR
  28.                                         ; BitAddress = BitBandBase + (RegAddr * 32) + BitNumber * 4
  29.     STR     R1, [R0]                    ; загружаем это значение
  30.     MOV32   R0, GPIOC_CRL               ; записываем в R0 адрес регистра
  31.     MOV     R1, #0x033333333            ; 4-битная маска настроек для Output mode 50mHz, Push-Pull ("0011")
  32.     LDR     R2, [R0]                    ; считать порт
  33.     BFI     R2, R1, #0, #31             ; скопировать биты маски в позицию PIN0-PIN7
  34.     STR     R2, [R0]
  35.     MOV32   R0, GPIOA_CRL               ; адрес порта
  36.     MOV     R1, #0x08000000             ; 4-битная маска настроек для Output mode 50mHz, Pull-Down ("1000")
  37.     LDR     R2, [R0]                    ; считать порт
  38.     BFI     R2, R1, #0, #28             ; скопировать биты маски в позицию PIN0-PIN7
  39.     STR     R2, [R0]
  40.     MOV32   R4, GPIOA_BSRR
  41.     MOV     R1, #(PIN6 << 16)
  42.     STR     R1, [R4]
  43. loop
  44.     MOV32   R9, GPIOC_ODR
  45.     MOV32   R7, GPIOA_IDR              
  46.     LDR     R6, [R7]                   
  47.     AND     R6, #0x040                  ; R6=R6 & 1000000 сравниваем с ножкой PA6
  48.     CMP     R6, #0x00                   ; сравнние рег R6 и 0 (определение нажатия кнопки)
  49.     IT      NE
  50.     MOVNE   R10,  0x20000200   
  51.     LDRNE   R8, [R10]
  52.     STRNE   R8, [R9]
  53.     B loop
  54.     ENDP
  55.     END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement