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

Микроконтроллеры AVR

.pdf
Скачиваний:
119
Добавлен:
27.03.2015
Размер:
629.41 Кб
Скачать

данных или устройств ввода/вывода, запрет/разрешение прерываний производится через этот бит, иначе – через специализированные команды запрета/разрешения прерываний. В некоторых процессорах прерывания по умолчанию (после рестарта) разрешены, в других (в том числе – в AVR) – запрещены.

-Индивидуальное маскирование прерываний – запрещает прерывания от определенного источника. Каждому источнику прерываний соответствует свой флаг маскирования. В некоторых процессорах эти флаги группируются в специальные регистры масок, в других (в том числе – в AVR) – "разбросаны" по различным регистрам управления периферией.

-Событие, вызывающее прерывание может быть кратковременным (например

– фронт логического сигнала). Для того, чтобы не потерять информацию о таком событии, если оно произошло в то время, когда прерывание было запрещено, существуют флаги прерываний. Каждому источнику прерывания соответствует свой флаг, который устанавливается при возникновении события. Сброс флага прерывания происходит при вызове подпрограммы его обслуживания. Как правило, флаги прерываний могут устанавливаться и сбрасываться программно, что позволяет имитировать те или иные прерывания, например, для целей отладки, либо отменять обработку каких-либо событий. В микроконтроллерах AVR возможно только сбрасывать флаги прерываний, причем, для сброса необходимо записать в соответствующий бит единицу. Аналогично флагам маскирования, флаги прерывания могут группироваться в специальные регистры, либо (в том числе – в AVR) могут быть разбросаны по различным регистрам.

-Приоритет прерываний определяет очередность, в которой будут обслуживаться два и более ожидающих обслуживания незамаскированных прерывания от разных источников. В некоторых процессорах приоритет может быть изменен программно. В AVR приоритет жестко фиксирован – чем меньше номер вектора прерывания, тем выше приоритет соответствующего ему источника: самый высокий приоритет – у внешнего прерывания INT0 (вектор №2) самый низкий – у прерывания от аналогового компаратора (вектор №11). (Обращение к вектору №1 происходит при рестарте микроконтроллера; этот вектор содержит команду перехода на начало основной программы).

-Для того, чтобы немедленно после начала одной подпрограммы обработки прерывания она не была прервана другим прерыванием, либо не возникла рекурсия прерывания сигнал прерывания может присутствовать постоянно (если, например, прерывание формируется при наличии на входе заданного уровня), при вызове обработчика прерывания автоматически производится глобальный запрет прерываний. В конце обработчика прерывания вместо команды ret используется команда reti, которая не только возвращает управление прерванной программе, но и выполняет глобальное разрешение прерываний.

31

Рассмотрим пример проектирования программы с использованием прерываний. Задача: для управления некоторым устройством требуется сформировать три периодических логических сигнала в соответствии с рисунком 6. Временные параметры сигналов приведены в таблице 4. Задача должна быть решена с помощью микроконтроллера At90S2313 с тактовой частотой 8МГц.

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

tB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tC

 

 

C

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 6. Управляющие логические сигналы A, B и C

Таблица 4. Временные параметры формируемых сигналов

 

 

Параметр

 

 

 

 

 

 

 

 

 

 

 

 

 

Обозн.

Вариант I

Вариант II

Вариант III

Задержка импульса A от начала периода

 

tA

0 мкс

0 мкс

0 с

Длительность импульса А

 

 

 

 

τA

256 мкс

200 мкс

1 с

Задержка импульса B от начала периода

 

tB

256 мкс

200 мкс

1 с

Длительность импульса B

 

 

 

 

τB

256 мкс

200 мкс

1 с

Задержка импульса C от начала периода

 

tC

512 мкс

400 мкс

2 с

Длительность импульса C

 

 

 

 

τC

256 мкс

200 мкс

1 с

Для формирования временных последовательностей необходима временная база, в качестве которой используют таймеры. В состав At90S2313 входят два таймера. 8-разрядный таймер 0 способен формировать прерывания по переполнению (T0 Overflow Interrupt); 16-разрядный таймер 1 может формировать прерывания по переполнению (T1 Overflow Interrupt), по выходному сравнению (T1 Output Compare Interrupt) и по входу захвата (T1 Input Capture Interrupt). Очевидно, для наших целей может подойти одно из первых трех прерываний.

