Электромеханические системы автоматизации

Характеристика, устройство, конфигурация и назначение микроконтроллеров I8051, PIC16F877, организация их памяти. Основные методы и приемы системного программирования микроконтроллеров и интерфейса на языках семейства ассемблер MCS-51 и PICmicro.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид методичка
Язык русский
Дата добавления 18.04.2010
Размер файла 3,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Вариант

Задание

1

Выполнить бегущий огонь на светодиодах используя для задержки таймер и систему прерываний. Частота сдвига составляет 1 Гц. Кнопкой S3 изменять направление, а S2 - останавливать/запускать бегущий огонь.

2

По нажатию кнопки S3 выдать звуковой сигнал с помощью пьезоизлучателя P1 частотой 1000Гц. При повторном нажатии на S3 выключить сигнал. Нажатием кнопки S2 выполнить смену частоты сигнала до 500Гц. Повторное нажатие на S2 выполняет возврат частоты до 1000Гц.

3

Выполнить формирование звукового сигнала пьезоизлучателем P1 частотой 1500Гц. При нажатии на S3 увеличивать частоту сигналов с дискретностью 250Гц. При нажатии на S2 - уменьшать с дискретностью 250Гц.

4

Выдать звуковой сигнал через пьезоизлучатель P1 с частотой 1000Гц длительностью 0,5с, затем сигнал частотой 500Гц длительностью 0,5с. При нажатии на S3 уменьшать длительность на 0,1с. При нажатии на S2 - увеличивать на 0,1с.

5

Выполнить бегущий огонь на светодиодах при помощи нажатия на кнопки. S3 сдвигает огонь влево, S2 - вправо. При нажатии на кнопки S3, S2 выполнить их «озвучку» на пьезоизлучателе частотой 1000Гц длительностью 0,2с для S3 и 500Гц длительностью 0,2с для S2.

6

Выполнить плавное зажигание светодиодов по «треугольному» закону, используя один из таймеров для задания частоты, а другой - длительности (ШИМ). Период импульсов - 2с.

7

Выполнить плавное зажигание светодиодов по «пилообразному» закону, используя один из таймеров для задания частоты, а другой - длительности (ШИМ). Период импульсов - 2с.

8

Выполнить бегущий огонь на светодиодах при помощи нажатия на кнопки. S3 сдвигает огонь влево, S2 - вправо. При зажигании четных светодиодов выдавать короткий звуковой сигнал на пьезоизлучателе P1 частотой 1500Гц, нечетных - 750Гц.

9

Выполнить проигрывание музыкального отрывка с произвольными тонами. Для задания частоты использовать один таймер, длительности - другой. Для увеличения длительности тона разрешается использовать дополнительное деление в регистрах. Число тонов - не менее 5.

10

По нажатию на кнопку S3 выполнить бегущий огонь. При смене светящегося светодиода выполнить звуковой сигнал частотой 1000Гц, длительностью 0,2с. При достижении последнего светодиода выдать звуковой сигнал частотой 750Гц, длительностью 0,5с и изменить направление бегущего огня. При повторном нажатии на S3 потушить светодиоды и выдать двухкратный сигнал частотой 1500Гц и длительностью 0,2с. Пауза между сигналами - 0,2с.

11

Выдать звуковой сигнал частотой 1000Гц длительностью 0,5с, после этого сдвинуть светящийся светодиод. При нажатии на S3 выполнить паузу 5с. Нажатием кнопки S2 можно прервать паузу. Если не нажата ни одна из кнопок - повторить процесс.

12

Выполнить бегущий огонь на светодиодах с интервалом сдвига 5с. Допускается дополнительное деление интервала времени в регистре. При нажатии на S3 должен гореть постоянно старший светодиод, а остальные продолжают бегущий огонь с интервалом в 2с. При повторном нажатии потушить старший светодиод и возвратиться к начальным условиям.

13

Выдавать звуковой сигнал частотой 1000Гц через пьезоизлучатель P1. При нажатии на S2 изменить частоту до 2000Гц. При нажатии на S3 - до 500Гц. При нажатии на обе кнопки - возвратиться к частоте 1000Гц. Светодиоды HL0, HL1, HL2 должны указывать текущую частоту звукового сигнала 500/1000/2000 соответственно.

14

По нажатию S3 выполнить бегущую тень на светодиодах. При зажигании светодиода подать звуковой сигнал частотой 500Гц и длительностью 0,25с. Повторное нажатие S3 останавливает движение. Нажатие S2 увеличивает частоту сигнала до 1000Гц.

15

По нажатию S3 выдать звуковые сигналы 500Гц, 750Гц и 1000Гц длительностью 0,2с. с паузами 0,5с. При нажатии на S2 увеличить длительности сигналов до 1с. Повторное нажатие S3 выключает подачу сигналов.

7.4 Практическое задание №3

Тема: Методы управления шаговыми двигателями.

Цель: Получить навыки в управлении шаговыми двигателями и освоить методы табличного описания функции.

Принципиальная схема подключения шагового двигателя к стенду PICDEM 2 Plus:

Рисунок 53 - Схема подключения модуля с шаговым двигателем

