При использовании команд IN и OUT используются адреса ввода-вывода с $00 по $3F. Но к ним же можно обращаться и как к ячейкам внутреннего ОЗУ. При этом к непосредственному адресу регистра ввода-вывода необходимо прибавить $20.
Следует помнить, что регистры ввода-вывода в пределах адресов от $00 по $1F имеют программно доступные биты. Обращение к ним осуществляется командами SBI и CBI, а проверка состояния – командами SBIS и SBIC.
При арифметических операциях используется регистр состояния SREG, располагаемый по адресу $3F($5F). Формат этого регистра следующий:
Регистр состояния – SREG.Адрес – $3F($5F)
Бит
Имя бита
I
T
H
S
V
N
Z
C
Чтение/Запись
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Исходное значение
Бит 7(I) – Разрешение всех прерываний. Для разрешения прерываний этот бит должен быть установлен в состояние 1. Управление разрешением конкретного прерывания выполняется регистром маски прерывания EIMSK и TIMSK. Если этот бит очищен (= 0), то ни одно из прерываний не обрабатывается. Бит аппаратно очищается после возникновения прерывания и устанавливается для последующего разрешения прерывания командой RETI.
Бит 6 (T) – Бит сохранения копии. Команды копирования бита BLD и BST используют этот бит как источник и приемник при операциях с битами. Командой BST бит регистра общего назначения копируется в бит T, командой BLD бит Т копируется в бит регистра общего назначения.
Бит 5 (H) – Флаг полупереноса. Он указывает на перенос между тетрадами при выполнении ряда арифметических операций.
Бит 4 (S) – Бит знака. Бит S имеет значение результата операции, исключающее ИЛИ (NÅV) над флагами отрицательного значения (N) и дополнения до двух флага переполнения (V).
Бит 3 (V) – Дополнение до двух флага переполнения. Он поддерживает арифметику дополнения до двух.
Бит 2 (N) – Флаг отрицательного значения. Этот флаг указывает на отрицательный результат ряда арифметических и логических операций.
Бит 1 (Z) – Флаг нулевого значения. Этот флаг указывает на нулевой результат ряда арифметических и логических операций.
Бит 0 (C) – Флаг переноса. Этот флаг указывает на перенос при арифметических и логических операциях.
Микроконтроллер AT90S8535 имеет четыре параллельных порта ввода/вывода A, B, C и D. Все четыре параллельных порта являются восьмиразрядными двунаправленными портами.
Взаимодействие с каждым из портов осуществляется через три регистра в пространстве ввода/вывода памяти данных:
регистр данных,
регистр направления данных,
регистр входных данных.
Через регистры данных осуществляется обмен данными с внешними устройствами.
Значения битов в регистре направления данных определяют, как настроены соответствующие выводы порта. Когда бит сброшен (равен нулю), то вывод порта настроен на прием информации от внешнего источника. А если бит установлен (равен единице), то вывод настроен на выдачу информации внешнему приемнику.
Регистры данных и направления данных обеспечивают возможность чтения и записи.
Регистры входных данных обеспечивают только возможность чтения. Обращение к регистрам входных данных обеспечивает чтение физического состояния каждого вывода порта.
Каждый из портов имеет свои особенности использования. Например, порт А служит также для ввода аналоговых сигналов A/D. Выводы портов B, C, D могут выполнять альтернативные функции.
Ниже приводятся обозначения портов, их выводов, альтернативных функций выводов и элементов блока управления, подключенных к этим выводам.
Регистр данных порта А – PORTA.Адрес – $1B ($3B)
Бит
Имя бита
Подключенный элемент блока управления
Вывод порта
Альтернативная функция
PORTA7
–
PA7
нет
PORTA6
SA3
PA6
нет
PORTA5
SA2
PA5
нет
PORTA4
SA1
PA4
нет
PORTA3
SB3
PA3
нет
PORTA2
SB2
PA2
нет
PORTA1
SB1
PA1
нет
PORTA0
–
PA0
нет
Регистр направления данных порта А – DDRA. Адрес – $1A ($3A)
Бит
Имя бита
DDA7
DDA6
DDA5
DDA4
DDA3
DDA2
DDA1
DDA0
Регистр входных данных порта А – PINA. Адрес – $19 ($39)
Бит
Имя бита
PINA7
PINA6
PINA5
PINA4
PINA3
PINA2
PINA1
PINA0
Регистр данных порта B – PORTB.Адрес – $18($38)
Бит
Имя бита
Подключенный элемент блока управления
Bывод порта
Альтернативная функция
PORTB7
–
PB7
SCK – тактовый сигнал SPI
PORTB6
–
PB6
MISO – установка ведущий вход/ведомый выход SPI
PORTB5
–
PB5
MOSI – установка ведущий выход/ведомый вход SPI
PORTB4
–
PB4
– вход выбора ведомого SPI
PORTB3
Выбор HG2 (Правого, младшего индикатора)
PB3
AIN1 – отрицательный вывод компаратора
PORTB2
Выбор HG1 (Левого, старшего индикатора)
PB2
AIN0 – положительный вывод компаратора
PORTB1
SB5
PB1
T1 – вход тактового сигнала таймера/счетчика 1
PORTB0
SB4
PB0
T0 – вход тактового сигнала таймера/счетчика 0
Регистр направления данных порта B – DDRB. Адрес – $17($37)
Бит
Имя бита
DDB7
DDB6
DDB5
DDB4
DDB3
DDB2
DDB1
DDB0
Регистр входных данных порта B – PINB. Адрес – $16($36)
Бит
Имя бита
PINB7
PINB6
PINB5
PINB4
PINB3
PINB2
PINB1
PINB0
Регистр данных порта C – PORTC.Адрес – $15($35)
Бит
Имя бита
Подключенный элемент блока управления
Вывод порта
Альтернативная функция
PORTC7
HG1, HG1 – точка
PC7
TOSC1 – таймера/счетчика 2.
PORTC6
HG1, HG1 – сегмент g
PC6
TOSC2– таймера/счетчика 2
PORTC5
HG1, HG1 – сегмент f
PC5
нет
PORTC4
HG1, HG1 – сегмент e
PC4
нет
PORTC3
HG1, HG1 – сегмент d
PC3
нет
PORTC2
HG1, HG1 – сегмент c
PC2
нет
PORTC1
HG1, HG1 – сегмент b
PC1
нет
PORTC0
HG1, HG1 – сегмент a
PC0
нет
Регистр направления данных порта C – DDRC. Адрес – $14($34)
Бит
Имя бита
DDC7
DDC6
DDC5
DDC4
DDC3
DDC2
DDC1
DDC0
Регистр входных данных порта C – PINC.Адрес – $13($33)
Бит
Имя бита
PINC7
PINC6
PINC5
PINC4
PINC3
PINC2
PINC1
PINC0
У порта С только два вывода могут выполнять альтернативные функции: выводы PC6и PC7 выполняют функции TOSC1 и TOSC2 таймера/счетчика 2.
Регистр данных порта D – PORTD.Адрес – $12($32)
Бит
Имя бита
Подключенный элемент блока управления
Вывод порта
Альтернативная функция
PORTD7
HA1звукоизлучатель
PD7
OC2 – вывод сравнения выхода таймера/счетчика 2
PORTD6
VD6красный
PD6
ICP – вход триггера захвата таймера/счетчика 1
PORTD5
VD5желтый
PD5
OC1А – вывод сравнения выхода А таймера/счетчика 1
PORTD4
VD4зеленый
PD4
OC1B – вывод сравнения выхода В таймера/счетчика 1
PORTD3
SA5
PD3
INT1 – вход внешнего прерывания 1
PORTD2
SA4
PD2
INT0 – вход внешнего прерывания 0
PORTD1
–
PD1
TxD – выход передатчика UART
PORTD0
–
PD0
RxD – вход приемника UART
Регистр направления данных порта D – DDRD. Адрес – $11($31)
Бит
Имя бита
DDD7
DDD6
DDD5
DDD4
DDD3
DDD2
DDD1
DDD0
Регистр входных данных порта D – PIND. Адрес – $10($30)
Бит
Имя бита
PIND7
PIND6
PIND5
PIND4
PIND3
PIND2
PIND1
PIND0
Варианты индивидуальных заданий
1. Вычесть из числа 4 число 3. Если включен тумблер SA2, то на индикатор HG1 выдать результат вычитания. Если тумблер SA2 отключен – на индикацию вывести букву Н.
2. Вычесть из числа 6 число 3. Если включен тумблер SA3, то на индикатор HG1 выдать результат вычитания. Если тумблер SA3 отключен – на индикацию вывести букву П.
3. Вычесть из числа 6 число 4. Если включен тумблер SA4, то на индикатор HG1 выдать результат вычитания. Если тумблер SA4 отключен – на индикацию вывести букву Н.
4. Вычесть из числа 7 число 4. Если включен тумблер SA5, то на индикатор HG1 выдать результат вычитания. Если тумблер SA5 отключен – на индикацию вывести букву П.
5. Вычесть из числа 7 число 5. Если нажата кнопка SB1, то на индикатор HG2 выдать результат вычитания. Если кнопка SB1 отключена – на индикацию вывести букву Н.
6. Вычесть из числа 8 число 5. Если нажата кнопка SB2, то на индикатор HG2 выдать результат вычитания. Если кнопка SB2 отключена – на индикацию вывести букву П.
7. Вычесть из числа 8 число 4. Если нажата кнопка SB3, то на индикатор HG2 выдать результат вычитания. Если кнопка SB3 отключена – на индикацию вывести букву Н.
8. Вычесть из числа 9 число 4. Если нажата кнопка SB4, то на индикатор HG2 выдать результат вычитания. Если кнопка SB4 отключена – на индикацию вывести букву П.