Период переполнения 8-разрядного таймера 0 определяется как TOVR 256/FT , где FT – частота синхронизации таймера. Частота синхронизации таймера может формироваться из тактовой частоты микроконтроллера FOSC с коэффициентом деления 1, 8, 64, 256, 1024. Для решения поставленной задачи в варианте I для формирования временной базы удобно использовать прерывание по переполнению таймера 0, с частотой синхронизации 1/8 от тактовой частоты микроконтроллера (1МГц). На рисунке 7 показана связь сигнала прерывания и формируемых временных последовательностей. На рисунке 8 в виде графа показан алгоритм работы программы.

32

A

t

B

t

C

t

Прерывания

t

Рисунок 7. Прерывание по переполнению таймера 0 и формируемые временные последовательности.

Инициализация

A=1

B=0

C=0

прерывание прерывание

A=0

A=0

B=1

B=0

C=0

C=1

прерывание

Рисунок 8. Алгоритм программы формирования временных последовательностей.

Ниже приводится исходный текст программы, формирующей временные диаграммы согласно рисункам 6-8. В качестве выхода A используется PB.0, в качестве B – PB.1, в качестве C – PB.2. В разделе инициализации эти выводы микроконтроллера настраиваются в качестве выходов. Там же таймер 0 настраивается на синхронизацию с частотой 1/8 от тактовой и разрешается прерывание по его переполнению. Основная программа представляет собой пустой цикл. Временная диаграмма полностью реализуется в обработчике прерывания по переполнению таймера 0.

Микроконтроллер с этой программой фактически реализует простейший автомат Мура. Естественно, на базе микроконтроллеров можно реализовывать гораздо более сложные цифровые автоматы.

.INCLUDE "..\appnotes\2313def.inc" ;подключение файла со

.EQU A_LINE =

0

;спецификацией регистров ввода/вывода

;линия PORTB, соответствующая сигналу A

.EQU B_LINE =

1

;линия PORTB, соответствующая сигналу B

33

.EQU C_LINE = 2

;линия PORTB, соответствующая сигналу C

.DSEG

.ORG 0xc0

stack: .BYTE 0x10 ;область стека

.EQU sp_ini = stack+0x0f

.CSEG

;========= Таблица векторов прерываний ============================

.ORG 0x00

rjmp

RESET

;вектор прерывания RESET

.ORG 0x06

OVR0_isr

;вектор прерывания по переполнению Timer0

rjmp

;========= Основная программа =====================================

RESET:

 

;инициализация указателя стека

ldi r16,sp_ini

out SPL,r16

 

sbi PORTB,A_LINE

;установить A в 1

ldi r16,0x07

;разрешить PB.0, PB.1, PB.2 как выходы

out DDRB,r16

 

clr r16

 

;занести 0 в счетчик Timer0

out TCNT0,r16

 

ldi r16,0x02

;частота синхронизации Timer0 = Fosc/8

out TCCR0,r16

 

ldi r16,0x02

;разрешить прерывание по переполнению Timer0

out TIMSK,r16

sei

 

;глобальное разрешение прерываний

rjmp PC

 

;пустой цикл (ожидание прерывания)

;========== Обработчик прерывания по переполнению Timer0 ==========

OVR0_isr:

in r16,SREG ;сохранение в стеке регистра статуса push r16

sbis PORTB,A_LINE rjmp OVR0_m1

;1-е состояние: A==1, B==0, C==0 cbi PORTB,A_LINE ;A=0

sbi PORTB,B_LINE ;B=1 rjmp OVR0_end

OVR0_m1:

sbis PORTB,B_LINE rjmp OVR0_m2

;2-е состояние: A==0, B==1, C==0 cbi PORTB,B_LINE ;B=0

sbi PORTB,C_LINE ;C=1 rjmp OVR0_end

OVR0_m2: ;3-е состояние: A==0, B==0, C==1 cbi PORTB,C_LINE ;C=0

sbi PORTB,A_LINE ;A=1 OVR0_end:

pop r16 ;восстановление из стека регистра статуса out SREG,r16

reti ;конец обработчика прерывания

34

Для значений времен из варианта II можно модернизировать предыдущую программу, уменьшив период переполнения таймера 0. Для этого, в обработчик прерывания сразу после сохранения регистра статуса нужно добавить следующий фрагмент:

ldi

r16,57

;занести 57 в счетчик Timer0

out

TCNT0,r16

 

Врезультате, переполнение таймера 0 будет происходить не каждые 256, а каждые 200 его тактов синхронизации, т.е., 200мкс. (1 такт синхронизации таймера 0 в данном случае равен восьми тактам синхронизации микроконтроллера; на передачу управления обработчику и выполнение команд сохранения регистра SREG, и занесения в счетчик таймера 0 нового значения уходит, примерно, 16 процессорных тактов, или 2 такта синхронизации таймера 0, поэтому, в таймер 0 заносится значение 57, а не 55, как можно было бы ожидать).

