Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ПМПС.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
16.39 Mб
Скачать

Библиографический список

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 ; Ждать, пока бит не будет установлен