рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

MPLAB 3.30

MPLAB 3.30 - раздел Высокие технологии, Однокристальные микроконтроллеры ОМК позволяют существенно расширить интеллектуальные возможности различного рода устройств и систем 6.7.1. Постановка Задачи И Алгоритм Ее ...

6.7.1. Постановка задачи и алгоритм ее решения

 

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

 

где - длительность цикла выполнения команды микроконтроллера.

Для решения поставленной задачи выберем микроконтроллер PIC 16C84(16F84) с многократно электрически перепрограммируемыми пользователем ППЗУ программ и данных-констант а также имеющим возможность работы с прерываниями. Причем, в данном микроконтроллере прерывание возникает по целому ряду причин и, в том числе, при переполнении счетчика-таймера TMRO (RTCC).

Основываясь на знании особенностей архитектуры и функционирования микроконтроллера PIC 16C84(16F84) можно предложить один из возможных вариантов алгоритма решения поставленной задачи. Последовательность действий при этом должна быть следующей:

1. Организовать процедуру ожидания поступления первого импульса, например, на вывод микроконтроллера RA1 (стандартная процедура «Ожидания события»).

2. После обнаружения переднего фронта первого импульса запустить внутренний таймер/счетчик TMRO.

3. Организовать процедуру ожидания поступления второго импульса на тот же вывод RA1.

4. После обнаружения переднего фронта второго импульса остановить таймер/счетчик.

5. Полученный в регистре таймера/счетчика параллельный двоичный код выдать в порт В в сопровождении стробирующего сигнала, свидетельствующего о готовности данных на выходе микроконтроллера. Стробирующий сигнал выдается, например, на вывод RA0.

 

6.7.2. Написание исходного текста программы

 

Написание исходного текста программы осуществляется с помощью редактора Editor Only, имеющегося в составе интегрированной среды MPLAB 3.30. Для того, чтобы войти в оболочку редактора, необходимо выполнить следующие действия:

1. Осуществить запуск основного пакета программ (выбрав в главном меню интегрированной среды иконку с надписью MPLAB);

2. Выбрать в меню пользователя пакетом MPLAB 3.30 пункт Option;

3. Выбрать в меню Option опцию Development Mode ... и в ней задать режим «Editor Only» а также тип процессора PIC 16C84(16F84);

4. Нажать кнопку с надписью RESET (что позволит запомнить наше изменение);

5. Выбрать в меню пользователя пакетом MPLAB пункт File;

6. Выбрать в меню File опцию New Source.

После этого можно приступить к написанию исходного текста программы. Причем, в исходном тексте программы сознательно сделаем некоторые ошибки, которые необходимо будет выявить и устранить на этапах трансляции и отладки программы с помощью Ассемблера MPASM и симулятора MPLAB-SIM.

Исходный текст программы в этом случае имеет следующий вид:

LIST P=PIC16C84

; Секция заголовка

TMR0 EQU 01H

STATUS EQU 03H

PORTA EQU 05H

PORTB EQU 06H

INTCON EQU 0BH

TRISA EQU 05H

TRISB EQU 06H

; Описание битов регистра STATUS

C EQU 00H

DC EQU 01H

Z EQU 02H

PD EQU 03H

TO EQU 04H

RP0 EQU 05H

RP1 EQU 06H

IRP EQU 07H

; Описание битов регистра INTCON

RBIF EQU 00H

INTF EQU 01H

TOIF EQU 02H

RBIE EQU 03H

INTE EQU 04H

TOIE EQU 05H

EEIE EQU 06H

GIE EQU 07H

; Описание битов порта В

RB0 EQU 00H

RB1 EQU 01H

RB2 EQU 02H

RB3 EQU 03H

RB4 EQU 04H

RB5 EQU 05H

RB6 EQU 06H

RB7 EQU 07H

; Описание битов порта А

RA0 EQU 00H

RA1 EQU 01H

RA2 EQU 02H

RA3 EQU 03H

RA4 EQU 04H

; Рабочая секция

; Начало исполняемой части рабочей программы

ORG 00H ; Следующая команда будет рас-

; положена по адресу 00H

GOTO BEGIN

ORG 004H ; Указываем адрес ячейки памяти

; программ 004Н, куда осуществляется переход при возникновении преры-

; вания. В нашем случае это прерывание при переполнении счетчика

; таймера tmr0

INCF TMR1,1 ; Инкрементируем счетчик TMR1

; при возникновении каждого очередного прерывания от TMR0. В резуль-

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

; tmr0 и tmr1. Причём старшая часть числа находится в регистре

; tmr1,а младшая - в регистре tmr0. Данное число соответствует коли-

; честву тактов нашего микроконтроллера прошедших между импульсами.

CLRF TMR0 ; Сбрасываем значение регистра

; tmr0

BCF INTCON,TOIF ; Сбрасываем флаг TOIF, указы-

; вающий на то, что было преры-

; вание по переполнению счетчи-

; ка таймера tmr0

RETFIE ; Выходим из процедуры обра-

; ботки прерывания от таймера с разрешением прерываний. То есть, уста-

; навливаем бит gie в регистре intcon. Это выполняется автоматически

; по команде retfie.

; Далее располагается текст основной программы

BEGIB ; Метка BEGIN

CALL INIT ; Вызываем процедуру для ини-

; циализации портов и прерыва

; ний

POVTOR BTFSC PORTA,PA1 ; Ждем начало импульса, то есть

; передний фронт импульса

GOTO POVTOR

