Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_AVR1_ред.doc
Скачиваний:
22
Добавлен:
21.11.2019
Размер:
1.08 Mб
Скачать

Примерная структура программы

Программа начинается с блока объявлений

.device ATmega16 ;указание на тип МК, может отсутствовать

.include "m16def.inc" ;подключение файлов описаний стандартных имен,

;файлов подпрограмм с указанием пути

.def tmp=r16 ;Директивы Ассемблера, присваивающие

.def tmp1=r17 ; символические имена рабочим регистрам

.def tmp2=r18 ;вместо стандартных из файла m16def.inc

.equ PORTD =$12

Далее начинается сегмент программного кода, что объявляется директивой

.cseg. Если этот сегмент первый, директива может отсутствовать.

Программа начинается с блока обработчиков прерываний по начальной установке RESET и от периферийных устройств. Адреса точек входа по прерываниям фиксированные и не могут быть изменены. Фактически при входе по прерыванию мы имеем команду JMP label, которая отсылает нас на соответствующую метку label:, где происходит обработка прерывания. Обязательной является только первая строка и метка RESET: , с которой начинается тело основной программы. Если прерывание гарантированно не будет существовать, то можно его не писать, но случайное его возникновение может в этом случае серьезно нарушить логику работы программы. Поэтому рекомендуется блок описания прерываний прописывать, но во всех неиспользуемых прерываниях отменить переход, заменив команду JMP на пустую операцию NOP. Размер этого блока (количество прерываний) зависит от типа МК. Для ATmega16 имеем 21 прерывание.

Первый столбик указывает адреса команд,

( можно их не писать, указав впереди директиву .org 0 )

$000 jmp RESET ; Reset Handler

$002 jmp EXT_INT0 ; IRQ0 Handler

$004 jmp EXT_INT1 ; IRQ1 Handler

$006 jmp TIM2_COMP ; Timer2 Compare Handler

$008 jmp TIM2_OVF ; Timer2 Overflow Handler

$00A jmp TIM1_CAPT ; Timer1 Capture Handler

$00C jmp TIM1_COMPA ; Timer1 CompareA Handler

$00E jmp TIM1_COMPB ; Timer1 CompareB Handler

$010 jmp TIM1_OVF ; Timer1 Overflow Handler

$012 jmp TIM0_OVF ; Timer0 Overflow Handler

$014 jmp SPI_STC ; SPI Transfer Complete Handler

$016 jmp USART_RXC ; USART RX Complete Handler

$018 jmp USART_UDRE ; UDR Empty Handler

$01A jmp USART_TXC ; USART TX Complete Handler

$01C jmp ADC ; ADC Conversion Complete Handler

$01E jmp EE_RDY ; EEPROM Ready Handler

$020 jmp ANA_COMP ; Analog Comparator Handler

$022 jmp TWSI ; Two-wire Serial Interface Handler

$024 jmp EXT_INT2 ; IRQ2 Handler

$026 jmp TIM0_COMP ; Timer0 Compare Handler

$028 jmp SPM_RDY ; Store Program Memory Ready Handler

Начало основной программы, сюда мы попадаем при включении питания, по Reset. При использовании директив .org адреса не пишут, они определяются при трансляции.

Обычно программу записывают в виде трех столбцов:

Метка: Мнемокод команды ;Комментарий

RESET: ldi r16,high(RAMEND) ; Main program start

out SPH,r16 ; Set Stack Pointer to top of RAM

ldi r16,low(RAMEND)

out SPL,r16

sei ; Enable interrupts

Этот блок определяет конечный адрес ОЗУ и заносит его в указатель стека.

Разрешаются прерывания. Затем необходимо выполнить инициализацию всех устройств, настройку портов на ввод/вывод.

Далее начинается тело основной программы

Main: <instr> xxx

операторы…………

rjmp Main ;Возврат на метку Main

Основная программа постоянно зациклена, при возникновении прерываний, адрес оператора запоминается в стеке и осуществляется переход на подпрограмму обработки прерывания, в конце которой должен быть оператор возврата RETI, например обработка прерывания по переполнению таймера

TIM0_OVF: тело

подпрограммы

Reti ;Возврат из подпрограммы

1.4. ПРОГРАММНО-АППАРАТНЫЕ СРЕДСТВА ПОДДЕРЖКИ РАЗРАБОТКИ ПРОГРАММ AVR

Разработка современных микропроцессорных систем невозможна без средств поддержки. Одно из достоинств микроконтроллеров ATMEL AVR состоит в том, что и фирма ATMEL, и другие фирмы предлагают широкий выбор программных и аппаратных средств поддержки разработки систем на их основе.

Программные средства – это интегрированные среды разработки (IDE) программ на языке Ассемблера ATMEL и языках высокого уровня Си, Паскаль. Примером такой среды является AVR Studio, работа в которой описывается далее.

Примером аппаратных средств являются различные отладочные и оценочные платы, которые позволяют опробовать работоспособность программ и технические решения на при минимуме затрат. Примерами таких плат являются наборы STK500 фирмы ATMEL, или плата EasyAVR фирмы MikroElektronika, на которой мы будем выполнять последующие работы.