Вварианте III используются значительно бόльшие временные интервалы. Можно было бы применить 16-разрядный таймер 1 аналогично таймеру 0 в варианте II (при частоте его синхронизацииFT FOSC /1024 8МГц/1024 период

переполнения составит TOVR 65536/FT 8.3с). Но воспользуемся этой задачей, чтобы показать возможность программного наращивания разрядности таймеров. Установим тактовую частоту таймера 0 FT FOSC /256. Одной секунде будут соответствовать 31250 тактов синхронизации таймера, или 122 цикла переполнения плюс 18 тактов таймера. Нам понадобится глобальная переменная Counter для хранения числа переполнений. Текст программы приводится ниже.

.include "..\Appnotes\2313def.inc"

.EQU NTau = 122

.EQU NRem = 18

.EQU A_LINE = 0

.EQU B_LINE = 1

.EQU C_LINE = 2

.DEF Counter = r17

.DSEG

.ORG 0xc0

stack: .BYTE 0x10

;число переполнений Timer0, соответствующее 1c ;число дополнительных тактов Timer0

;линия PORTB, соответствующая сигналу A ;линия PORTB, соответствующая сигналу B ;линия PORTB, соответствующая сигналу C

;счетчик переполнений

;область стека

.EQU sp_ini = stack+0x0f

.CSEG

;========= Таблица векторов прерываний ============================

.ORG 0x00

rjmp

RESET

;вектор прерывания RESET

.ORG 0x06

OVR0_isr

;вектор прерывания по переполнению Timer0

rjmp

;========= Основная программа =====================================

RESET:

 

;инициализация указателя стека

ldi r16,sp_ini

35

out SPL,r16

 

sbi PORTB,A_LINE

;установить A в 1

ldi r16,0x07

;разрешить PB.0, PB.1, PB.2 как выходы

out DDRB,r16

 

clr r16

;занести 0 в счетчик Timer0

out TCNT0,r16

;частота синхронизации Timer0 = Fosc/256

ldi r16,0x04

out TCCR0,r16

;разрешить прерывание по переполнению Timer0

ldi r16,0x02

out TIMSK,r16

 

clr Counter

;обнулить счетчик переполнений

sei

;глобальное разрешение прерываний

rjmp PC

;пустой цикл (ожидание прерывания)

;========== Обработчик прерывания по переполнению Timer0 ==========

OVR0_isr:

in r16,SREG ;сохранение в стеке регистра статуса push r16

inc Counter

;увеличить счетчик переполнений

cpi Counter,NTau

;если Counter<NTau, завершить обработчик

brlo OVR0_end

brne OVR0_0

;если Counter>NTau, переключить выходы

ldi r16,256-NRem ;если Counter==NTau, настроить переполнение

out TCNT0,r16

;через NRem тактов Timer0

rjmp OVR0_end

 

OVR0_0:

sbis PORTB,A_LINE rjmp OVR0_m1

;1-е состояние: A==1, B==0, C==0 cbi PORTB,A_LINE ;A=0

sbi PORTB,B_LINE ;B=1 rjmp OVR0_end

OVR0_m1:

sbis PORTB,B_LINE rjmp OVR0_m2

;2-е состояние: A==0, B==1, C==0 cbi PORTB,B_LINE ;B=0

sbi PORTB,C_LINE ;C=1 rjmp OVR0_end

OVR0_m2: ;3-е состояние: A==0, B==0, C==1 cbi PORTB,C_LINE ;C=0

sbi PORTB,A_LINE ;A=1 OVR0_end:

pop r16 ;восстановление из стека регистра статуса out SREG,r16

reti ;конец обработчика прерывания

Задания:

1.Настройте Таймер 0 на синхронизацию с заданной частотой FCLK0, формируемой из тактовой частоты микроконтроллера FOSC. Обработчик прерывания по переполнению Таймера 0 должен формировать два периодических сигнала со скважностью S=2 и заданными периодами T (см. таблицу 5).

36

2.Настройте Таймер 1 на формирование прерывания от выходного сравнения и синхронизацию с заданной частотой FCLK1, формируемой из тактовой частоты микроконтроллера FOSC. Обработчик прерывания от выходного сравнения должен обеспечить формирование на выходе OC1 сигнала со скважностью S=4 и периодом T (см. таблицу 5).