BCF INTCON,TOIF ; Сбрасываем флаг прерыва-

; ния от таймера

BSF INTCON,TOIE ; Разрешаем прерывание по

; факту переполнения счётчика

; таймера

POVTOR_1 BTFSS PORTA,PA1 ; Ждем задний фронт первого

; импульса, то есть конец перво

; го импульса

GOTO POVTOR

POVTOR_2 BTFSC PORTA,PA1 ; Ждем передний фронт второго

; импульса (т.е. его начало)

GOTO POVTOR_2

BCF INTCON,TOIE ; Запрещаем прерывание по

; факту переполнения счетчи-

; ка таймера

CALL PERED ; Вызываем процедуру передачи

; информации

GOTO POVTOR ; Повторяем измерение

PERED MOVF TMR0,0 ; Передаём в порт В значение ре-

; гистра TMR0

MOVWF PORTB

BSF PORTA,PA0 ; Устанавливаем флаг передачи

NOP ; Организуем задержку

NOP

NOP

BCF PORTA,PA0 ; Сбрасываем флаг передачи

MOVF TMR1,0 ; Передаём в порт В значение

; регистра tmr1

MOVWF PORTB

BSF PORTA,PA0 ; Устанавливаем флаг передачи

NOP ; Организуем задержку

NOP

NOP

BCF PORTA,PA0 ; Сбрасываем флаг передачи

; Выход из процедуры передачи

INIT BSF STATUS,RP0 ; Устанавливаем активной

вторую страницу памяти

MOVLW B'00000010' ; Устанавливаем направления

; работы выводов порта А. В

; данном случае вывод ra1 бу-

; дет работать на ввод , а осталь-

; ные на вывод

MOVWF TRISA

MOVLW B'00000000' ; Устанавливаем направления

; работы выводов порта В.Все

; выводы порта работают в дан-

; ном случае на вывод информа-

; ции

MOVWF TRISB

BSF 1,5 ; Устанавливаем выходы генера-

; тора и предделителя на таймер

BCF STATUS,RP0 ; Cнова делаем активной пер-

; вую страницу

BCF PORTA,PA0 ; Устанавливаем на выводе ra1

; нулевой уровень

RETURN ; Конец процедуры инициализа-

; ции

END

; Конец всей нашей программы

После написания программы сохраняем её под любым именем. Для этого необходимо выбрать меню FILE и выбрать подменю SAVE AS..., после чего Вас попросят ввести имя файла с расширением. По умолчанию (если нет расширения) система автоматически добавит расширение ASM. Сохраним наш файл, например, с именем OUR.ASM

 

6.7.3. Преобразование исходного текста программы

в объектный код

 

Теперь начнём создавать объектный код (модуль) нашей программы. Для этого войдём в меню PROJECT и выберем подменю NEW PROJECT.После єтого у Вас попросят ввести следующую информацию:

· PROJECT PATH AND NAME - указать путь к поиску объекта

и его имя.

Пишем: C:MPLABOUR.PJT

· DEFAULT TOOLBAR - выбрать внешний вид оболочки.

Оставляем без изменений.

· DEFAULT KEY MAPPING - указать файл переназначения

функций клавиш.

Оставляем без изменений.

· DEVELOPMENT MODE - выбрать среду (режим) для

отладки программы.

Выбираем MPLAB-SIM SIMULATOR и нажимаем кнопку OK.

После этих действий перед Вами появится окно EDIT PROJECT где от Вас требуется выбрать файл программы вошедшей в данный проект. В нашем примере берём из списка NON-PROJECT FILES файл с именем OUR.ASM, выбираем кнопку <=ADD и нажимаем кнопку ОК.

Теперь выбираем в меню PROJECT подменю BUILD ALL. После чего начинается компиляция нашей программы.

После этих действий мы увидим окно с именем MPASM v02.00, в котором содержится следующая информация:

* Вверху первая строка указывает есть ли ошибки. В нашем случае

они есть, поэтому появляется следующее сообщение:

- ERRORS FOUND и красная линия 100%;

· Количество ошибок - ERRORS: 12;

· Количество описок - WARNINGS:

- REPORTED: 1;

- SUPPRESSED: 0;

· Количество сообщений:

- REPORTED: 0;

- SUPPRESSED: 0;

· Всего строк - (LINE ASSEMBLED): 132.

Затемпоявится окно с именемCOMPILE STATUS, содержащее следующую информацию:

STATUS: THERE ARE ERRORS

COMMAND LINE:

MPASMWIN /e /l /ainhx8m /q c:mplabour.asm

Это окноинформирует были ли ошибки при компиляции. В нашем случаи они были.

Выбираем кнопку OK.

Так как были ошибки, то система автоматически открывает окно с файлом ошибок, который генерирует MPASM. Теперь, последовательно анализируя сообщения в файле ошибок, будем исправлять ошибки в исходном тексте программы:

1. Warning[207] C:MPLABOUR.ASM 36: Found label after column 1. (RB7).

В этом сообщении об ошибке сказано следующее (см.п.2.5.2.):ПРЕДУПРЕЖДЕНИЕ, [код ошибки-207], путь к файлу (место расположения и имя программы)- C:MPLABOUR.ASM, номер строки (в которой обнаружена)- 36: комментарий к ошибке (то есть, в чем заключается ошибка ) - НАЙДЕНА МЕТКА ПОСЛЕ СТРОКИ 1.(RB7).

Обращаемся к строке №36:

RB7 EQU 07H