При управлении шаговым двигателем (ШД), на него необходимо подавать последовательность управляющих импульсов, которые в зависимости от типа двигателя, его схемы включения и режима работы изменяются. Для движения двигателя в одну сторону последовательность прямая. Для движения в обратную сторону - обратная последовательность. Различают несколько режимов работы:

- Полношаговый режим;

- Полушаговый режим;

- Микрошаговый режим.

Рисунок 54 - Принципиальная электрическая схема коммутации обмоток ШД

Для осуществления микрошагового режима, кроме управляющей последовательность коммутации обмоток, выполняют еще и ШИМ тока, проходящего через обмотку.

Последовательности импульсов для вращения шагового двигателя с двумя обмотками (Рис. 54), имеющими общие точки, в некоторых режимах приведены ниже:

Последовательность коммутации обмоток в полношаговом режиме при однофазной коммутации тока:

№ Шага

PORTD

1

ХХХХ0001

2

ХХХХ0010

3

ХХХХ0100

4

ХХХХ1000

1

ХХХХ0001

Выкл.

ХХХХ0000

Последовательность коммутации обмоток в полношаговом режиме при двухфазной коммутации тока:

№ Шага

PORTD

1

ХХХХ0011

2

ХХХХ0110

3

ХХХХ1100

4

ХХХХ1001

1

ХХХХ0011

Выкл.

ХХХХ0000

Последовательность коммутации обмоток в полушаговом режиме при двухфазной коммутации тока:

№ Шага

PORTD

1

ХХХХ0001

2

ХХХХ0011

3

ХХХХ0010

4

ХХХХ0110

5

ХХХХ0100

6

ХХХХ1100

7

ХХХХ1000

8

ХХХХ1001

1

ХХХХ0001

Выкл.

ХХХХ0000

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

Таблица 13 - Варианты заданий к самостоятельной работе

Вариант

Задание

1

Выполнить вращение ШД в полношаговом режиме при однофазной коммутации тока в обмотках. При нажатии на кнопку S3 увеличивать скорость вращения, при нажатии S2 - уменьшать. Максимальное значение скорости вращения указывать светодиодом D4, минимальное - D2, среднее - D3.

2

Выполнить вращение ШД в полношаговом режиме при двухфазной коммутации тока в обмотках. Кнопка S3 выполняет старт/стоп функцию. Кнопка S2 - реверс. Светодиоды информируют о режимах: D2 - вращение в прямом направлении, D3 - стоп, D4 - вращение в обратном направлении.

3

Выполнить вращение ШД в полушаговом режиме при двухфазной коммутации тока в обмотках. По истечении 1 сек. двигатель изменяет направление вращения после остановки в 0,5 сек. Кнопка S3 выполняет функцию старт/стоп. Кнопка S2 изменяет время работы двигателя 1/0,5 с. Время остановки остается неизменным.

4

Выполнить вращение ШД в полношаговом режиме при однофазной коммутации тока в обмотках. Во время работы производится подсчет числа шагов (максимум 2047). При нажатии на S3 выполняется возврат ротора на количество шагов, подсчитанных до нажатия данной кнопки. S2 выполняет запуск двигателя из начального положения. Светодиоды: D4 - достигнут максимальный шаг; D3 - двигатель находится в начальном положении.

5

Выполнить вращение ШД в полушаговом режиме при двухфазной коммутации тока в обмотках. Кнопка S3 - шаг в прямом направлении; S2 - шаг в обратном направлении. Номер шага двигателя выводить на светодиоды D3-D5 в двоичном коде.

6

Выполнить вращение ШД в полушаговом режиме при двухфазной коммутации тока в обмотках. При нажатии на кнопку S3 двигатель плавно запускается в течение 3 сек. При нажатии на S2 выполняет реверс с плавным торможением и разгоном. Повторное нажатие S3 выполняет плавную остановку.

7

Выполнить вращение ШД в полношаговом режиме при однофазной коммутации тока в обмотках. По нажатию кнопки S3 выполнить технологический цикл: разгон в течение 2 сек., работа 5 сек., реверс 4 сек., работа в обратном направлении 5 сек., останов 2 сек. Кнопка S2 - аварийный останов. Светодиоды индицируют состояния: D5 - ускорение; D4 - работа; D3 - замедление.

8

Выполнить вращение ШД в полношаговом режиме при двухфазной коммутации тока в обмотках. Функция изменения скорости - синусоидальная. Кнопка S2 - старт/стоп.

9

Выполнить вращение ШД в полношаговом режиме при однофазной коммутации тока в обмотках. Двигатель выполняет вращение. При нажатии на кнопку S3 он делает 40 шагов в обратном направлении со скоростью в 4 раза меньше основного вращения, а затем продолжает вращение в основном направлении. При нажатии на S2 - выполняет 20 шагов со скоростью в 4 раза меньшей в основном направлении, а затем вращается в обратном направлении.

10

Выполнить вращение ШД в полношаговом режиме при двухфазной коммутации тока в обмотках. При нажатии на кнопку S2 двигатель выполняет шаг в прямом направлении. При достижении 10 шага двигатель начинает вращаться в течение 1 сек. Затем делает останов и медленно выполняет 10 шагов в обратном направлении. Светодиоды D2-D5 указывают на текущий шаг двигателя (D2 - первый… D5 - четвертый).

11

Выполнить вращение ШД в полушаговом режиме при двухфазной коммутации тока в обмотках. Двигатель выполняет 20 шагов в прямом направлении, затем 20 шагов в обратном. Нажатие кнопки S3 добавляет 2 шага, S2 - уменьшает на 2 шага. Светодиод D4 - движение в прямом направлении; D5 - в обратном.

12

Выполнить вращение ШД в полношаговом режиме при однофазной коммутации тока в обмотках. По нажатию на кнопку S3 двигатель медленно выполняет 5 шагов с интервалом 0,25 сек., затем вращается в течение 5 сек., выполняет 5 шагов с интервалом 0,25 сек. в обратном направлении и останавливается. Нажатие кнопки S2 добавляет число медленных шагов на 2.

13

Выполнить вращение ШД в полношаговом режиме при двухфазной коммутации тока в обмотках. Двигатель постоянно находится в режиме реверса. Интервал между шагами - 0,2 сек. Удержание кнопки S3 выполняет вращение двигателя в прямом направлении с высокой скоростью, а удержание S2 - в обратном. Светодиоды индицируют состояния: D3 - медленный шаг в прямом направлении; D4 - большая скорость вращения независимо от направления; D5 - медленный шаг в обратном направлении.

14

Выполнить вращение ШД в полушаговом режиме при двухфазной коммутации тока в обмотках. Нажатие кнопки S3 выполняет 1 шаг двигателя в прямом направлении. При достижении 10 шага, двигатель начинает быстро вращаться в течение 2 сек., затем останавливается. Нажатие S2 выполняет те же действия, только в обратном направлении. Светодиод D3 указывает нажатие S3; D4 - S2.

15

Выполнить вращение ШД в полношаговом режиме при однофазной коммутации тока в обмотках. Двигатель выполняет вращение в течение 1 сек., и паузу в 1 сек. циклически. Нажатие S3 уменьшает паузу на 0,2 сек.; S2 - увеличивает на 0,2 сек. Светодиод D3 указывает, что двигатель работает без пауз; D4 - пауза меньше 2 сек.; D5 - пауза больше 2 сек.

Литература

1 Микропроцессорные системы: Учебное пособие для ВУЗов / Е. К. Александров, Р. И. Грушвицкий, М. С. Куприянов, О. Е. Мартынов, Д. И. Панфилов, Т. В. Ремизевич, Ю. С. Татаринов, Е. П. Угрюмов, И. И. Шагурин; Под общ. ред. Д. В. Пузанкова. - СПб.: Политехника, 2002. - 935 с.

2 Локазюк В. М. Мікропроцесори та мікроЕОМ у виробничих системах: Посібник. - К.: Академія, 2002. - 368 с.

3 Каспер Э. Программирование на языке Ассемблера для микроконтроллеров семейства i8051. - М.: Горячая линия - Телеком, 2004. - 191 с. - ISBN 5-93517-104-X.

4 Предко, М. Справочник по PIC-микроконтроллерам / М. Предко, пер с англ. - М.: ДМК Пресс, 2002, ООО Издательский дом «Додэка-XXI», 2002. - 512 с.

Приложение А

Система команд микроконтроллера I8051

Микро-ЭВМ рассматриваемого семейства являются типичными микропроцессорными устройствами с архитектурой SISC - со стандартным набором команд. Поэтому их система команд довольно обширна и включает в себя 111 основных команд. Их длина - один, два или три байта, причем большинство из них (94%) - одно- или двухбайтные. Все команды выполняются за один или два машинных цикла, исключение - команды умножения и деления, которые выполняются за четыре машинных. Микро-ЭВМ семейства 8051 используют прямую, непосредственную, косвенную и неявную, адресацию данных

В качестве операндов команд микро-ЭВМ семейства 8051 могут использовать отдельные биты, четырехбитные цифры, байты и двухбайтные слова.

Все эти черты обычны для набора команд любого CISC-процессора и по сравнению с RISC набором команд обеспечивает большую компактность программного кода и увеличение быстродействия при выполнении сложных операций.

Типы команд

Всего микро-ЭВМ выполняют 13 типов команд, они приведены в таблице. Как следует из нее, первый байт команды всегда содержит код операции (КОП), а второй и третий (если они присутствуют в команде) - адреса операндов или их непосредственные значения.

Таблица А.1 - Типы команд I8051

Тип команды

Первый байт D7...D0

Второй байт D7...D0

Третий байт D7...D0

тип 1

коп

тип 2

коп

#d

тип 3

коп

ad

тип 4

коп

bit

тип 5

коп

rel

тип 6

коп

а7...a0

тип 7

коп

ad

#d

тип 8

коп

ad

rel

тип 9

коп

ads

add

тип 10

коп

#d

rel

тип 11

коп

bit

rel

тип 12

коп

ad16h

ad16l

тип 13

коп

#d16h

#d16l

Группы команд

Все команды микро-ЭВМ семейства 8051 можно разбить на пять функциональных групп:

- Пересылки данных;

- Арифметических операций;

- Логических операций;

- Операций над битами;

- Передачи управления.

