Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

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

В начале любой программы, как правило, подключается один из стандартных заголовочных файлов, поставляемых вместе с пакетом программ 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
Набор для сборки - УНЧ 2х60 Вт на TDA7294 Радиореле 220В
вверх