Данная ошибка связанна с пробелами в начале строки, так как ассемблер не знает команды RB7.

Наши действия: Убираем пробелы в начале строки.

2. Error[113] C:MPLABOUR.ASM 47: Symbol not previously defined (BEGIN)

В этой ошибке говорится: СИМВОЛ НЕОПРЕДЕЛЁН (BEGIN)

Смотрим в нашей программе строку №47:

GOTO BEGIN ; Переход на метку

Итак, мы определили метку BEGIN, но почему же ошибка? Просматривая программу, мы увидим, что в строке №69 написано:

BEGIB ; МЕТКА BEGIN

То есть, мы написали вместо BEGIN -> BEGIB.

Значит необходимо исправить єту описку.

3. Error[113] C:MPLABOUR.ASM 52: Symbol not previously defined (TMR1).

В этой ошибке говорится: СИМВОЛ НЕОПРЕДЕЛЁН (TMR1).

Проверяем описание регистров в секции заголовка. При этом выясняется, что там вообще нет описания регистров памяти данных (ОЗУ).

Поєтому в секцию заголовка добавим описание регистра TMR1 расположив его, например, по адресу 0CH в памяти данных:

TMR1 EQU 0CH

4. Error[113] C:MPLABOUR.ASM 73: Symbol not previously defined (PA1).

В этой ошибке говорится: СИМВОЛ НЕОПРЕДЕЛЁН (PA1).

Проверяем описание регистров в секции заголовка и увидим, что биты порта А определены под именами RA0,RA1,RA2,RA3,RA4, а в программе используем имена РА0,РА1,PA2,PA3,PA4.

Делаем соответствующие изменения в программе.

5. Error[113] C:MPLABOUR.ASM 81: Symbol not previously defined (PA1).

В этой ошибке говорится: СИМВОЛ НЕОПРЕДЕЛЁН (PA1), поэтому выполняем такие же действия, как и в п.4.

6. Error[113] C:MPLABOUR.ASM 85: Symbol not previously defined (PA1).

В этой ошибке говорится: СИМВОЛ НЕОПРЕДЕЛЁН (PA1), поэтому выполняем такие же действия, как и в п.4.

7. Error[113] C:MPLABOUR.ASM 97: Symbol not previously defined (PA0).

В этой ошибке говорится СИМВОЛ НЕОПРЕДЕЛЁН (PA0), поэтому выполняем такие же действия, как и в п.4.

8. Error[113] C:MPLABOUR.ASM 101: Symbol not previously defined (PA0).

В этой ошибке говорится СИМВОЛ НЕОПРЕДЕЛЁН (PA0), поэтому выполняем такие же действия, как и в п.4.

9. Error[113] C:MPLABOUR.ASM 102: Symbol not previously defined (TMR1).

В этой ошибке говорится СИМВОЛ НЕОПРЕДЕЛЁН (TMR1). Эта ошибка уже исправлена в п.3.

10. Error[113] C:MPLABOUR.ASM 105: Symbol not previously defined (PA0).

В этой ошибке говорится: СИМВОЛ НЕОПРЕДЕЛЁН (PA0), поэтому выполняем такие же действия, как и в п.4.

11. Error[113] C:MPLABOUR.ASM 109: Symbol not previously defined (PA0).

В этой ошибке говорится: СИМВОЛ НЕОПРЕДЕЛЁН (PA0), поэтому выполняем такие же действия, как и в п.4.

12. Error[122] C:MPLABOUR.ASM 112: Illegal opcode (ВТОРУЮ).

В этой ошибке говорится: НЕИЗВЕСТНАЯ КОМАНДА (ВТОРУЮ).

Смотрим на строку №114:

INIT BSF STATUS,RP0 ; Устанавливаем активной

вторую страницу памяти

Оказывается, что мы забыли поставить знак комментария (;) в начале 115 строки.

Делаем соответствующие изменения в исходном тексте программы.

13. Error[113] C:MPLABOUR.ASM 127: Symbol not previously defined (PA0).

В этой ошибке говорится: СИМВОЛ НЕОПРЕДЕЛЁН (PA0), поэтому выполняем такие же действия, как и в п.4.

Теперь, когда вроде бы исправили все ошибки, запускаем откорректированную программу на компиляцию снова.

Теперь всё откомпилировалось без ошибок. После этого, в принципе, можно было бы записать откомпилированную программу в ППЗУ микроконтроллера. Однако, более целесообразно вначале промоделировать и отладить работу программы с помощью, например, программного симулятора MPLAB-SIM, имеющегося в составе интегрированной среды MPLAB 3.30.

6.7.4. Отладка программы

Для использования симулятора необходимо проделать следующие операции:

- Выбрать в главном меню пункт OPTION;

- Выбрать опцию DEVELOPMENT MODE;

- Выбрать MPLAB-SIM Simulator и тип микроконтроллера PIC16C84;

- Выбрать кнопку RESET , после чего Вас попросят сохранить наш проект и загрузится симулятор.

После этого осуществляем следующие действия:

- Выбираем в меню PROJECT и загружаем наш проект;

- Выбираем в меню DEBUG-RUN-RESET;

- Выбираем в меню DEBUG-RUN-STEP для пошагового выполнения нашей программы.

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

OUR.STI

STEP RA0

25 0

30 1

100 0

105 1

115 0

В этом файле STEP- значение счетчика циклов в симуляторе, а RA0- вывод порта нашего микроконтроллера.

Запускаем на выполнение программу следующим образом:

