Главная » Микроконтроллеры
Призовой фонд
на февраль 2021 г.
1. 1500 руб
Сайт Паяльник
2. Мультиметр ANENG M118A
Сайт Паяльник
3. 350 руб.
От пользователей


Конструктор робота на базе Arduino

Содержимое заголовочного файла

В начале любой программы, как правило, подключается один из стандартных заголовочных файлов, поставляемых вместе с пакетом программ AVR Studio.

Заголовочные файлы существуют для всех моделей AVR. По умолчанию исходной директорией их размещения является “С:\Program Files\Atmel\AVRTools\AvrAssembler2\Appnotes”. Каждый файл имеет имя подобное "m8def.inc", в котором первая часть указывает на модель микроконтроллера.

Заголовочный файл содержит объявление всех символьных имен, которые могут быть использованы в программе. В первую очередь к ним относятся названия управляющих РВВ и их битовых полей:

; ***** I/O REGISTER DEFINITIONS **************************
; NOTE:
; Definitions marked "MEMORY MAPPED" are extended I/O ports
; and cannot be used with IN/OUT instructions

.equ	SREG	= 0x3F
.equ	SPL	= 0x3D
.equ	SPH	= 0x3E
.
.equ	TWAR	= 0x02
.equ	TWSR	= 0x01
.equ	TWBR	= 0x00

; ***** BIT DEFINITIONS ***********************************
.
; ***** CPU **************************
; SREG - Status Register
.equ	SREG_C = 0  ; Carry Flag
.equ	SREG_Z = 1  ; Zero Flag
.equ	SREG_N = 2	; Negative Flag
.equ	SREG_V = 3	; Two's Complement Overflow Flag
.equ	SREG_S = 4	; Sign Bit
.equ	SREG_H = 5	; Half Carry Flag
.equ	SREG_T = 6	; Bit Copy Storage
.equ	SREG_I = 7	; Global Interrupt Enable
.

Директива .equ связывает название каждого из РВВ с его фактическим адресом в адресном пространстве ввода-вывода. Эти адреса могут использоваться только совместно с инструкциями in, out, sbi, cbi, sbis, sbic. Если обращаться к управляющему регистру как к ячейке памяти в абсолютном адресном пространстве, то к его имени необходимо будет добавлять смещение 0x20:
  lds SPL+0x20,R16 ;копировать R16 в ячейку 0x5D SRAM (0x3D I/O).

Обозначения РВВ и их битов в точности совпадают с теми, которые приводятся в технической документации на каждую конкретную модель. Поэтому не рекомендуется изменять эти имена в заголовочном файле по своему усмотрению. Стандартные названия помогают облегчить переносимость программ в пределах одного семейства. Если, например, понадобиться перенести рабочий код с модели ATmega8 на ATmeg8535, то все что надо будет сделать – это заменить в исходном тексте файле "m8def.inc" на "m8535def.inc" и заново откомпилировать проект.

В каждом заголовочном файле РОНам R27…R31 директивой .def присвоены дополнительные служебные имена:

; ***** CPU REGISTER DEFINITIONS **************************
.def	XH = R27
.def	XL = R26
.def	YH = R29
.def	YL = R28
.def	ZH = R31
.def	ZL = R30

Файл содержит также объявление ряда констант, которые часто встречаются в процессе программирования (размеры различных областей памяти, начальные адреса секции загрузчика и т.д.):

; ***** DATA MEMORY DECLARATIONS **************************
.equ	FLASHEND	 = 0x0FFF	; Note: Word address
.equ	IOEND	       = 0x003F
.equ	SRAM_START   = 0x0060
.equ	SRAM_SIZE	 = 1024
.equ	RAMEND	 = 0x045F
.equ	XRAMEND	 = 0x0000
.equ	E2END	       = 0x01FF
.equ	EEPROMEND    = 0x01FF
.equ	EEADRBITS	 = 9
̣̣̣̣̣̣̣̣
; ***** BOOTLOADER DECLARATIONS ***************************
.equ	NRWW_START_ADDR = 0xC00
.equ	NRWW_STOP_ADDR  = 0xFFF
.equ	RWW_START_ADDR  = 0x0
.equ	RWW_STOP_ADDR   = 0xBFF
.equ	PAGESIZE	    = 32
.equ	FIRSTBOOTSTART  = 0xF80
.equ	SECONDBOOTSTART = 0xF00
.equ	THIRDBOOTSTART  = 0xE00
.equ	FOURTHBOOTSTART = 0xC00
.equ	SMALLBOOTSTART  = FIRSTBOOTSTART
.equ	LARGEBOOTSTART  = FOURTHBOOTSTART

В конце файла приведена таблица векторов прерывания:

; ***** INTERRUPT VECTORS *********************************
.equ	INT0addr = 0x0001	; External Interrupt Request 0
.equ	INT1addr = 0x0002	; External Interrupt Request 1
.equ	OC2addr  = 0x0003	; Timer/Counter2 Compare Match
̣̣̣̣̣̣̣̣
.equ	ACIaddr  = 0x0010	; Analog Comparator
.equ	TWIaddr  = 0x0011	; 2-wire Serial Interface
.equ	SPMRaddr = 0x0012	; Store Program Memory Ready

.equ	INT_VECTORS_SIZE = 19 ; size in words

Перейти к следующей части:

Теги:

Котов Игорь Юрьевич Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
Осциллограф DSO138 Конструктор регулируемого преобразователя напряжения LM317
вверх