Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PRESERVE8 ; 8-битное выравнивание стека
- THUMB ; Режим Thumb (AUL) инструкций
- GET config.s ; include-файлы
- GET stm32f10x.s
- AREA RESET, CODE, READONLY
- ; Таблица векторов прерываний
- DCD STACK_TOP ; Указатель на вершину стека
- DCD Reset_Handler ; Вектор сброса
- ENTRY ; Точка входа в программу
- Reset_Handler PROC ; Вектор сброса
- EXPORT Reset_Handler ; Делаем Reset_Handler видимым вне этого файла
- main ; Основная подпрограмма
- MOV32 R0, PERIPH_BB_BASE + \
- RCC_APB2ENR * 32 + \
- 4 * 4 ; вычисляем адрес для BitBanding 5-го бита регистра RCC_APB2ENR
- ; BitAddress = BitBandBase + (RegAddr * 32) + BitNumber * 4
- MOV R1, #1
- STR R1, [R0] ; загружаем это значение и включаем тактирование порта С
- MOV32 R0, PERIPH_BB_BASE + \
- RCC_APB2ENR * 32 + \
- 2 * 4 ; вычисляем адрес для BitBanding 5-го бита регистра RCC_APB2ENR
- ; BitAddress = BitBandBase + (RegAddr * 32) + BitNumber * 4
- STR R1, [R0] ; загружаем это значение
- MOV32 R0, GPIOC_CRL ; записываем в R0 адрес регистра
- MOV R1, #0x033333333 ; 4-битная маска настроек для Output mode 50mHz, Push-Pull ("0011")
- LDR R2, [R0] ; считать порт
- BFI R2, R1, #0, #31 ; скопировать биты маски в позицию PIN0-PIN7
- STR R2, [R0]
- MOV32 R0, GPIOA_CRL ; адрес порта
- MOV R1, #0x08000000 ; 4-битная маска настроек для Output mode 50mHz, Pull-Down ("1000")
- LDR R2, [R0] ; считать порт
- BFI R2, R1, #0, #28 ; скопировать биты маски в позицию PIN0-PIN7
- STR R2, [R0]
- MOV32 R4, GPIOA_BSRR
- MOV R1, #(PIN6 << 16)
- STR R1, [R4]
- loop
- MOV32 R9, GPIOC_ODR
- MOV32 R7, GPIOA_IDR
- LDR R6, [R7]
- AND R6, #0x040 ; R6=R6 & 1000000 сравниваем с ножкой PA6
- CMP R6, #0x00 ; сравнние рег R6 и 0 (определение нажатия кнопки)
- IT NE
- MOVNE R10, 0x20000200
- LDRNE R8, [R10]
- STRNE R8, [R9]
- B loop
- ENDP
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement