Проектирование электронного кодового замка с фиксированным кодом «00002» на микроконтроллере серии PIC

Автор работы: Пользователь скрыл имя, 09 Апреля 2014 в 14:52, курсовая работа

Описание работы

В номенклатуре Microchip Technology Inc. представлен широкий спектр 8-и, 16-и и 32-битных микроконтроллеров и цифровых сигнальных контроллеров под маркой PIC. Отличительной особенностью PIC-контроллеров является хорошая преемственность различных семейств. Это и программная совместимость (единая бесплатная среда разработки MPLAB IDE), и совместимость по выводам, по периферии, по напряжениям питания, по средствам разработки, по библиотекам и стекам наиболее популярных коммуникационных протоколов.

Содержание работы

1. Общие сведенья о семействе PIC микроконтроллеров фирмы Microchip…………………….………………………………………………….5
1.1.Краткая характеристика микроконтроллеров семейства PIC16CXXX...9
1.1.1 Микроконтроллеры семейства PIC16CXXX……………………….......9
1.1.2 Микроконтроллеры подгруппы PIC16F8X……...……………………11
1.2. Программное обеспечение MPLAB ……………………………………15
2. Разработка принципиальной электрической схемы……………………..17
3. Разработка и отладка программного обеспечения………………………17
3.1. Листинг программы …………………………………………………………..
Список использованной литературы....……………………………………..…….

Файлы: 1 файл

kursovaya_rabota_po_mikroprotsessoram.docx

— 504.11 Кб (Скачать файл)

 

 

 

 

 

 

2. Разработка принципиальной электрической схемы

 

Принципиальная электрическая схема была разработана в программе SPlaner.

 

3. Разработка и отладка программного  обеспечения

 

Программное обеспечение разрабатывалась в программе MPLAB X IDE.

 

Исполняемый код является для MPASM выходным кодом по умолчанию. При этом все переменные источника должны быть явно описаны в тексте программы или в файле, подключаемом с помощью директивы INCLUDE <filename>.

Если при ассемблировании не выявляется ошибок, то генерируется выходной .hex-файл, который может быть загружен в МК с помощью программатора.

Исходным файлом для ассемблера MPASM по умолчанию является файл с расширением .ASM.

Каждая линия исходного файла может содержать до четырех типов информации:

    • метки (labels)
    • мнемоника (mnemonics)
    • операнды (operands)
    • комментарий (comments)

Порядок и положение каждого типа имеет значение. Метка должна начинаться в колонке номер один. Мнемоника может начинаться в колонке два или далее. Операнды идут за мнемоникой. Комментарий может следовать за операндом, мнемоникой или меткой или может начинаться в любом столбце, если в качестве первого не пустого символа используется * или ;. Максимальная длина строки 255 символов.

В поле метки размещается символическое имя ячейки памяти, в которой хранится отмеченный операнд. Все метки должны начинаться в колонке 1. За ними может следовать двоеточие (:), пробел, табуляция или конец строки. Комментарий может также начинаться в колонке 1, если используется одно из обозначений комментария. Метка может начинаться с символа или нижнего тире (_) и содержать буквенные символы, числа, нижние тире и знак вопроса. Длина метки может быть до 32 символов.

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

В этом поле операнды определяются операнды (или операнд), участвующие в операции. Операнды должны быть отделены от мнемоники одним или более пробелами или табуляцией. Операнды отделяются друг от друга запятыми. Если операция требует фиксированного номера (числа) или операндов, то все на линии после операндов игнорируется. Комментарии разрешаются в конце линии. Если мнемоники позволяют использовать различное число операндов, конец списка операндов определяется концом строки или комментарием.

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

В ассемблере MPASM используются следующие форматы выражений:

  • текстовая строка;
  • числовые константы и Radix;
  • арифметические операторы и приоритеты;
  • High / Low операторы.

Текстовая строка – это последовательность любых допустимых ASCII символов (в десятичном диапазоне от 0 до 127), заключенная в двойные кавычки. Строка может иметь любую длину в пределах 132 колонок. При отсутствии ограничения строки она считается до конца линии. Если строка используется как буквенный операнд, она должна иметь длину в один символ, иначе будет ошибка.