Обозначения, используемые при описании команд

Rn (n = 0, 1,..., 7) - регистр общего назначения в выбранном банке регистров;

@Ri(i = 0, 1) - регистр общего назначения в выбранном банке регистров, используемый в качестве регистра косвенного адреса;

ad - адрес прямоадресуемого байта;

ads - адрес прямо адресуемого байта-источника;

add - адрес прямо адресуемого байта-получателя;

ad11 - 11-разрядный абсолютный адрес перехода;

ad16 - 16-разрядный абсолютный адрес перехода;

rel - относительный адрес перехода;

#d - непосредственный операнд;

#d16 - непосредственный операнд (2 байта);

bit - адрес прямо адресуемого бита;

/bit - инверсия прямо адресуемого бита;

А - аккумулятор;

РС - счетчик команд;

DPTR - регистр указатель данных;

( ) - содержимое ячейки памяти или регистра,

Команды пересылки данных микроконтроллера 8051

В таблицах указаны тип команды (Т) в соответствии с таблицей А.1, ее длина в байтах (В) и время выполнения в машинных циклах (С)

Таблица А.2 - Команды пересылки данных

Мнемокод

КОП

Т В С

Описание

MOV A, Rn

11101rrr

1 1 1

(A) <- (Rn)

MOV A, ad

11100101

3 2 1

(A) <-(ad)

MOV A, @Ri

1110011i

1 1 1

(A) <- ((Ri))

MOV A, #d

01110100

2 2 1

(A) <- #d

MOV Rn, A

11111rrr

1 1 1

(Rn) <- (A)

MOV Rn, ad

10101rrr

3 2 2

(Rn) <- (ad)

MOV Rn, #d

01111rrr

2 2 1

(Rn) <- #d

MOV ad, A

11110101

3 2 1

(ad) <-(A)

MOV ad, Rn

10001rrr

3 2 2

(ad) <- (Rn)

MOV add, ads

10000101

9 3 2

(add) <- (ads)

MOV ad, @Ri

1000011i

3 2 2

(ad) <- ((Ri))

MOV ad, #d

01110101

7 3 2

(ad) <- #d

MOV @Ri, A

1111011i

1 1 1

((Ri)) <- (A)

MOV @Ri, ad

0110011i

3 2 2

((Ri)) <- (ad)

MOV @Ri, #d

0111011i

2 2 1

((Ri)) <- #d

MOV DPTR, #d16

10010000

3 3 2

(DPTR) <- #d16

MOVC A, @A+DPTR

10010011

1 1 2

(A) <- ((A)+(DPTR))

MOVC A, @A+pc

10000011

4 1 2

(PC) <- (PC+1), (A) <- ((A)+(PC))

MOVX A,@Ri

11100011

1 1 2

(A) <- ((Ri))

MOVX a, @DPTR

11100000

1 1 2

(A) <- ((DPTR))

MOVX @Ri, A

1111001i

1 1 2

((Ri)) <- (A)

MOVX @DPTR, A

11110000

1 1 2

(DPTR)) <- (A)

PUSH ad

11000000

3 2 2

(SP) <- (SP)+1, ((SP)) <- (ad)

POP ad

11010000

3 2 2

(ad) <- ((SP)), (SP) <- (SP)-1

XCH A, Rn

11001rrr

1 1 1

(A) <-> (Rn)

XCH A, ad

11000101

3 2 1

(A) <->(ad)

XCH A, @Ri

11000111

1 1 1

(A) <->((@Ri))

A, @Ri

11010111

1 1 1

(А0-3)<->((@Ri0-3))

По команде MOV выполняется пересылка данных из второго операнда в первый. Эта команда не имеет доступа ни к внешней памяти данных, ни к памяти программ. Для этих целей предназначены команды M0VX и MOVC соответственно. Первая из них обеспечивает чтение/запись байт из внешней памяти данных, вторая - чтение байт из памяти программ.

По команде XCH выполняется обмен байтами между аккумулятором и ячейкой РПД, а по команде XCHD - обмен младшими.

Команды PUSH и РОР предназначены соответственно для записи данных в стек и их чтения из стека. Размер стека ограничен лишь размером резидентной памяти данных.

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

Кроме того, следует отметить, что в микро-ЭВМ аккумулятор имеет два различных имени в зависимости от способа адресации: А - при неявной адресации (например, MOV A,R0) и АСС - при использовании прямого адреса. Первый способ предпочтительнее, однако, не всегда применим.

Команды арифметических операций

Таблица А.3 - Команды арифметических операций

Мнемокод

КОП

T

В

С

Описание

ADD A, Rn

00101rrr

1

1

1

(A)<-(A)+(Rn)

ADD A, ad

00100101

3

2

1

(A)<-(A)+(ad)

ADD A, @Ri

0010011i

1

1

1

(A)<-(A)+((Ri))

ADD A, #d

00100100

2

2

1

(A)<-(A)+#d

ADDC A, Rn

00111rrr

1

1

1

(A)<-(A)+(Rn)+(C)

ADDC A, ad

00110101

3

2

1

(A)<-(A)+(ad)+(C)

ADDC A, @Ri

0011011i

1

1

1

(A)<-(A)+((Ri))+C)

