Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
40
Добавлен:
26.04.2015
Размер:
261.63 Кб
Скачать

2.2. Работа №1

Изучение системы команд микроконтроллера

Цель работы

Ознакомиться с лабораторным комплексом, изучить систему команд программируемого микроконтроллера AT90S8535, подготовить простейшую программу, отладить её и продемонстрировать работу подготовленной программы.

Пояснения к работе

Для выполнения работы необходимо знать структуру и функционирование микроконтроллера AT90S8535, методы адресации и систему команд. В главе 3 представлена система команд микроконтроллеров семейства AVR. В технической документации на микроконтроллеры команды даются в алфавитном порядке. В главе 3 команды разбиты на группы команд: арифметические и логические команды, команды сдвигов и операции с битами, команды пересылки данных, команды переходов. При использовании команд IN и OUT используются адреса ввода-вывода с $00 по $3F. Но к ним же можно обращаться и как к ячейкам внутреннего ОЗУ. При этом к непосредственному адресу регистра ввода-вывода необходимо прибавить $20. Следует помнить, что регистры ввода-вывода в пределах адресов от $00 по $1F имеют программно доступные биты. Обращение к ним осуществляется командами SBI и CBI, а проверка состояния командами SBIS и SBIC.

При арифметических операциях используется регистр состояния SREG, располагаемый по адресу $3F($5F). Формат этого регистра следующий:

Регистр состояния – SREG

Бит

7

6

5

4

3

2

1

0

$3F ($5F)

I

T

H

S

V

N

Z

C

SREG

Чтение/Запись

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Исходное значение

0

0

0

0

0

0

0

0

 Бит 7 – Разрешение всех прерываний. Для разрешения прерываний этот бит должен быть установлен в состояние 1. Управление разрешением конкретного прерывания выполняется регистром маски прерывания EIMSK и TIMSK. Если этот бит очищен (=0), то ни одно из прерываний не обрабатывается. Бит аппаратно очищается после возникновения прерывания и устанавливается для последующего разрешения прерывания командой RETI.

 Бит 6 – Бит сохранения копии. Команды копирования бита BLD и BST используют этот бит как источник и приемник при операциях с битами. Командой BST бит регистра общего назначения копируется в бит T, командой BLD бит Т копируется в бит регистра общего назначения.

 Бит 5 – Флаг полупереноса. Он указывает на перенос между тетрадами при выполнении ряда арифметических операций.

 Бит 4 – Бит знака. Бит S имеет значение результата операции исключающее ИЛИ (N(+)V) над флагами отрицательного значения (N) и дополнения до двух флага переполнения (V).

 Бит 3 – Дополнение до двух флага переполнения. Он поддерживает арифметику дополнения до двух.

 Бит 2 – Флаг отрицательного значения. Этот флаг указывает на отрицательный результат ряда арифметических и логических операций.

 Бит 1 – Флаг нулевого значения. Этот флаг указывает на нулевой результат ряда арифметических и логических операций.

 Бит 0 – Флаг переноса. Этот флаг указывает на перенос при арифметических и логических операциях.

Микроконтроллер AT90S8535 имеет 4 параллельных порта ввода/вывода A, B,C и D.

Порт А является 8-разрядным двунаправленным портом. Взаимодействие с портом А осуществляется через три регистра в пространстве ввода/вывода памяти данных: регистр данных – PORTA, $1B($3B), регистр направления данных – DDRA, $1A($3A), регистр входных данных – PINA, $19($39). Регистр PINA обеспечивает только возможность чтения, а регистры PORTA и DDRA – возможность чтения и записи. Регистр PINA не является регистром в полном смысле этого слова. Обращение к нему обеспечивает чтение физического состояния каждого вывода порта. Порт А служит также для ввода аналоговых сигналов A/D.

Регистр данных порта А – PORTA

Бит

7

6

5

4

3

2

1

0

$1B($3B)

PORTA7

PORTA6

PORTA5

PORTA4

PORTA3

PORTA2

PORTA1

PORTA0

PORTA

Чтение/Запись

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Исходное значение

0

0

0

0

0

0

0

0

Регистр направления данных порта А – DDRA

Бит

7

6

5

4

3

2

1

0

$1A ($3A)

DDA7

DDA6

DDA5

DDA4

DDA3

DDA2

DDA1

DDA0

DDRA

Чтение/Запись

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Исходное значение

0

0

0

0

0

0

0

0

Регистр входных данных порта А – PINA

Бит

7

6

5

4

3

2

1

0

$19 ($39)

PINA7

PINA6

PINA5

PINA4

PINA3

PINA2

PINA1

PINA0

PINA

Чтение/Запись

R

R

R

R

R

R

R

R

Исходное значение

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Порт В является 8-разрядным двунаправленным портом ввода/вывода. Также как и у порта А взаимодействие с портом В осуществляется через три регистра в пространстве ввода/вывода памяти данных: регистр данных – PORTB, $18($38), регистр направления данных – DDRB, $17($37) и регистр входных данных – PINB, $16($36). Регистр PINB обеспечивает возможность только чтения. Регистр PINB не является регистром в полном смысле этого слова. Обращение к нему обеспечивает чтение физического состояния каждого вывода порта. Выводы порта В могут выполнять альтернативные функции, указанные в табл. 2.1.

Таблица 2.1. Альтернативные функции выводов порта В

Вывод порта

Альтернативная функция

PB0

T0 – вход тактового сигнала таймера/счетчика 0

PB1

T1 – вход тактового сигнала таймера/счетчика 1

PB2

AIN0 – положительный вывод компаратора

PB3

AIN1 – отрицательный вывод компаратора

PB4

–вход выбора ведомого SPI

PB5

MOSI – установка ведущий выход/ведомый вход SPI

PB6

MISO – установка ведущий вход/ведомый выход SPI

PB7

SCK – тактовый сигнал SPI

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

Регистр данных порта BPORTB

Бит

7

6

5

4

3

2

1

0

$18 ($38)

PORTB7

PORTB6

PORTB5

PORTB4

PORTB3

PORTB2

PORTB1

PORTB0

PORTB

Чтение/Запись

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Исходное значение

0

0

0

0

0

0

0

0

Регистр направления данных порта B – DDRB

Бит

7

6

5

4

3

2

1

0

$17 ($37)

DDB7

DDB6

DDB5

DDB4

DDB3

DDB2

DDB1

DDB0

DDRB

Чтение/Запись

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Исходное значение

0

0

0

0

0

0

0

0

Регистр входных данных порта B – PINB

Бит

7

6

5

4

3

2

1

0

$16 ($36)

PINB7

PINB6

PINB5

PINB4

PINB3

PINB2

PINB1

PINB0

PINB

Чтение/Запись

R

R

R

R

R

R

R

R

Исходное значение

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Порт С представляет собой 8-разрядный двунаправленный порт ввода/вывода. Также как у портов А и В взаимодействие с портом С осуществляется через три регистра в пространстве ввода/вывода памяти данных: регистр данных – PORTC, $15($35), регистр направления данных – DDRC, $14($34) и регистр входных данных – PINC, $13($33). Регистр PINC обеспечивает только возможность чтения, а регистры PORTC и DDRC – возможность чтения и записи. Регистр PINC не является регистром в полном смысле этого слова. Обращение к нему обеспечивает чтение физического состояния каждого вывода порта.

У порта С только два вывода могут выполнять альтернативные функции: выводы PC6 и PC7 выполняют функции TOSC1 и TOSC2 таймера/счетчика 2.

Регистр данных порта CPORTC

Бит

7

6

5

4

3

2

1

0

$15 ($35)

PORTC7

PORTC6

PORTC5

PORTC4

PORTC3

PORTC2

PORTC1

PORTC0

PORTC

Чтение/Запись

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Исходное значение

0

0

0

0

0

0

0

0

Регистр направления данных порта C – DDRC

Бит

7

6

5

4

3

2

1

0

$14 ($34)

DDC7

DDC6

DDC5

DDC4

DDC3

DDC2

DDC1

DDC0

DDRC

Чтение/Запись

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Исходное значение

0

0

0

0

0

0

0

0

Регистр входных данных порта C – PINC

Бит

7

6

5

4

3

2

1

0

$13 ($33)

PINC7

PINC6

PINC5

PINC4

PINC3

PINC2

PINC1

PINC0

PINC

Чтение/Запись

R

R

R

R

R

R

R

R

Исходное значение

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Порт D является 8-разрядным двунаправленным портом ввода/вывода. Также как и у портов А, В и С взаимодействие с портом D осуществляется через три регистра в пространстве ввода/вывода памяти данных: регистр данных – PORTD, $12($32), регистр направления данных – DDRD, $11($31) и регистр входных данных – PIND, $10($30). Регистр PIND обеспечивает возможность чтения, а регистры PORTD и DDRD – возможность чтения и записи. Регистр PIND не является регистром в полном смысле этого слова. Обращение к нему обеспечивает чтение физического состояния каждого вывода порта.

Выводы порта D могут выполнять альтернативные функции, указанные в табл. 2.2.

Таблица 2.2. Альтернативные функции выводов порта D

Вывод порта

Альтернативная функция

PD0

RxD – вход приемника UART

PD1

TxD – выход передатчика UART

PD2

INT0 – вход внешнего прерывания 0

PD3

INT1 – вход внешнего прерывания 1

PD4

OC1B – вывод сравнения выхода В таймера/счетчика 1

PD5

OC1А – вывод сравнения выхода А таймера/счетчика 1

PD6

ICP – вход триггера захвата таймера/счетчика 1

PD7