Числовая константа представляет собой число, выраженное в некоторой системе счисления. Перед константой может стоять + или –. Промежуточные величины в константах рассматриваются как 32-разрядные целые без знака.

MPASM поддерживает следующие системы  счисления (представления значений или Radix): шестнадцатиричную, десятичную, восьмиричную, двоичную и символьную. По умолчанию принимается шестнадцатиричная система.

Операторы – это арифметические символы, подобные + и –, которые используются при формировании выражений. Каждый оператор имеет свой приоритет. В общем случае приоритет устанавливается слева направо, а выражения в скобках оцениваются первыми.

Операторы high, low и upper используются для получения одного байта из многобайтного значения, соответствующего метке. Применяются для управления расчетом точек динамического перехода при чтении таблиц и записи программ.

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

Поле комментария может использоваться программистом для текстового или символьного пояснения логической организации программы. Поле комментария полностью игнорируется ассемблером, поэтому в нем можно применять любые символы. Комментарии, которые используются в строке сами по себе, должны начинаться с символа комментария (* или ;). Комментарии в конце строки должны быть отделены от остатка строки одним или более пробелами или табуляцией.

Листинг представляет собой текстовый файл в формате ASCII, который содержит машинные коды, сгенерированные в соответствии с каждой ассемблерной командой, директивой ассемблера или макрокомандой исходного файла. Файл листинга содержит: имя продукта и версии, дату и время, номер страницы вверху каждой страницы.

В состав листинга входят также таблица символов и карта использования памяти. В таблице символов перечисляются все символы, которые есть в программе, и где они определены. Карта использования памяти дает графическое представление о расходовании памяти МК.

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

Существует четыре основных типа директив в MPASM:

  • директивы данных;
  • директивы листинга;

  • управляющие директивы;
  • макро-директивы.

 

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

Директивы листинга управляют листингом файла MPASM и форматом. Они определяют спецификацию заголовков, генерацию страниц и другие функции управления листингом.

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

Макро-директивы управляют исполнением и распределением данных в пределах определений макротела.

 

 

 

 

 

 

Команды микроконтроллера семейства PIC16CXXX

 

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

Название

Изменяемые флаги

Байт-ориентированные команды

ADDWF  f,d

Сложение W с f

С, DC, Z

ANDWF f,d

Логическое И W и f

Z

CLRF f

Сброс регистра f

Z

CLRW

Сброс регистра W

Z

COMF f,d

Инверсия регистра f

Z

DECF f,d

Декремент регистра f (-1)

Z

DECFSZ f,d

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

 

INCF f,d

Инкремент регистра f (+1)

Z

INCFSZ f,d

Инкремент f, пропустить команду, если 0

 

IORWF f,d

Логическое ИЛИ W и f

Z

MOVF f,d

Пересылка регистра f

Z

MOVWF f

Пересылка W в f

 

NOP

Холостая команда

 

RLF f,d

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

с

RRF f,d

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

с

SUBWF f,d

Вычитание W из f

С, DC, Z

SWAPF f,d

Обмен местами тетрад в f

 

XORWF f,d

Исключающее ИЛИ W и f

Z

Команды с константами

ADDLW к

Сложение константы с W

С, DC, Z

ANDLW к

Логическое И константы и W

Z

IORLW к

Логическое ИЛИ константы и W

Z

SUBLW к

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

 

MOVLW к

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

 

XORLW к

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

 

Бит-ориентированные команды

BCF  f,b

Сброс бита в регистре f

 

BSF f,b

Установка бита в регистре f

 

BTFSC  f,b

Пропустить команду, если бит = 0

 

BTFSS  f,b

Пропустить команду, если бит = 1

 

Переходы

CALL  k

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

 

CLRWDT

Сброс Watchdog таймера

 

GOTO  к

Переход по адресу

 

RETLW к

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

 

RETFIE

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

 

RETURN

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

 

SLEEP

Переход в режим SLEEP

 

 

Каждая команда PIC16F84 – это 14-битовое слово, которое разделено по смыслу на следующие части: – 1. код операции, – 2. поле для одного и более операндов, которые могут участвовать или нет в этой команде. Система команд PIC16F84 включает в себя байт-ориентированные команды, бит-ориентированные, операции с константами и команды передачи управления.