ADDC A, #d

00110100

2

2

1

(A)<-(A)+#d+(C)

DA A

11010100

1

1

1

Десятичная коррекция аккумулятора

SUBB A, Rn

10011rrr

1

1

1

(A)<-(A)-(Rn)-(C)

SUBB A, ad

10010101

3

2

1

(A)<-(A)-(ad)-(C)

SUBB A, @Ri

1001011i

1

1

1

(A)<-(A)-((Ri))-(C)

SUBB A, #d

10010100

2

2

1

(A)<-(A)-#d-(C)

INC A

00000100

1

1

1

(A)<-(A)+1

INC Rn

00001rrr

1

1

1

(Rn)<-(Rn)+1

INC ad

00000101

3

2

1

(ad)<-(ad)+1

INC @Ri

0000011i

1

1

1

((Ri)<-((Ri))+1

INC DPTR

10100011

1

1

2

(DPTR)<-(DPTR)+1

DEC A

00010100

1

1

1

(A)<-(A)-1

DEC Rn

00011rrr

1

1

1

(Rn)<-(Rn)-1

DEC ad

00010101

3

2

1

(ad)<-(ad)-1

DEC @Ri

0001011i

1

1

1

((Ri))<-((Ri))-1

MUL AB

10100100

1

1

4

(B)(A)<-(A)*(B)

DIV AB

10000100

1

1

4

(A).(B)<-(A)/(B)

По результату выполнения команд ADD, ADDC, SUBB, MUL и DIV устанавливаются флаги PSW.

Флаг С устанавливается при переносе из разряда D7, т. е. в случае, если результат не помещается в восемь разрядов; флаг АС устанавливается при переносе из разряда D3 в командах сложения и вычитания и служит для реализации десятичной арифметики. Этот признак используется командой DA A.

Флаг OV устанавливается при переносе из разряда D6, т. е. в случае, если результат не помещается в семь разрядов и восьмой не может быть интерпретирован как знаковый. Этот признак служит для организации обработки чисел со знаком.

Флаг Р устанавливается и сбрасывается аппаратно. Если число единичных бит в аккумуляторе нечетно, то Р=1, в противном случае Р=0.

Команды логических операций

В этой группе 25 команд, их краткое описание приведено в таблице. Нетрудно видеть, что эти команды позволяют выполнять операции над байтами: логическое И (/\), логическое ИЛИ (\/), исключающее ИЛИ (+), инверсию (NOT), сброс в нулевое значение и сдвиг. Команды, оперирующие отдельными битами, описаны далее.

Таблица А.4 - Команды логических операций

Мнемокод

КОП

T B С

Описание

ANL A, Rn

01011rrr

1 1 1

(A) <- (A) /\ (Rn)

ANL A, ad

01010101

3 2 1

(A) <- (A) /\ (ad)

ANL A, @Ri

01010111

1 1 1

(A) <- (A) /\ ((Ri))

ANL A, #d

01010100

2 2 1

(A) <- (A) /\ #d

ANL ad, A

01010010

3 2 1

(ad) <- (ad) /\( A)

ANL ad, #d

01010011

7 3 2

(ad) <- (ad) /\ #d

ORL A, Rn

01001rrr

1 1 1

(A) <- (A) \/ (Rn)

ORL A, ad

01000101

3 2 1

(A) <- (A) \/ (ad)

ORL A, @Ri

0100011i

1 1 1

(A) <- (A) \/( (Ri)

ORL A, #d

01000100

2 2 1

(A) <- (A) \/ #d

ORL ad, A

01000010

3 2 1

(ad) <- (ad) \/ A

ORL ad, #d

01000011

7 3 2

(ad) <- (ad) \/ #d

XRL A, Rn

01101rrr

1 1 1

(A) <- (A) (+) (Rn)

XRL A, ad

01100101

3 2 1

(A) <- (A) (+) (ad)

XRL A, @Ri

0110011i

1 1 1

(A) <- (A) (+) ((Ri))

XRL A, #d

01100100

2 2 1

(A) <- (A) (+) #d

XRL ad, A

01100010

3 2 1

(ad) <- (ad) (+) A

XRL ad, #d

01100011

7 3 2

(ad) <- (ad) (+) #d

CLR A

11100100

1 1 1

(A) <- 0

CPL A

11110100

1 1 1

(A) <- NOT(A)

SWAP A

11000100

1 1 1

(A0-3) <-> (A4-7)

RL A

00100011

1 1 1

Циклический сдвиг влево

RLC A

00110011

1 1 1

Сдвиг влево через перенос

RR A

00000011

1 1 1

Циклический сдвиг вправо

RRC A

00010011

1 1 1

Сдвиг вправо через перенос

Команды операций над битами

Группа состоит из 12 команд, краткое описание которых приведено в таблице. Эти команды позволяют выполнять операции над отдельными битами: сброс, установку, инверсию бита, а также логические И (/\) и ИЛИ (\/). В качестве «логического» аккумулятора, участвующего во всех операциях с двумя операндами, выступает признак переноса С (разряд D7 PSW), в качестве операндов могут использоваться 128 бит из резидентной памяти данных и регистры специальных функций, допускающие адресацию отдельных бит.

Таблица А.5 - Команды операций над битами

Мнемокод

КОП

Т В С

Описание

CLR С

11000011

1 1 1

(С) <- 0

CLR bit

11000010

4 2 1

(bit) <- 0

SETB С

11010011

1 1 1

(С) <- 1

SETB bit

11010010

4 2 1

(bit) <- 1

CPL С

10110011

1 1 1

(С) <- NOT(С)

CPL bit

10110010

4 2 1

(bit) <- NOT (bit)

ANL С, bit

10000010

4 2 2

(С )<- (C) /\ (bit)

ANL С, /bit

10110000

4 2 2

(С) <- (C) /\ NOT(bit)

ORL С, bit

01110010

4 2 2

(С) <- (C) \/ (bit)

ORL С, /bit

10100000

4 2 2

(С) <- (C) \/ NOT(bit)

MOV С, bit

10100010

4 2 1

(С) <- (bit)

MOV bit, C

10010010

4 2 2

(bit) <- (C)

Команды передачи управления

Группа представлена командами безусловного и условного переходов, командами вызова подпрограмм и командами возврата из подпрограмм.

Таблица А.6 - Команды передачи управления

Мнемокод

КОП

Т В С

Описание

LJMP ad16

00000010

12 3 2

Длинный безусловный переход по всей памяти

AJMP ad11

00001

6 2 2

Безусловный переход в пределах страницы 2 Кбайт

SJMP rel

10000000

5 2 2

Безусловный переход в пределах страницы 256 байт

JMP @A+DPTR

01110011

1 1 2

Безусловный переход по косвенному адресу

JZ rel

01100000

5 2 2

Переход, если нуль

JNZ rel

01110000

5 2 2

Переход, если не нуль

JC rel

01000000

5 2 2

Переход, если бит переноса установлен

JNC rel

01010000

5 2 2

Переход, если бит переноса не установлен

JB bit, rel

00100000

11 3 2

Переход, если бит установлен

JNB bit, rel

00110000

11 3 2

Переход, если бит не установлен

JBC bit, rel

00010000

11 3 2

Переход, если бит установлен со сбросом бита

DJNZ Rn, rel

11011rrr

5 2 2

Декремент и переход, если не нуль

DJNZ ad, rel

11010101

8 3 2

Декремент и переход, если не нуль

CJNE: A, ad, rel

10110101

8 3 2

Сравнение аккумулятора с байтом и переход, если не равно

CJNE A, #d, rel

10110100

10 3 2

Сравнение аккумулятора с константой и переход, если неравно

CJNE: Rn, #d, rel

10111rrr

10 3 2

Сравнение регистра с константой и переход, если не равно

CJNE: @Ri, #d, rel

1011011i

10 3 2

Сравнение байта памяти с константой и переход, если не равно

LCALL ad16

00010010

12 3 2

Длинный вызов подпрограммы во всей памяти

ACALL ad11

10001

6 2 2

Вызов подпрограммы в пределах страницы 2 Кбайт

RET

00100010

1 1 2

Возврат подпрограммы

RETI

00110010

1 1 2

Возврат подпрограммы обработки прерывания

NOP

00000000

1 1 1

Пустая операция

Команда безусловного перехода LJMP (long- длинный) осуществляет переход по абсолютному 16-битному адресу, указанному в теле команды, т. е. команда обеспечивает переход в любую точку памяти программ.

Действие команды AJMP (absolute - абсолютный) аналогично команде LJMP, однако в теле команды указаны лишь 11 младших разрядов адреса. Поэтому переход осуществляется в пределах страницы размером 2 Кбайт, при этом надо иметь в виду, что сначала содержимое счетчика команд увеличивается на 2 и, только потом, заменяются 11 разрядов адреса.

В отличие от предыдущих команд, в команде SJMP (short - короткий) указан не абсолютный, а относительный адрес перехода. Величина смещения rel рассматривается как число со знаком, а, следовательно, переход возможен в пределах -128...+127 байт относительно адреса команды, следующей за командой SJMP.

Команда косвенного перехода JMP @A+DPTR позволяет вычислять адрес перехода в процессе выполнения самой программы.

Командами условного перехода можно проверять следующие условия:

JZ - аккумулятор содержит нулевое значение;

JNZ - аккумулятор содержит не нулевое значение;

JC - бит переноса C установлен;

JNC - бит переноса C не установлен;

JB - прямо адресуемый бит равен 1;

JNB - прямо адресуемый бит равен 0;

JBC - прямо адресуемый бит равен 1 и сбрасывается в нулевое значение при выполнении команды.

Все команды условного перехода рассматриваемых ОЭВМ, содержат короткий относительный адрес, т. е. переход может осуществляться в пределах -128... +127 байт относительно следующей команды.

Команда DJNZ предназначена для организации программных циклов. Регистр Rn или байт по адресу ad, указанные в теле команды, содержат счетчик повторений цикла, а смещение rеl - относительный адрес перехода к началу цикла. При выполнении команды содержимое счетчика уменьшается на 1 и проверяется на 0. Если значение содержимого счетчика не равно 0, то осуществляется переход на начало цикла, в противном случае выполняется следующая команда.

Действие команд вызова процедур полностью аналогично действию команд безусловного перехода. Единственное отличие состоит в том, что они сохраняют в стеке адрес возврата.

Команда возврата из подпрограммы RET восстанавливает из стека значение содержимого счетчика команд, а команда возврата из процедуры обработки прерывания RETI, кроме того, разрешает прерывание обслуженного уровня. Команды RET и RETI не различают, какой командой LCALL или ACALL была вызвана подпрограмма, т. к. и в том, и в другом случае в стеке сохраняется полный 16-разрядный адрес возврата.

В заключение следует отметить, что большинство трансляторов допускают обобщенную мнемонику JMP - для команд безусловного перехода и CALL - для команд вызова подпрограмм. Конкретный тип команды определяется транслятором, исходя из «длины» перехода или вызова.

Приложение Б

Система команд микроконтроллера PIC16F877

Длина каждой инструкции составляет 14-ти битное слово, разделенное на OPCODE (часть кода команды), которая указывает на тип исполняемой команды, и один или несколько операндов, которые в свою очередь в дальнейшем определяют дальнейшее выполнение инструкции. Для описания команд семейства PICmicro используют следующие сокращения:

Таблица Б.1 - Используемые сокращения системы команд PICmicro

Поле

Описание

f

Адрес файлового регистра (от 0x00 до 0x7F).

W

Рабочий регистр (аккумулятор).

b

Адрес бита внутри 8-ми битного регистра.

k

Символьное поле, константа или метка.

x

Любое значение(0 или 1). Компилятор сгенерирует код с x=0 - это нужно для совместимости со всеми программными продуктами Microchip.

d

Выбор, где сохранять результат: d=0 (сохранять в W); d=1 (сохранять в f). По умолчанию d=1.

label

Имя метки

TOS

Вершина стека

PC

Счетчик команд (программный счетчик)

PCLATH

Записываемый буфер для старших 5-ти бит PC

GIE

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

WDT

Сторожевой таймер

бит Таймаута (Time-out bit)

бит понижения питания (Power-Down bit)

dest

Назначение, либо регистр W или другой регистр указанный в описании команды

[ ]

Опционально, т. е. необязательное использование записи, которая заключена в квадратные скобки

( )

Содержимое

->

Занести в

< >

Битовое поле в регистре

принадлежит

Курсив

определяется пользователем

Команды подразделяются на байт-ориентированные, бит-ориентированные, символьные и команды управления. На рис. Б.1 указано, из каких составных частей состоит код команды в зависимости от ее принадлежности к выше определенным группам.

Рисунок Б.1 - Форматы команд

Таблица Б.2 - Система команд PICmicro

Мнемоника команды

Описание

Циклов

14-разрядный код

Изм. флаги

Прим

Бит 13

Бит 0

1

2

3

4

5

6

БАЙТ-ОРИЕНТИРОВАННЫЕ КОМАНДЫ

ADDWF f, d

Сложение W и f

1

00 0111 dfff ffff

C,DC,Z

1.2

ANDWF f, d

Побитное «И» W и f

1

00 0101 dfff ffff

Z

1.2

CLRF f

Очистить f

1

00 0001 lfff ffff

Z

2

CLRW

Очистить W

1

00 0001 0xxx xxxx

Z

COMF f, d

Инвертировать f

1

00 1001 dfff ffff

Z

1.2

DECF f, d

Вычесть 1 из f

1

00 0011 dfff ffff

Z

1.2

DECFSZ f, d

Вычесть 1 из f и пропустить если 0

1(2)

00 1011 dfff ffff

1.2.3

INCF f, d

Прибавить 1 к f

1

00 1010 dfff ffff

Z

1.2

INCFSZ f, d

Прибавить 1 к f и пропустить если 0

1(2)

00 1111 dfff ffff

1.2.3

IORWF f, d

Побитное «ИЛИ» W и f

1

00 0100 dfff ffff

Z

1.2

MOVF f, d

Переслать f

1

00 1000 dfff ffff

Z

1.2

MOVWF f

Переслать W в f

1

00 0000 1fff ffff

NOP

Нет операции

1

00 0000 0xx0 0000

RLF f, d

Циклический сдвиг f влево через перенос

1

00 1101 dfff ffff

С

1.2

1

2

3

4

5

6

RRF f, d

Циклический сдвиг f вправо через перенос

1

00 1100 dfff ffff

С

1.2

SUBWF f, d

Вычесть W из f.

1

00 0010 dfff ffff

C,DC,Z

1.2

SWAPF f, d

Поменять местами полубайты в регистре f.

1

00 1110 dfff ffff

1.2

XORWF f, d

Побитное «исключающее ИЛИ» W и f.

1

00 0110 dfff ffff

Z

1.2

БИТ-ОРИЕНТИРОВАННЫЕ КОМАНДЫ

BCF f, b

Очистить бит b в регистре f.

1

01 00bb bfff ffff

1.2

BSF f, b

Установить бит b в регистре f.

1

01 01bb bfff ffff

1.2

BTFSC f, b

Проверить бит b в регистре f, пропустить если 0.

1(2)

01 10bb bfff ffff

3

BTFSS f, b

Проверить бит b в регистре f, пропустить если 1.

1(2)

01 11bb bfff ffff

3

КОМАНДЫ УПРАВЛЕНИЯ И ОПЕРАЦИЙ С КОНСТАНТАМИ

ADDLW k

Сложить константу с W

1

11 11 lx kkkk kkkk

C,DC,Z

ANDLW k

Побитное «И» константы и W

1

11 1001 kkkk kkkk

Z

CALL k

Вызов подпрограммы

2

10 0kkk kkkk kkkk

CLRWDT

Очистить WDT

1

00 0000 0110 0100

-TO,

-PD

GOTO k

Безусловный переход

2

10 1kkk kkkk kkkk

IORLW k

Побитное «ИЛИ» константы и W

1

11 1000 kkkk kkkk

Z

MOVLW k

Переслать константу в W

1

11 00xx kkkk kkkk

RETFIE

Возврат из подпрограммы с разрешением прерываний

2

00 0000 0000 1001

RETLW k

Возврат из подпрограммы с загрузкой константы вW

2

11 01xx kkkk kkkk

RETURN

Возврат из подпрограммы

2

00 0000 0000 1000

SLEEP

Перейти в режим SLEEP

1

00 0000 0110 0011

-TO

-PD

SUBLW k

Вычесть W из константы

1

11 110x kkkk kkkk

C,DC,Z

XORLW k

Побитное «исключающее ИЛИ» константы и W

1

11 1010 kkkk kkkk

Z

Примечания:

1. Когда регистр ввода вывода используется для модификации самого себя (MOVF PORTB, 1), то для записи будут использоваться значения 0/1 непосредственно с ножек микроконтроллера, а не значение, записанное в выходную защелку порта;

2. Если команда оперирует с регистром TMR0 (и при этом d=1), тогда предделитель обнуляется (если он относится к модулю Timer 0);

3. Если изменяется Программный Счетчик (PC) или условие истинно, тогда команда выполняется за 2 командных цикла. Второй командный цикл исполняется как команда NOP.


Подобные документы

  • Семейство 16-разрядных микроконтроллеров Motorola 68HC12, их структура и функционирование. Модуль формирования ШИМ-сигналов. Средства отладки и программирования микроконтроллеров 68НС12. Особенности микроконтроллеров семейства MCS-196 фирмы INTEL.

    курсовая работа [239,6 K], добавлен 04.01.2015

  • Рассмотрение структуры и принципов работы таймеров/счетчиков (общего назначения, сторожевого, типов А, В, С, D, Е) микроконтроллеров и аналого-цифрового преобразователя семейства AVR с целью разработки обучающего компьютерного электронного пособия.

    курсовая работа [1,0 M], добавлен 06.03.2010

  • Использование микроконтроллеров AVR фирмы Atmel в проектируемой аппаратуре. Архитектура и общие характеристики прибора, предназначение арифметики логического устройства и понятие флэш-памяти. Формат пакета данных, алгоритм их передачи и система команд.

    контрольная работа [427,3 K], добавлен 12.11.2010

  • Структурная схема микроконтроллеров семейства MCS-51: отличительные особенности, назначение выводов, блок регистров специальных функций. Карта прямоадресуемых бит. Методы адресации, граф команд пересылки, обмена и загрузки. Ввод и отображение информации.

    курсовая работа [135,5 K], добавлен 22.08.2011

  • Адресное пространство микроконтроллеров MSP430F1xx. Байтовая и словная формы инструкций. Система команд MSP микроконтроллеров. Периферийные устройства микроконтроллеров MSP430F1xx. Аналого-цифровой преобразователь ADC12, его технические характеристики.

    курсовая работа [278,1 K], добавлен 04.05.2014

  • Микроконтроллер (MCU) — микросхема, предназначенная для управления электронными устройствами. Их можно встретить во многих современных приборах, в том числе и бытовых. Рассмотрение архитектуры различных микроконтроллеров, ядра, памяти, питания, периферии.

    реферат [216,5 K], добавлен 24.12.2010

  • Понятие и виды микроконтроллеров. Особенности программирования микропроцессорных систем, построение систем управления химико-технологическим процессом. Изучение архитектуры микроконтроллера ATmega132 фирмы AVR и построение на его основе платформы Arduino.

    курсовая работа [1,9 M], добавлен 13.01.2011

  • Проектирование специализированных радиоэлектронных устройств с применением микропроцессорных комплектов и цифровых микросхем среднего и малого уровней интеграции. Архитектура микроконтроллеров семейства INTEL8051. Программа устройства на Ассемблере.

    курсовая работа [42,3 K], добавлен 29.07.2009

  • Общая характеристика операций, выполняемых по командам базовой системы. Описание и мнемокоды команд, используемых при разработке программы на языке AVR Ассемблера. Основные принципы работы команд с обращением по адресу SRAM и к регистрам ввода–вывода.

    реферат [148,4 K], добавлен 21.08.2010

  • Классификация, структура, архитектура и модульная организация микроконтроллеров. Средства разработки программного обеспечения AVR-контроллеров. Директивы транслятора ассемблера, рабочая частота и циклы. Исследование арифметических и логических команд.

    методичка [3,0 M], добавлен 19.09.2019

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.