Таблица 5. Исходные данные для заданий 1 и 2

Вариант

Данные для задания 1

Данные для задания 2

 

FCLK0

T для PB.3

T для PB.2

FCLK1

T для OC1

1

FOSC

FOSC/256

FOSC/2560

FOSC/64

FOSC/6400

2

FOSC/8

FOSC/16384

FOSC/2048

FOSC/8

FOSC/20000

3

FOSC/64

FOSC/16384

FOSC/32768

FOSC

FOSC/8000

4

FOSC/256

FOSC/262144

FOSC/65536

FOSC/8

FOSC/8000

5

FOSC/1024

FOSC/262144

FOSC/1048576

FOSC/64

FOSC/25600

3.Настройте Таймер 1 на работу в режиме 10-разрядного ШИМ с частотой синхронизации равной тактовой частоте микроконтроллера FOSC. Обработчик прерывания от выходного сравнения должен обеспечивать линейное изменение скважности ШИМ-сигнала.

4.Разработайте программу, которая с помощью периодического прерывания реализует динамическую индикацию для схемы на рисунке 5 – отображает в 16-ричном виде значение 8-разрядной переменной.

Контрольные вопросы и задания:

1.Способы организации реакции процессора на внешние события.

2.Механизм обслуживания прерывания.

3.Особенности подпрограмм обработки прерываний.

4.Приоритеты прерываний, маскирование прерываний, флаги прерываний.

5.Формирование циклических временных последовательностей с помощью микроконтроллеров.

6.Программное наращивание разрядности аппаратных таймеров.

7.Реализация автоматов Мура и Милли с помощью микроконтроллеров.

Приложение 1. Флаги регистра состояния процессора SREG

Бит

Флаг

Название

Назначение

0

C

Carry flag

Флаг переноса

1

Z

Zero flag

Флаг нулевого результата

2

N

Negative flag

Флаг отрицательного результата

3

V

Two’s complement oVerflow indicator

Флаг переполнения

4

S

N V

Флаг знака

5

H

Half Carry flag

Флаг полупереноса

6

T

Transfer bit

Пересылочный бит

7

I

Global Interrupt enable/disable flag

Флаг глобального

 

 

 

разрешения/запрета прерываний

37

Приложение 2. Режимы адресации микроконтроллера At90S2313

Адресация

Описание

 

 

 

 

 

 

 

 

 

 

 

 

 

Прямая

Операнд содержится в

15

 

 

 

 

5 4

 

0

Регистровый

регистровая

регистре с номером d

 

 

 

 

 

 

 

 

 

 

 

файл

 

OP

 

 

 

d

 

 

 

адресация с

(Rd)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

одним

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

регистром

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

31

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Прямая

Операнды содержатся в

15

10 9

 

 

5 4

 

0

Регистровый

регистровая

регистрах с номерами d

 

 

 

 

 

 

 

 

 

 

 

файл

 

OP

 

r

 

d

 

 

 

адресация с

(Rd) и r (Rr). Результат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

двумя

сохраняется в регистре

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

регистрами

d (Rd)

 

 

 

 

 

 

 

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

31

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Прямая

Адрес операнда в

15

 

 

 

 

5

 

0

Память устройств

адресация

пространстве устройств

 

 

 

 

 

 

 

 

 

 

ввода/вывода

 

OP

 

n

 

P

 

 

регистра

ввода/вывода

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

ввода/вывода

содержится в шести

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

битах слова команды.

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поле n обозначает

 

 

 

 

 

 

 

 

 

 

 

 

 

 

адрес регистра-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

приемника или

 

 

 

 

 

 

 

 

 

 

 

 

63

 

источника

 

 

 

 

 

 

 

 

 

 

 

 

 

Прямая

Адрес приемника или

31

 

 

 

 

20 19 16

 

 

 

 

адресация

источника в

 

 

 

 

 

 

 

 

 

 

 

 

 

Память

 

 

 

OP

 

 

 

r/d

 

 

 

памяти

пространстве памяти

 

 

 

 

 

 

 

 

 

данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16 младших бит

 

 

 

данных

данных содержится в

 

 

 

 

 

 

 

0x00

 

 

 

 

 

 

 

 

16 младших битах 32-

 

 

15

 

 

 

 

 

 

 

0

 

 

 

 

 

разрядного кода

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

команды

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0xDF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Косвенная

Адрес операнда

15

 

 

 

 

 

 

 

0

 

 

Память

адресация

содержится в регистре

 

 

 

 

 

 

 

 

 

 

 

 