Для байт-ориентированных команд «f» обозначает собой регистр, с которым производится действие; «d» – бит определяет, куда положить результат. Если «d» = 0, то результат будет помещен в W-регистр, при «d» = 1 результат будет помещен в «f», упомянутым в команде.

Для бит-ориентированных команд "b" обозначает номер бита, участвующего в команде, а «f» – это регистр, в котором этот бит расположен.

Для команд передачи управления и операций с константами, "k" обозначает восьми- или одиннадцатибитную константу.

Все команды выполняются в течение одного командного цикла. В двух случаях исполнение команды занимает два командных цикла: -1. – проверка условия и переход, -2. – изменение программного счетчика как результат выполнения команды. Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время исполнения командного цикла будет 1 мкс.

 

 

 

 

 

 

 

 

 

 

 

Макрокоманды ассемблера MPASM

Фирмой Microchip разработаны специальные команды для ассемблера MPASM. Эти команды сокращают объем написанной программы и ускоряют процесс написания программ.

Мнемоника

Действие

ADDCF

Прибавление переноса к содержимому регистра

ADDDCF

Прибавление десятичного переноса к содержимому регистра

В

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

ВС

Переход при переносе

BDC

Переход при десятичном переносе

BNC

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

BNDC

Переход при десятичном переносе

BNZ

Переход при отсутствии признака нуля (результат не нулевой)

BZ

Переход при наличии признака нуля

CLRC

Сброс флага переноса

CLRDC

Сброс флага десятичного переноса

CLRZ

Сброс флага равенства нулю

LCALL

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

LGOTO

Переход за пределы блока из 256 команд

MOVFW

Загрузка содержимого регистра в рабочий регистр

NEGF

Изменение знака содержимого регистра

SETC

Установка флага переноса в 1

SETDC

Установка флага десятичного переноса

SETZ

Установка признака нуля

SKPC

Пропустить следующую команду, если перенос

SKPDC

Пропустить следующую команду, если десятичный перенос

SKPNC

Пропустить следующую команду, если нет переноса

SKPNDC

Пропустить команду, если нет вспомогательного переноса

SKPNZ

Пропустить следующую команду, если нет нуля

SKPZ

Пропустить следующую команду, если ноль

SUBCF

Вычитание переноса из содержимого регистра

SUBDCF

Вычитание десятичного переноса из содержимого регистра

TSTF

Проверка (тестирование) регистра на равенство нулю


 

 

 

 

 

 

 

 

 

Приложение А

Схема электрическая принципиальная и перечень элементов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение Б

Листинг управляющей программы

 

3.1 Листинг программы.

 

;**********************************************************************

;                                                                     *

;    Filename:      codelock.asm                                      *

;    Date:          27.11.13                                          *

;    File Version:  1.01                                              *

;                                                                     *

;    Author:        Gruzdev K.                                        *

;    Company:       KP11                                              *

;                                                                     *

;**********************************************************************

;                                                                     *

;    Notes:   Кодовый замок.                                          *

;             Клавиатура - пленочная.                                 *

;             Для запоминания кода используется EEPROM                *

;                                                                     *

;**********************************************************************

;

; Программа опрашивает клавиатуру для ввода 6-тизначного кода

; КОД1 - код для открывания замка. Записан в EEPROM

; КОД2 - код открывания замка. Не  меняется так как записан в  памяти программ

; Пауза между вводами цифр  кода не более 3-х секунд.

; Пауза после введения неверного  кода - 10 секунд.

; У исполнительного устройства  есть два стационарных состояний: открыто

; и закрыто. Для открывания необходимо  набрать КОД1 или КОД2.

; Для закрывания нужно нажать  любую кнопку. На переднюю панель  также

; выведена кнопка аппаратного  сброса. Цифровые кнопки для ввода  цифр кода,

; кнопка "#" для сброса введенного  кода.

 

 

list      p=16F84             ; list directive to define processor

#include <p16F84.inc>         ; processor specific variable definitions

__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

; Типовая задержка таймера сброса  составляет 72 мс

 

; *********************************************************************

; ***** ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ ****************************************

; *********************************************************************

Информация о работе Проектирование электронного кодового замка с фиксированным кодом «00002» на микроконтроллере серии PIC