- Выбираем в меню DEBUG-RUN-RESET;

- Выбираем в меню DEBUG-SIMULATOR STIMULUS-PIN STIMULUS-ENABLE;

- Вводим имя нашего файла OUR.STI;

- Выбираем в меню DEBUG-RUN-STEP для пошагового выполнения нашей программы.

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

TMR0,TMR1,PORTA,PORTB,TRISA,TRISB.

Теперь, пошагово выполняя нашу программу, проверяем логику её работы и обнаружим следующие ошибки:

- в строке 83 имя метки, куда необходимо переходить, должно быть POVTOR_1;

- в строке 112 пропущена инструкция RETURN.

 

6.7.5. Листинг отлаженной программы

 

Итак, наша программа работает и окончательный вид её следующий:

LIST P=PIC16C84

; Секция заголовка

TMR0 EQU 01H

STATUS EQU 03H

PORTA EQU 05H

PORTB EQU 06H

INTCON EQU 0BH

TRISA EQU 05H

TRISB EQU 06H

; Описание битов регистра STATUS

C EQU 00H

DC EQU 01H

Z EQU 02H

PD EQU 03H

TO EQU 04H

RP0 EQU 05H

RP1 EQU 06H

IRP EQU 07H

; Описание битов регистра INTCON

RBIF EQU 00H

INTF EQU 01H

TOIF EQU 02H

RBIE EQU 03H

INTE EQU 04H

TOIE EQU 05H

EEIE EQU 06H

GIE EQU 07H

; Описание битов порта В

RB0 EQU 00H

RB1 EQU 01H

RB2 EQU 02H

RB3 EQU 03H

RB4 EQU 04H

RB5 EQU 05H

RB6 EQU 06H

RB7 EQU 07H

; Описание битов порта А

RA0 EQU 00H

RA1 EQU 01H

RA2 EQU 02H

RA3 EQU 03H

RA4 EQU 04H

; Описание регистров памяти данных (ОЗУ)

TMR1 EQU 0CH

;

; Рабочая секция

; Начало исполняемой части рабочей программы

ORG 00H ; Следующая команда будет рас-

; положена по адресу 00H

GOTO BEGIN

ORG 004H ; Указываем адрес ячейки памяти

; программ 004Н, куда осуществляется переход при возникновении прерывания. В нашем случае это прерывание при переполнении счетчика

; таймера tmr0

INCF TMR1,1 ; Инкрементируем счетчик TMR1

; при возникновении каждого очередного прерывания от TMR0.В резуль-

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

; tmr0 и tmr1. Причём старшая часть числа находится в регистре

; tmr1, а младшая - в регистре tmr0. Данное число соответствует коли-

; честву тактов нашего микроконтроллера прошедших между импульсами.

CLRF TMR0 ; Сбрасываем значение регистра

; tmr0

BCF INTCON,TOIF ; Сбрасываем флаг TOIF, указы-

; вающий на то, что было преры-

; вание по переполнению счетчи-

; ка таймера tmr0

RETFIE ; Выходим из процедуры обра-

; ботки прерывания таймера с разрешением прерываний. То есть, устанав-

; ливаем бит gie в регистре intcon. Это выполняется автоматически по

; команде retfie.

; Далее располагается текст основной программы

BEGIN ; Метка BEGIN

CALL INIT ; Вызываем процедуру для ини-

; циализации портов и прерыва

; ний

POVTOR BTFSC PORTA,RA1 ; Ждем начало импульса, то есть

; передний фронт импульса

GOTO POVTOR

BCF INTCON,TOIF ; Сбрасываем флаг прерыва

; ния от таймера

BSF INTCON,TOIE ; Разрешаем прерывание по

; факту переполнения счётчика

; таймера

POVTOR_1 BTFSS PORTA,RA1 ; Ждем задний фронт первого

; импульса, то есть конец перво-

; го импульса

GOTO POVTOR

POVTOR_2 BTFSC PORTA,RA1 ; Ждем передний фронт второго

; импульса (т.е. его начало)

GOTO POVTOR_2

BCF INTCON,TOIE ; Запрещаем прерывание по

; факту переполнения счетчи-

; ка таймера

CALL PERED ; Вызываем процедуру передачи

; информации

GOTO POVTOR ; Повторяем измерение

PERED MOVF TMR0,0 ; Передаём в порт В значение ре-

; гистра TMR0

MOVWF PORTB

BSF PORTA,RA0 ; Устанавливаем флаг передачи

NOP ; Организуем задержку

NOP

NOP

BCF PORTA,RA0 ; Сбрасываем флаг передачи

MOVF TMR1,0 ; Передаём в порт В значение

; регистра tmr1

MOVWF PORTB

BSF PORTA,RA0 ; Устанавливаем флаг передачи

NOP ; Организуем задержку

NOP

NOP

BCF PORTA,RA0 ; Сбрасываем флаг передачи

; Выход из процедуры передачи

INIT BSF STATUS,RP0 ; Устанавливаем активной вто

; рую страницу памяти

MOVLW B'00000010' ; Устанавливаем направления

; работы выводов порта А. В

; данном случае вывод ra1 бу-

; дет работать на ввод , а осталь-

; ные на вывод

MOVWF TRISA

MOVLW B'00000000 ; Устанавливаем направления

; работы выводов порта В. В

; данном случае все выводы пор-

; та работают на вывод информа;

; ции

MOVWF TRISB

BSF 1,5 ; Устанавливаем выходы генера-

; тора и предделителя на таймер

BCF STATUS,RP0 ; Снова делаем активной пер-

; вую страницу

BCF PORTA,RA0 ; Устанавливаем на выводе ra1

; нулевой уровень

RETURN ; Конец процедуры инициализа-

; ции

END

; Конец всей нашей программы

 

6.7.6. Запись программы в ППЗУ микроконтроллера PIC 16F84(16С84)

 

Для записи отлаженной программы в ППЗУ микроконтроллера PIC 16F84 необходимо снова осуществить ее компиляцию, выбрать файл с именем OUR.HEX и передать его в программатор.

При наличии подключенного к IBM PC программатора PICSTART запись отлаженной программы в микроконтроллер можно осуществить не выходя из оболочки пакета MPLAB 3.30. Для этого необходимо воспользоваться опцией Picstart Plus в меню основного пакета программ.

При отсутствии PICSTARTa можно воспользоваться любым из следующих типов программаторов: COMPIC, PROPIC, PICLAB-16, LEAPER-6 или PROMATE. Для этого необходимо выйти из оболочки интегрированного пакета и запустить соответствующую программу (драйвер), поддерживающую имеющийся в наличии у разработчика программатор.

Все указанные выше программаторы имеют различные по сложности схемы и функциональные возможности. Но, все они рассчитаны на использование ПЭВМ типа IBM PC и подключаются с помощью последовательных интерфейсов типа I2C и RS-232C, либо через параллельный принтерный порт с помощью интерфейса Centronics.


– Конец работы –

Эта тема принадлежит разделу:

Однокристальные микроконтроллеры ОМК позволяют существенно расширить интеллектуальные возможности различного рода устройств и систем

Однокристальные микроконтроллеры ОМК позволяют существенно расширить... Подавляющее число ОМК имеют традиционную Фон Неймановскую или Принстонскую архитектуру в которой команды и данные...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: MPLAB 3.30

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Формализация проектирования МК-систем и устройств
  1.1.1. Блочно-иерархический подход   При проектировании микроконтроллерных устройств (МКУ) или систем (МКС) можно использовать блочно-иерархический под

Уровни и аспекты проектирования МКС
  Уровни Аспекты Функциональ- ный Алгоритмичес- кий Конструкторс- кий Технологичес-

Типовые структуры МК-систем и устройств
  Типовая структура МК-системы управления показана на рис. 1.3 и состоит из объекта управления, микроконтроллера и аппаратуры их взаимной связи (АВС). Микроконтроллер путем п

Использование жесткой и программируемой логики
  Существует два принципиально разных подхода к проектированию цифровых устройств: использование принципа схемной логики или использование принципа программируемой логики. В

Проектируемых систем и устройств
  На системном и архитектурном уровнях проектирования МКС и МКУ всегда необходимо решать задачу выбора ОМК. В настоящее время выпускается большое количество различных типов ОМК такими

Особенности разработки аппаратурных средств МК-систем
  Применение однокристальных МК в устройствах управления объ-ектами привело к кардинальных изменениям в разработке аппаратурных средств устройств и систем. И дело здесь заключается в

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

СТРУКТУРНАЯ ОРГАНИЗАЦИЯ И РЕЖИМЫ РАБОТЫ ОМК С RISC АРХИТЕКТУРОЙ
  2.1. Общие сведения об ОМК PIC16/17 и их классификация   В 1975 году фирма GI разработала периферийный контроллер (Peripheral Interface Contr

Однокристальные микроконтроллеры семейства PIC16C5X
2.2.1. Структурная организация микроконтроллеров PIC16C5X Особенности архитектуры и структурная схема. Структурная схема ОМК PIC16C5X показана на рис. 2.1. Основу структуры данного

FSR - Регистр косвенной адресации
RP1, RP0 – Биты 6 и 5 регистра FSR, соответственно   Рис. 2.6. Прямая и косвенная адресация   Существуют некоторые отличия при осущест

Окончание таблицы 2.7
  Мнемокод Название команды Цик лы Код команды (11-бит) Биты сос тоя- ния При- меча- ния

Особенности структурной организации ОМК PIC 16С71
Микроконтроллеры PIC 16С71 относятся к расширенному семейству и имею целый ряд отличий от МК базового семейства PIC 16С5Х главным 0из которого является наличие встроенного четырехканального анал

Обозначение выводов и их функциональное назначение
  PDIP, SOIC, CERDIP    

Организация памяти данных (ОЗУ)
  Память данных также как и в PIC 16С5Х имеет страничную организацию, но состоит всего из 2-х страниц (рис.3.3). Причем, страницы в различных модификациях данного МК имеют различные о

Описание специальных регистров PIC 16С71
  Адрес Имя Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1

Модуль таймера (TMRO-RTCC)
  Единственным отличием данного модуля от аналогичного в PIC 16С5Х является возможность формирования сигнала прерывания. Прерывание по RTCC вырабатывается тогда, когда происх

Регистр статуса (STATUS)
Отличается от аналогичного регистра PIC 16С5Х лишь тем, что вместо трех бит выбора страниц памяти программ РА2, РА1, РА0 в соответствующих разрядах 7,6 и 5 размещаются биты выбора страницы памят

Программный счетчик и организация памяти программ
Программный счетчик в PIC16C71 имеет ширину 13 бит и способен адресовать 8К х 14бит объема программной памяти. Однако, физически на кристалле PIC16C71/711 имеется только 1К х 14

Прерывания
  Прерывания в PIC16C71 могут быть от четырех источников: - внешнее прерывание с ножки RB0/INT, - прерывание от переполнения счетчика/таймера RTCC, - прерыв

Модуль аналого-цифрового преобразователя (АЦП)
  Модуль АЦП (рис. 3.10) содержит четыре входных аналоговых канала AIN3, AIN1, AIN2 и AIN3, мультиплексируемых на одну схему выборки/хранения и далее на АЦП. Опорное напряжение поступ

Состояние специальных регистров после сброса
  Адрес Имя Сброс по включению питания Сброс по MCLR и WDT Банк 0 00h

Регистр OPTION
  Регистр конфигурации предделителя и таймера (OPTION) доступен для чтения и записи и содержит различные управляющие биты, которые определяют конфигурацию предделителя, куда он подклю

Биты установки конфигурации
Кристалл PIC16C71 имеет пять битов конфигурации, которые хранятся в EPROM и устанавливаются на этапе программирования кристалла. Эти биты могут быть запрограммированы (читается как "0"

Режим пониженного энергопотребления
Вход в режим SLEEP осуществляется командой SLEEP. По этой команде, если WDT разрешен, то он сбрасывается и начинает счет времени, бит »в регистре статуса (f3) сбрасывается, бит

Система команд
Каждая команда PIC16C71 представляет собой 14‑разрядное слово, содержащее поле кода операции (OPCODE) и поле одного или более операндов, которые могут участвовать в этой команде. Формат ко

Особенности программирования
Разработка рабочих программ для микроконтроллеров PIC16C5X и PIC16C71 осуществляется по одной и той же методике с использованием одних и тех же инструментальных средств [7, 8, 10, 11]. Системы к

Особенности структурной организации PIC 16С84
  Структурная схема ОМК PIC 16С84 (16F84) приведена на рис.4.1. Главным отличием данного МК от PIC 16С71 является наличие электрически перепрограммируемой памяти данных-констант EEPRO

Обозначение выводов и их функциональное назначение
  Расположение и обозначение выводов ОМК PIC 16С84 полностью совпадает с PIC 16С71 за исключением того, что ножки RA0, RA1, RA2, RA3 в связи отсутствием АЦП представляют собой лишь дв

Долговременная память данных-констант EEPROM
Память данных-констант EEPROM позволяет прочитать и записать байт информации. При записи байта автоматически стирается предыдущее значение и записывается новое (стирание перед записью). Все эти

Описание специальных регистров PIC 16F84
  Адрес Имя Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1

Организация прерываний
  Прерывания в PIC 16С84 организованы точно также как и в PIC 16С71 (см. разд. 3.8). Но, вместо прерывания от АЦП (в связи с его отсутствием) введено прерывание по окончании записи да

Состояние специальных регистров после сброса
  Адрес Имя Сброс по включению питания Сброс по MCLR и WDT Банк 0 00h

МЕТКА ОПЕРАЦИЯ ОПЕРАНД(Ы) КОММЕНТАРИЙ
  Звенья (поля) могут отделяться друг от друга произвольным числом пробелов. Порядок и позиция полей важны. Так, метки должны начинаться в первом столбце. Операция (мнемоника команды)

Использование программы-транслятора MPASM
  5.5.1. Запуск транслятора   Для того, чтобы запустить транслятор необходимо выбрать курсором MPASM.EXE и нажать "Ввод". На экране появится ме

Отладка рабочих программ
  После получения объектоного кода рабочей программы неизбежно наступает этап отладки, то есть установления факта ее работоспособности, а также выявления (локализации) и устранения ош

Использование симулятора-отладчика MPSIM
  5.7.1. Последовательность действий при запуске   Данный симулятор позволяет промоделировать работу рабочей программы и проверить выполнение соответству

Назначение команд
После запуска MPSIM необходимо выбрать контролируемые регистры в области просмотра на экране монитора. Для этого можновоспользоваться следующими командами: AD - позволя

RS ; Перезагрузить процессор
Приведенный пример является стандартным и может быть использован в качестве INI-файла для вашей программы, адреса регистров для просмотра выберите соответственно своему приложению.

Назначение и основные функциональные возможности
Интегрированная среда разработки рабочих программ MPLAB 3.30 представляет собой набор программ, объединенных в единый пакет , который содержит: - редактор (Editor Only); - ассембл

Краткая характеристика основных программ
  6.2.1. Ассемблер MPASM   Универсальный макроассемблер MPASM - это символьный ассемблер, который поддерживает разработку рабочих программ для всех семей

Интерфейс пользователя и главное меню интегрированной среды MPLAB 3.30
  Интерфейс пользователя интегрированной среды MPLAB 3.30 представляет собой многоуровневую систему вложенных меню, позволяющих быстро и удобно задать нужный режим работы и сконфигури

Меню основного пакета программ.
  Меню основного пакета программ содержит следующие пункты (подменю): File, Project, Edit, Debug, Picmaster, Option. Каждый пункт содержит ряд команд, которые выполня

Меню File
Команды (опции) меню File позволяют разработчику просматривать тексты программ, загружать и редактировать их, сохранять на носителе и распечатывать их, переименовывать, а также выйти из оболочки

ВВОД ИНФОРМАЦИИ С ДАТЧИКОВ И ФОРМИРОВАНИЕ СИГНАЛОВ УПРАВЛЕНИЯ
  В технических системах различного назначения события в объекте управления фиксируются с помощью разнообразных датчиков цифрового и аналогового типов. Наибольшее распростран

Импульсов заданной длительности.
  Пусть, например, необходимо с помощью микроконтроллера PIC16F84 осуществить опрос двоичного датчика и, в зависимости от его состояния, либо организовать процедуру «ожидан

Ввод информации с группы взаимосвязанных двоичных датчиков
7.2.1. Ввод байта состояния одного датчика   Пусть, например, необходимо ввести байт состояния датчика дискретных сигналов (Di), сравнить его с уставкой, хр

ПРЕОБРАЗОВАНИЕ ИНФОРМАЦИИ ИЗ ОДНОЙ ФОРМЫ ПРЕДСТАВЛЕНИЯ В ДРУГУЮ
  Довольно часто в микроконтроллерных устройствах возникает необходимость преобразования информации из одной формы представления в другую. Это связано с тем, что обработка данных в ми

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

Статических сигналов
Рассмотрим пример, в котором необходимо ввести от 2-х независимых датчиков аналоговые сигналы постоянного тока (U1 и U2), выполнить сравнение их между собой и по результатам сравнения осуществит

ОТОБРАЖЕНИЕ ИНФОРМАЦИИ В МКУ.
Во многих случаях в микроконтроллерных устройствах требуется наличие только простой индикации типа ДА/НЕТ, ВКЛ/ВЫКЛ. Такая индикация реализуется на основе отдельных светодиодов. Для отобра

Изучение пакета MPLAB
  1. ЦЕЛЬ На примере микроконтроллера PIC16C56 выучить режимы работы портов ввода/вывода, способы и особенности их инициализации. Рассмотреть ввод/вывод дискретных сигналов.

Режимы работы таймера. Сторожевой таймер (WDT)
1. ЦЕЛЬ Выучить основные режимы функционирования таймера, способы и особенности его инициализации, варианты использования и настройки предыдущего делителя, функционирования сторожевого тай

Страничная организация памяти
  1. ЦЕЛЬ Выучить способы формирования временных интервалов разной длительности, организацию страничной памяти программ и данных.   2. ЗАДАНИЕ ПО ЛАБОР

Организация и использование памяти данных.
  1. ЦЕЛЬ Выучить страничную организацию памяти данных. Научиться использовать режим непрямой адресации ячейки памяти данных. Выучить организацию и способы доступа к енергоне

Собственные обработчики прерываний
  1. ЦЕЛЬ Выучить систему прерываний микроконтроллера PIC16F84, способы формирования прерываний, использования обработчиков нескольких прерываний.   2.

Формирование сигналов управления и индикации
  1. ЦЕЛЬ Приобрести навык составления функциональной схемы. Выучить способы формирования сигналов управления и индикации, научиться формировать звуковые и световые сигналы н

В мк семейства PIC16Cxx
  1. ЦЕЛЬ Выучить принцип работы аналого-цифрового преобразователя на примере микроконтроллера PIC16C71. Научиться вводить аналоговые сигналы. Рассмотреть способы вывода анал

Семейства PIC
Таблица А.1   Название Память программ RAM/ EE Fm I/O Таймер CCP/ PWM

B1. Описание команд PIC 12CXX и PIC 16C5X
  ADDWF Add Wand f Сложение W с f Синтаксис: ADDWF f,d Операнды: 0<=3<=1, [0,1] Операция: (W)+(f) -> (dest) Биты с

Пропустить команду, если бит равен нулю
Синтаксис: BTFSC f,b Операнды: 0<=31, 0<=Ь<=7 Операция: Пропустить, если f(b)=0. Биты состояния: Не изменяются. КОД: 0110 bbbf ffff Описание: Е

Пропустить команду, если бит равен единице
Синтаксис: BTFSS f,b Операнды: 0<=f<=31, 0<=b<=7 Операция: Пропустить, если f(b)=1. Биты состояния: Не изменяются. КОД: 0111 bbbf ffff Описа

Вызов подпрограммы
Синтаксис: CALL k Операнд: 0<=k<=255 Операция: (PC)+1->TOS, k->PC<7:0>, (STATUS<6:5>)->PC<10:9>, 0->PC<8> Биты состояния: Не изм

Сброс сторожевого таймера WDT
Синтаксис: CLRWDT Операнд: Нет. Операция: 00h->WDT, 0->WDT prescaler, 1->TO, 1->PD Биты состояния: ТО, PD Код: 0000 0000 0100 Описание: Кома

Инверсия регистра f
Синтаксис: COMF f,d Операнды: 0<=f<=31, [0,1] Операция: (f)->(dest) Биты состояния: Z КОД: 0010 01df ffff Описание: Содержимое регистра f инвер

Декремент регистра f
Синтаксис: DECF f,d Операнды: 0<=f<=31, [0,1] Операция: (f) - 1->(dest) Биты состояния: Z Код: 0000 11df ffff Описание: Регистр f уменьшается н

Декремент f, пропустить команду, если 0
Синтаксис: DECFSZ f,d Операнды: 0<=f<=31, [0,1 ] Операция: (f)—1->(dest); пропустить, если (dest)=0 Биты состояния: Не изменяются. КОД: 0010 11df ffff

Переход по адресу
Синтаксис: GOTO k Операнд: 0<=k<=511 Операция: k->PC<8:0>, (STATUS<6:5>)->PC<8:9> Биты состояния: Не изменяются. Код: 101k kkkk kkk

Инкремент регистра f
Синтаксис: INCF f,d Операнды: 0<=f<=31, [0,1] Операция: (f)+1->(dest) Биты состояния: Z Код: 0010 10df ffff Описание: Регистр f увеличивается н

Инкремент f, пропустить команду, если 0
Синтаксис: INCFSZ f,d Операнды: 0<=f<=31, [0,1] Операция: (f)+1->(dest); пропустить, если (dest)=0 Биты состояния: Не изменяются. КОД: 0011 11df ffff

Логическое ИЛИ W и f
Синтаксис: IORWF f,d Операнды: 0<=f<=31, [0,1] Операция: (W).OR.(f)->(dest) Биты состояния: Z КОД: 0001 00df ffff Описание: Содержимое регистра

Пересылка регистра f
Синтаксис: MOVF f,d Операнды: 0<=f<=31, [0,1] Операция: (f)->(dest) Биты состояния: Z КОД: 0010 00df ffff Описание: Содержимое регистра f перес

Холостая команда
Синтаксис: NOP Операнд: Нет. Операция: Нет. Биты состояния: Не изменяются Код: 0000 0000 0000 Описание: Нет операции. Циклов: 1 Пример

Сдвиг f влево через перенос
Синтаксис: RLF f,d Операнды: 0<=f<=31, [0,1] Операция: f<n>->d<n+1>, f<7>->C, C->d<0> Биты состояния: С КОД: 0011 01df fff

Сдвиг f вправо через перенос
Синтаксис: RRF f,d Операнды: 0<=f<=31, [0,1] Операция: t<n>->d<n-1>, f<0>->C, C->d<7> Биты состояния: С Код: 001111df ffff

Переход в режим SLEEP
Синтаксис: SLEEP Операнд: Нет Операция: 00h->WDT, 0->WDT prescaler, 1->TO, 0->PD Биты состояния: ТО, PD Код: 0000 0000 0011 Описание: Команд

Вычитание W из f
Синтаксис: SUBWF f,d Операнды: 0<=f<=31, [0,1] Операция: (f) - (W)->(dest) Биты состояния: С, DC, Z КОД: 0000 10df ffff Описание: Содержимое ре

Обмен тетрад в f
Синтаксис: SWAPF f,d Операнды: 0<=f<=31, [0,1] Операция: f<0:3>->d<4:7>, f<4:7>->d<0:3> Биты состояния: Не изменяются. Код: 0

Загрузка регистра
Синтаксис: TRIS f Операнд: 5<=f<=7 Операция: (W)->TRIS register f Биты состояния: Не изменяются. Код: 0000 0000 0fff Описание: Содержимое регис

Исключающее ИЛИ константы и W
Синтаксис: XORLW k Операнд: 0<=k<=255 Операция: (W).XOR.(k)->W Биты состояния: Z Код: 1111 kkkk kkkk Описание: Содержимое регистра W поразрядно

B.2.Описание дополнительных команд для семейства PIC 16СХХ
  RETFIE Return from Interrupt Возврат из прерывания Синтаксис: [label] RETFIE Операн

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

И их отличия от микроконтроллеров PIC 16CХХ
  Семейство однокристальных микроконтроллеров PIC 12CХХ состоит из самых простых МК с RISC архитектурой. Все микроконтроллеры данного семейства имеют только 33 12-ти разрядных команды

F2. Отличия ОМК PIC 17CХХ от PIC 16CХХ.
  Микроконтроллеры PIC 12C67X и PIC 12F68X представляют собой упрощенные модификации PIC 16C71 и PIC 16F84 соответственно, но без механизма прерываний. Так микроконтроллеры PIC 12C6X

G2. Совместимость PIC 17CXX и PIC 16CXX.
Чтобы преобразовать текст программ PIC 16CXX для использования в PIC 17CXX, нужно выполнить следующее: 1. Удалить все команды OPTION и TRIS, заменив их эквивалентными. 2. Разделит

ОСОБЕННОСТИ ПРОЕКТИРОВАНИЯ ТЕХНИЧЕСКИХ СИСТЕМ
И УСТРОЙСТВ НА МИКРОКОНТРОЛЛЕРАХ…………………………… 1.1. Формализация проектирования МК-систем и устройств………………… 1.1.1. Блочно-иерархический подход……………………………………………

СТРУКТУРНАЯ ОРГАНИЗАЦИЯ И РЕЖИМЫ РАБОТЫ ОМК С RISC-АРХИТЕКТУРОЙ
2.1. Общие сведения об ОМК PIC16/17 и их классификация…………………… 2.2. Однокристальные микроконтроллеры семейства PIC16C5X………………. 2.2.1. Структурная организация микроконтроллеров PIC

ДЛЯ ОМК PIC
5.1. Правила записи программ на языке Ассемблера . . . . . . . . . . . . . 5.2. Структура рабочей программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3. Пример н

ИНТЕГРИРОВАННАЯ СРЕДА РАЗРАБОТКИ РАБОЧИХ ПРОГРАММ MPLAB 3.30 ДЛЯ ОТЛАДКИ ОМК PIC
6.1. Назначение и функциональные возможности . . . . . . . . . . . . . . . . . 6.2. Краткая характеристика основных программ . . . . . . . . . . . . . . . . . 6.2.1. Ассемблер MPA

Система прерываний МК PIC16F84. Собственные обработчики прерываний
10.6. Формирование сигналов управления и индикации 10.7. Ввод и вывод аналоговых сигналов в МК семейства pic16cxx   Приложение А. Сравнительные характеристики ОТР ми

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги