Академический Документы
Профессиональный Документы
Культура Документы
$FFFF
external RAM Эти регистры имеют самое короткое (самое быстрое) время
доступа, что позволяет работать арифметико-логическому
устройству (АЛУ) за один цикл.
Microchip AVR – Память данных (RAM)
8-bit
Data Address
$0000 RWBR Область ввода-вывода (Specific Function
$0001
32 General Registers SFRs) Эти регистры управляют
Purpose TWSR
… ЦП, функциями периферийных
$001F Registers устройств, состояниями процессора,
…
$0020 таймерами, контроллерами
… 64 Standard SPH последовательной связи, портами ввода-
I/O Registers SREG вывода, АЦП и так далее. Эти регистры
$005F
$0060 так же 8-битные.
General Количество периферийных устройст и объем памяти у разных
…
purpose RAM ЧИПов отличаются. Однако все AVR имеют как минимум 64
(SRAM) байта ячеек для ввода-вывода.
SRAMEnd В AVR с более чем 32 контактами на корпусе например,
…
Extended ATMega64, ATMega128 и ATMega256) также имеется
external RAM расширенная память ввода-вывода, которая содержит регистры
$FFFF для управления дополнительными портами и дополнительными
периферийными устройствами.
Microchip AVR – Память данных (RAM)
Data Address
$0000 Встроенная память данных используется для временного
$0001
32 General
Purpose хранения временных данных и констант определнных
…
$001F Registers программистам AVR и компилятором C.
$0020 К каждой ячейке SRAM можно получить доступ по адресу
… 64 Standard для чтения или записи любых данных. Данные 8-битные
I/O Registers (Доступ по адресу осуществляется с использованием
$005F инструкций LDS и STS)
$0060 ПРИМЕР:
General LDS R1,0x0060 ; Load R1 with the contents of memory
…
purpose RAM ; cell witch location is SRAM address
(SRAM) ; 0x60
SRAMEnd STS 0x0060,R1 ; Store contents of R1 to memory
…
Extended
$FFFF
external RAM Размер SRAM может варьироваться в зависимости от чипа, даже
среди членов одного семейства.
AVR Assembler. Регистры
GPRs (РОН) спользуются для временного хранения информации. Эта
информация может быть байтом данных для обработки или адресом,
указывающим на данные, которые нужно извлечь. Подавляющее
большинство регистров AVR являются 8-битными регистрами. Эти
регистры могут использоваться всеми арифметическими и логическими
операциями.
D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0
Пример - 1 Пример - 2
stc ; Set bit C (SREG) ldi r23,0b11110000
ldi r23,0b11110000 lsr r23 ; logic shift to right r21
ror r23 ; rotate to right r21 Результат в r23 это 0b01111000 все
Результат в r23 это 0b11111000 биты сдвинуты в право
Все биты по круку перемещены в
А сдвиг влево?
право C=0
AVR – Assembler. Представления чисел и
операции над ними
Числа Операции
250 - Decimal ! Negation == Equal
045 - Octal +- Plus, Minus != Not equal
$1F - Hexadecimal << >> Left / Right Shift & Bitwise "AND"
0x1F - Hexadecimal <> Less / Greater | Bitwise "OR"
0b11001100 - Binary
Пример 1:
ldi r22, 0b00011100
ldi r17, r22 >> 2 ; In r17 load r22 shifted right 2 times
Результат в r17 это 0b00000111 все биты сдвинуты в лево на 2 позиции
Пример 2:
ldi r22, 0b00011100
ldi r17, r22 & 0xF0 ; In r17 load Bitwise "AND” r22 and 0b11110000
Результат в r17 это 0b00010000 биты перемножены побитово
AVR – Assembler. Директивы и функции
Существует более 15 функций, таких как low(), high(), exp(), abs() и т.д. …
Существует более 25 директив ассемблера, таких как .byte, .org, .cseg и т. д.
Также есть более 10 директив препроцессора, таких как #include, #define…
Пример Data segment Command segment
.dseg RAM FLASH
.org 0x70 Address Address
Array:. db 10, 0x12 $0060 ? $0000 ldi r30, low (Array)
.cseg … … ldi r31, high (Array)
ldi r30, low (Array) $0070 10 ld r28, Z+
ldi r31, high (Array) $0071 0x12
ld r28,Z+ $0072 ? Z - register
Результат в r28 это 10, $0073 ? $00 $70
Z=r31:r30=0x71 …
? $00 $71
Z – register ++
AVR – Assembler. Простой пример 1
; Задача Заполнить массив константой
.dseg ; Это сегмент данных — (адрес SRAM 0x60)
mas:. byte 10 ; мы зарезервировали 10 байт в
; Начальный адрес массива (метка) mas
.cseg ; Это сегмент команд - Flash (адрес 0)
ldi r30, low (mas) ; Загрузите младшую часть адреса первого элемента в ZL
ldi r31, high (mas) ; Массив имеет 16-битный адрес
ldi r22, $ 55 ; Константа 55 - hex
ldi r23,10 ; Счетчик 10 байт
m1: st z+,r22 ; Сохранить константу по адресу в Z, после этого увеличить Z
dec r23 ; Уменьшение счетчика
brne m1 ; Если счетчик еще не 0, то перейти к отметке m1
m2: rjmp m2 ; В противном случае - стоп
AVR – Assembler. Простой пример 2
; Задача найти минимальный элемент массива
.def minimum = r20 ; “minimum” is r20 register
.dseg
mas:. db 10, 5, 0x12, $ FF, -4 ; это сегмент данных - RAM (адрес 0x60)
; определяем в нем 5 байт
.cseg ; это сегмент команд - Flash (адрес 0)
ldi r30, low (mas) ; загрузить адрес первого элемента в Z
ldi r31, high (mas)
ldi r23, 5 ; счетчик 5 байт отрицательный
m1: ld minimum, z+ ; загрузить текущий элемент массива в «минимум» и Z++
cp minimum, r22 ; сравнить минимальный и текущий элемент
brlo m2 ; если минимум меньше то идем дальше
mov minimum, r22 ; если минимум больше, то заменим на новый
m2: dec r23 ; уменьшить счетчик
brne m1 ; если счетчик еще не 0 то переходим к отметке m1
m3: rjmp m3 ; иначе стоп
НАЙШЛИ ОШИБКУ? ДА НЕТ
Задание
1. Мы рассмотрели микроконтроллеры, интегральные схемы,
системы на кристалле и системы в корпусе, но что вы думаете
о микропроцессоре?
2. Как, на ваш взгляд, организовано программное обеспечение в
этих системах? В чем разница и сходство между ними в
разработке программного обеспечения и в его применении?
3. Напишите небольшое (максимум 10 страниц) эссе на тему «От
интегральной схемы к системе в корпусе».
4. Лабораторная работа 2 «Проектирование приложений для
работы с памятю».
Лекция 2 – Рекомендуемая литература и
видео
1. Sarmad Naimi, Sepehr Naimi, Muhammad Ali Mazidi. The Avr Microcontroller and Embedded
Systems Using Assembly and C: Using Arduino Uno and Atmel Studio. MicroDigitalEd, 2017. p.632.
ISBN 0997925965. Section 0.1 numeric and coding systems. Chapter 1 The AVR
microcontroller history and features. Chapter 2 AVR architecture and assembly language
programming.
2. Steven F. Barrett, Daniel J. Pack. Microchip AVR® Microcontroller Primer: Programming and
Interfacing, Third Edition. Synthesis Lectures on Digital Circuits and Systems. Morgan & Claypool
Publishers, 2019. p.373. ISBN 1681736233. Part 1 . Atmel AVR Architecture Overview
3. Thomas Grace. Programming and Interfacing ATMEL® AVR® Microcontroller. © 2016 Cengage
Learning PTR. p.283. ISBN-13: 978-1-305-50999-3. Chapter 1. Digital Systems. Chapter 2
Microcomputer Architecture, The AVR Family of Microcontrollers
4. https://www.newbiehack.com/MicrocontrollerTutorial.aspx Microcontroller Tutorial Made for the
Beginner – Video lessons.
5. https://www.youtube.com/watch?v=HKrgVZ_b9Eo Atmel: Introduction of the Atmel AVR XMEGA
Microcontroller (MCU)
6. http://www.rjhcoding.com/index.php AVR assembler and C tutorials and examples ALL OF YOU
NEED :)
7. Microchip AVR® Assembler. User Guide. © 2017 Microchip Technology Inc. DS40001917A. p.45
Спасибо за внимание!
Демонстрационные материалы к
лекции:
1Лабораторная плата STK - 500
2. Дрон - DJI Mavic mini
3. Микросхемы