OC2 – вывод сравнения выхода таймера/счетчика 2

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

Регистр данных порта DPORTD

Бит

7

6

5

4

3

2

1

0

$12 ($32)

PORTD7

PORTD6

PORTD5

PORTD4

PORTD3

PORTD2

PORTD1

PORTD0

PORTD

Чтение/Запись

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Исходное значение

0

0

0

0

0

0

0

0

Регистр направления данных порта DDDRD

Бит

7

6

5

4

3

2

1

0

$11 ($31)

DDD7

DDD6

DDD5

DDD4

DDD3

DDD2

DDD1

DDD0

DDRD

Чтение/Запись

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Исходное значение

0

0

0

0

0

0

0

0

Регистр входных данных порта DPIND

Бит

7

6

5

4

3

2

1

0

$10 ($30)

PIND7

PIND6

PIND5

PIND4

PIND3

PIND2

PIND1

PIND0

PIND

Чтение/Запись

R

R

R

R

R

R

R

R

Исходное значение

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Так как рассматриваемая работа первая, то для приобретения обучающимися навыков работы с лабораторным комплексом все обучающиеся сначала делают одинаковую работу. Со своих рабочих мест они вводят в ПЭВМ одну и ту же задачу вычитания из числа 5 числа 3, приведённую в п. 1.5.3.1. После компиляции программы она записывается в микроконтроллер рабочего места и демонстрируется её работа преподавателю.

После такого знакомства с комплексом обучающийся приступает к выполнению индивидуального задания. При наличии времени преподаватель может усложнить индивидуальное задание.

Варианты индивидуальных заданий

  1. Организовать сложение двух чисел и индикацию младшей тетрады результата на семисегментном индикаторе HG2. На блоке управления располагаются кнопки и тумблеры. Кнопки SB2 и SB3 представляют собой младшие разряды первого слагаемого, т.е. возможен набор чисел от 0 до 3. Тумблеры SA4, SA5 представляют собой соответственно 3-й и 4-й разряды 2-го слагаемого, т.е. возможен набор десятичных чисел 0,4,8,12. На индикаторе высвечивать результат в шестнадцатеричном формате, т.е. 0...F.

  2. В памяти записать два массива, например по 5 ячеек в каждом массиве. В ячейках записаны шестнадцатеричные цифры от 00 до 0FH. Цифры в массивах, кроме одной разные. Программа должна определить какая цифра присутствует в обоих массивах и при нажатии на кнопку SB3 (кратковременно) высвечивать ее в шестнадцатеричном виде на индикаторе HG2. Если цифры в массивах разные, то при нажатии на кнопку SB3 (кратковременно) на индикаторе HG2 высвечивается символ "Н" (нет).

  3. При нажатии на кнопку SB1 загорается цифра 1 и светодиод VD4. При нажатии на кнопку SB2 загорается цифра 2 и светодиод VD5. При одновременном нажатии кнопок SB1 и SB2 загорается цифра 3 и включается светодиод VD6.

  4. Умножить положительное число 2 на число 3 и при нажатой кнопке SB1 на индикаторе HG2 высветить результат. При отпущенной кнопке на индикаторе горит символ П.

  5. При включении микроконтроллера и кратковременном нажатии кнопки SB6 “RESET” при отключенном тумблере SA1 горит светодиод VD4 и на индикаторе HG1 горит цифра 2. При включении тумблера SA1 светодиод VD4 и индикатор HG1 гаснут, загорается светодиод VD5 и на индикаторе HG2 загорается цифра 5. При нажатой кнопке SB2 все светодиоды и индикаторы гаснут.

  6. Организовать сложение двух чисел 3 и 4. При включении микроконтроллера и кратковременном нажатии кнопки SB6 “RESET” загорается и постоянно горит светодиод VD5. При нажатой кнопке SB1 на индикаторе HG2 горит первое слагаемое, при нажатой кнопке SB2 – второе слагаемое, при нажатой кнопке SB3 – результат.

  7. В массиве из 16 ячеек памяти располагаются шестнадцатеричные числа от 00 до 00F. В массиве есть только одно число, которое повторяется несколько раз. Выявить какое это число и сколько раз оно повторяется. При нажатии на кнопку SB1 на семисегментном индикаторе HG1 загорается повторяющееся число. При нажатии на кнопку SB2 на семисегментном индикаторе HG2 высвечивается число его повторений. Если нет повторяющегося числа, то при нажатии на кнопку SB1 на индикаторе HG1 загорается символ "Н" (нет).

  8. При включении микроконтроллера на индикаторе HG2 горит "0". Организовать счет и индикацию числа нажатий кнопки SB1 на индикаторе HG2 в шестнадцатеричном виде, т. е. 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 ….. Нажатие кнопки сопровождается загоранием светодиода VD5. Для упрощения программы мер борьбы с дребезгом контактов не предпринимать.