данных

 

 

Регистр X, Y или Z

 

 

 

 

X, Y или Z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0x00

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0xDF

38

Приложение 2. Режимы адресации микроконтроллера At90S2313 (продолжение)

Адресация

Описание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Косвенная

Адрес операнда

15

 

 

 

 

 

 

 

0

 

 

 

 

 

Память

адресация со

вычисляется как

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

данных

 

 

 

Регистр Y или Z

 

 

 

 

 

 

 

 

 

 

 

 

смещением

сумма содержимого

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0x00

 

регистра Y или Z с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

адресом,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

содержащемуся в 6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

битах кода команды

15

 

11 10 6 5

 

 

0

 

 

 

 

 

 

 

 

 

 

0xDF

 

 

 

 

 

OP

 

 

 

r

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Косвенная

Содержимое регистра

15

 

 

 

 

 

 

 

0

 

 

 

 

Память

адресация с

X, Y или Z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

данных

 

 

 

Регистр X, Y или Z

 

 

 

 

пре-

уменьшается на

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0x00

декрементом

единицу. Адресом

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

операнда является

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

уменьшенное

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

содержимое

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-1

 

 

 

 

 

 

 

 

 

 

 

 

соответствующего

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0xDF

 

регистра

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Косвенная

Регистр X,Y или Z

15

 

 

 

 

 

 

 

0

 

 

 

 

Память

адресация с

увеличивается на

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

данных

 

 

 

Регистр X, Y или Z

 

 

 

 

пост-

единицу после

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0x00

инкрементом

выполнения команды.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Адресом операнда

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

является содержимое

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

соответствующего

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

регистра-указателя до

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0xDF

 

инкрементирования

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Адресация

Адрес байта в памяти

15

 

 

 

 

 

 

 

1 0

 

 

 

 

 

Память

констант с

программ задаётся

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

программ

 

 

 

 

Регистр Z

 

 

 

 

 

 

 

 

 

 

 

 

использова-

содержимым регистра

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0x00

нием

Z. Его старшие 15 бит

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

команды

определяют адрес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LPM

слова, а младший бит

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

выбирает младший

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

байт (если равен 0)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0xDF

 

или старший байт

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

слова (если равен 1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

39

Приложение 3. Блок-схема микроконтроллера At90S2313

 

GND

Vcc

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

XTAL1

XTAL2

 

 

 

8-РАЗРЯДНАЯ ШИНА ДАННЫХ

 

 

 

 

 

 

ВНУТРЕННИЙ

ГЕНЕРАТОР

 

 

 

 

 

ГЕНЕРАТОР

 

 

 

 

 

 

 

ПРОГРАММНЫЙ

УКАЗАТЕЛЬ

СТОРОЖЕВОЙ

СИНХРОНИЗАЦИЯ

/RESET

 

СЧЕТЧИК

СТЕКА

ТАЙМЕР

И УПРАВЛЕНИЕ

 

FLASH-ПАМЯТЬ

СТАТИЧЕСКОЕ

РЕГИСТР MCU

 

 

ПРОГРАММ

 

ОЗУ

CONTROL

 

 

РЕГИСТР

РЕГИСТРЫ

ТАЙМЕРЫ-

 

 

КОМАНДЫ

СЧЕТЧИКИ

 

 

ОБЩЕГО

 

 

 

 

НАЗНАЧЕНИЯ

 

 

 

 

 

 

X

КОНТРОЛЛЕР

 

 

ДЕШИФРАТОР

 

Y

ПРЕРЫВАНИЙ

 

 

КОМАНДЫ

 

Z

 

 

 

 

 

 

 

EEPROM

 

 

К ЛИНИЯМ

 

АЛУ

 

 

 

УПРАВЛЕНИЯ

 

 

 

 

 

 

 

РЕГИСТР

 

 

 

 

 

СТАТУСА

 

 

 

УПРАВЛЕНИЕ

 

 

 

 

 

ПРОГРАММИ-

 

SPI

UART

 

 

РОВАНИЕМ

 

 

 

 

 

+ -

АНАЛОГОВЫЙ КОМПАРАТОР

РЕГИСТР

РЕГИСТР НАПР.

РЕГИСТР

РЕГИСТР НАПР.

 

 

 

 

 

 

ДАННЫХ PORTB

ДАННЫХ PORTB

ДАННЫХ PORTD

ДАННЫХ PORTD

 

 

 

ДРАЙВЕРЫ PORTB

ДРАЙВЕРЫ PORTD

 

40