- •Часть 1
- •Содержание
- •Исследование системы команд микроконтроллеров семейства avr и средств поддержки разработок avr-Studio и WinAvr
- •2.2. Системы поддержки разработок для микроконтроллеров avr
- •2.3. Описание компилятора ассемблера avr
- •3. Создание программ в avr-Studio и WinAvr
- •3.1. Создание простейшей программы и её отладка средствами avr-Studio
- •3.2. Создание простейшей программы и её отладка средствами WinAvr
- •4. Программа исследования
- •5. Содержание отчета
- •1.6. Контрольные вопросы
- •Построение микропроцессорной системы на основе микроконтроллера семейства avr
- •2.2.2. Использование внешнего озу
- •3. Пример построения схемы мпс
- •3.1. Постановка задачи
- •3.2. Организация шины адреса
- •3.3. Организация шины данных
- •3.5. Организация подсистемы впд
- •3.6. Подключение периферийных микросхем (внешних устройств) в адресное пространство внешней памяти
- •4. Программа исследования
- •4.1. Внеаудиторная подготовка
- •4.2. Выполнение работы в лаборатории
- •4.3. Задание на исследование
- •5. Содержание отчета
- •6. Контрольные вопросы
- •Исследование функционирования мпс на примере стенда can128
- •2.2. Запись в и чтение из flash памяти микроконтроллера с помощью ponyprog и макета can128.
- •3. Описание лабораторной установки
- •4. Задание на лабораторную работу
- •5. Содержание отчёта
- •6. Контрольные вопросы
- •Исследование вывода информации на жидкокристаллический индикатор
- •2.2. Способы управления bc1602h
- •3. Описание лабораторной установки
- •3. Задание на исследование
- •4. Содержание отчёта
- •5. Контрольные вопросы
- •Библиографический список
- •Приложение а (обязательное) Варианты индивидуальных заданий на лабораторную работу №1
- •Приложение б (обязательное) Текст учебной программы на ассемблере для лабораторной работы №3
- •Приложение в (справочное) Пример программы для вывода на жки
Библиографический список
1. Евстифеев А.В. Микроконтроллеры AVR семейства Mega. Руководство пользователя. – М.: Издательский дом «Додэка-XXI», 2007. – 592с.
2. Евстифеев А.В. Микроконтроллеры AVR семейства Classic фирмы «ATMEL» – 3-е изд., стер. – М.: Издательский дом «Додэка-XXI», 2006. – 288с.
3. Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы «ATMEL» – М.: Издательский дом «Додэка-XXI», 2004. – 560с.
4. Программирование на языке С для AVR и PIC микроконтроллеров./Сост. Ю.А.Шпак – К.: «МК-Пресс», 2006. – 400 с.
5. 8-bit Microcontroller with 128K Bytes of ISP Flash and CAN Controller AT90CAN128 [Электронный ресурс]. – Электрон. текстовые данные (5 742 631 bytes). – Режим доступа: http://www.atmel.com/dyn/resources/prod_docments/ doc7522.pdf Tuesday, 17 March 2009, 12:06:48.
6. Самофалов К.Г. Микропроцессоры/ К.Г.Самофалов, О.В.Викторов. – К.:Тэхника, 1989. – 312с.
7. Периферийные БИС. Справочник./ В.И.Осадчий, Ю.Я. Мундурс, А.И.Осадчий – К.:ИЭ НАНУ,1994. – 321с.
8. Цифровые и аналоговые интегральные микросхемы: Справочник /С.В. Якубовский, Л.И.Ниссельсон, В.И. Кулешова и др.; Под ред. С.В. Якубовского. – М.: Радио и связь, 1989. – 496 с.
9. Лебедев О.Н. Микросхемы памяти и их применение./ О.Н.Лебедев – М.:Радио и связь, 1990. – 160с.
10. BC1602H Алфавитно-цифровой ЖК модуль 16 символов на 2 строки. Электронный ресурс]. – Электрон. текстовые данные (106.9 Кbytes). – Режим доступа: http://catalog.gaw.ru/project/download.php?id=3356 Monday, 26 March 2012, 13:52:12.
Приложение а (обязательное) Варианты индивидуальных заданий на лабораторную работу №1
Таблица А.1 – Варианты индивидуальных заданий на лабораторную работу №1
№ варианта |
Текст подпрограммы |
|
|
ldi r16,1 ; Загрузить маску 0000 0001 в r16 and r2,r16 ; Выделить 0-й бит в r2 |
|
|
andi r17,$0F ; Обнулить старший полубайт регистра r17 andi r18,$10 ; Выделить 4-й бит в регистре r18 |
|
|
; Сложение двух регистровых пар R1:R0 и R3:R2 add r2,r0 ; Сложить младшие байты adc r3,r1 ; Сложить старшие байты с учетом переноса |
|
|
add r1,r2 ; Прибавить r2 к r1 (r1=r1+r2) add r28,r28 ; Сложить г28 с самим собой (г28=г28+г28) |
|
|
adiw r25:r24,1 ; Прибавить 1 к r25:r24 adiw ZH:ZL,63 ; Прибавить 63 к указателю Z(r31:r30) |
|
|
ldi r16,$10 ; Записать число 16 в регистр r16 asr r16 ; r16= r16/2 ldi r17,$FC ; Записать число -4 в регистр г17 asr r17 ; r17=r17/2 |
|
|
cbr r16,$F0 ; Обнулить старший полубайт регистра r16 cbr r18,1 ; Сбросить 1-й бит в регистре r18 cbr r18,$10 ; Сбросить 4-й бит в регистре r18 |
|
|
sbr r16,3 ; Установить биты 0 и 1 регистра r16 sbr r18,$F0 ; Установить 4 старших бита регистра r18 |
|
|
mov r16,r0 ; Переслать содержимое r0 в r16 ;call check ; Вызвать подпрограмму ; check: cpi r16, $11 ; Сравнить r16 с $11 ret ; Вернуться из подпрограммы |
|
|
movw r17:r16,r1:r0 ; Переслать r1:rO в r17:r16
in r25,$18 ; Прочитать содержимое порта B cpi r25,4 ; Сравнить содержимое с константой breq exit ; Перейти, если r25 = 4 exit: |
|
|
clr r16 ; Очистить регистр г16 ser r17 ; Установить регистр г17 out $18,r16 ; записать нули в порт B nop ; Ждать один такт out $18,r17 ; Записать единицы в порт B |
Продолжение таблицы А.1.
|
|
call routine ; Вызов подпрограммы ; routine: push r14 ; Сохранить r14 в стеке push r15 ; Сохранить r15 в стеке ; pop r15 ; Восстановить r15из стека pop r14 ; Восстановить r14 из стека ret ; Возврат из подпрограммы |
|
|
lds r2,$FF00 ; r2 = [$FFOO] add r2,r1 ; r2 = r2 + r1 sts $FF00,r2 ; Записать результат по тому же адресу |
|
|
clr r31 ;Очистить старший байт индексного регистра Z ldi r30,$F0 ;Загрузить адрес в регистр Z lpm ;Загрузить константу из памяти программ ;по адресу $00F0 |
|
|
clr r31 ; Очистить старший байт индексного регистра ldi r30,$60 ; Загрузить младший байт адреса ld r1,Z ; r1 = [0060] |
|
|
clr r31 ; Очистить старший байт индексного регистра ldi r30,$63 ; Загрузить младший байт адреса ld r3,-Z ; r3 = [$0062] |
|
|
clr r31 ;Очистить старший байт индексного регистра ldi r30,$60 ; Загрузить младший байт адреса ld r1,Z+ ; r1 = [$0060] in r2,r30 ; В регистре r2 - $61 |
|
|
clr r31 ; Очистить старший байт индексного регистра ldi r30,$63 ; Загрузить младший байт адреса ldd r4,Z+2 ; r4 = [$0065] |
|
|
cpi r16,$42 ; Сравнить r16 с числом $42 brne error ; Перейти, если r16 ~= $42 rjmp ok ; Безусловный переход ; error: add r16, r17 ; Прибавить r16 к r17 inc r16 ; r16 = r16 + 1 ok: |
|
|
mov r30, r0 ; Задать смещение ijmp ; Перейти по адресу г31: r30
add r16, r17 ; Прибавить r16 к r17 inc r16 ; r16 = r16 + 1 jmp farplc ; Безусловный переход farplc: nop |
Продолжение таблицы А.1.
|
|
rcall routine0 ; Вызвать подпрограмму routine0: push r14 ; Сохранить r14 ; pop r14 ; Восстановить r14 ret ; Возврат из подпрограммы
waitset: sbis $1D,0 ;Пропустить след. команду, если 0-й бит ; порта D установлен rjmp waitset ; Ждать, пока бит не будет установлен |
|
|
clr r31 ; Очистить старший байт индексного регистра ldi r30,$63 ; Загрузить младший байт адреса ldd r4,Z+2 ; r4 = [$0065] |
|
|
cpi r16,$42 ; Сравнить r16 с числом $42 brne error ; Перейти, если r16 ~= $42 rjmp ok ; Безусловный переход ; error: add r16, r17 ; Прибавить r16 к r17 inc r16 ; r16 = r16 + 1 ok: |
|
|
mov r30, r0 ; Задать смещение ijmp ; Перейти по адресу г31: r30
add r16, r17 ; Прибавить r16 к r17 inc r16 ; r16 = r16 + 1 jmp farplc ; Безусловный переход farplc: nop |
|
|
rcall routine0 ; Вызвать подпрограмму routine0: push r14 ; Сохранить r14 ; pop r14 ; Восстановить r14 ret ; Возврат из подпрограммы
waitset: sbis $1D,0 ; Пропустить след. команду, если 0-й бит ; порта D установлен rjmp waitset ; Ждать, пока бит не будет установлен |
