
- •Оглавление
- •Введение
- •Методы разработки алгоритмов и программ имитационных моделей комбинационных схем и последовательных автоматов с памятью
- •Методы разработки алгоритмов имитационных моделей комбинационных схем
- •Непосредственнее решение функций алгебры логики
- •Метод бинарных функций
- •Решение функции алгебры логики методом адресных переходов
- •Элементы памяти полупроводниковых устройств
- •Классификация триггерных устройств
- •Триггер как элементарный последовательный автомат
- •Наиболее популярные методы разработки алгоритмов и программ имитационных моделей с памятью
- •Асинхронные триггеры
- •Асинхронный rs-триггер
- •Асинхронные s-, r- и e-триггеры
- •Асинхронный d-триггер
- •Асинхронные т-триггеры
- •Асинхронные jk-триггеры с импульсным управлением
- •Асинхронные потенциально управляемые jk-триггеры
- •Синхронные (тактируемые) триггеры
- •Синхронный rs-триггер
- •Синхронный d-триггер
- •Синхронный jk-триггер
- •Универсальные d- и jk-триггеры
- •Примеры схем, построенных с применением jk-триггера к155тв1
- •Пример разработки имитационной модели триггерного устройства
- •Непосредственное решение уравнений, описывающих работу триггерной установки
- •Использование графа состояний триггерного устройства для разработки алгоритма
- •Применение таблицы переходов для решения поставленной задачи
- •Реализация дискретных устройств на микроконтроллерах pic16
- •Введение в программирование микроконтроллеров pic16
- •Краткие сведения об архитектуре микроконтроллеров pic16 и принципе их работы
- •Язык ассемблера pic16
- •Команды пересылки
- •Арифметические команды
- •Булевы операции
- •Битовые операции
- •Операции условного, безусловного переходов и вызова подпрограмм
- •Общий вид программы и типовые приемы программирования
- •Битовая арифметика
- •Ветвление
- •Вызов подпрограммы
- •Использование среды mplab
- •Моделирование комбинационных автоматов
- •Метод непосредственного вычисления фал
- •Метод бинарных функций
- •Метод адресных переходов (табулирование функций)
- •Приложение а. Исходные тексты примеров а.1. Применение метода непосредственного вычисление фал
- •А.2. Применение метода бинарных программ
- •А.3. Применение метода адресных переходов а.3.1. Способ размещения таблицы в пзу
- •А.3.2. Способ размещения таблицы в озу
- •А.4. Модуль hdw_init
- •Приложение б. Краткий справочник инструкций pic16
- •Библиография
- •Имитационное моделирование дискретных устройств
- •620034, Екатеринбург, ул. Колмогорова, 66.
А.4. Модуль hdw_init
;;; Модуль инициализации микроконтроллера.
;;;
;;; Задача: настроить периферийные устройства для наших нужд.
;;;
;;; Подробно работа с периферийными устройствами микроконтроллеров
;;; освещена в курсе ОМТ, нас же они интересуют лишь для удобной
;;; отладки и проверки построенного алгоритма. Для этих целей нам
;;; понадобится два порта:
;;; PORTC - для индикации состояния выходов прогаммируемого
;;; автомата.
;;; PORTB - для опроса кнопок лабораторного макета, используемых для
;;; задания входных переменных.
system_setup:
bsf STATUS, RP0 ; RP1 RP0 - 0 1 - первый банк
bcf STATUS, RP1 ;
movlw B'00000000'
movwf TRISC ; PORTC - все выводы - выходы
movlw B'00000001' ; Включаем подтягивающие резисторы
movwf OPTION_REG ; порта PORTB
movlw B'11111111'
movwf TRISB ; PORTB - все выводы - входы
bcf STATUS, RP0 ; RP1 RP0 - 0 0 - нулевой банк
bcf STATUS, RP1 ;
return
Приложение б. Краткий справочник инструкций pic16
Мнемокод команды |
Описание |
Циклов |
Изменяемые флаги |
Команды пересылки |
|||
MOVF f,d |
Переслать f * |
1 |
Z |
MOVWF f |
Переслать W в f |
1 |
- |
MOVLW k |
Переслать константу в W |
1 |
- |
SWAPF f,d |
Обмен полубайтов в f * |
1 |
- |
Арифметические команды |
|||
ADDWF f,d |
Сложение W и f * |
1 |
C,CD,Z |
ADDLW k |
Сложить константу с W |
1 |
C,CD,Z |
SUBWF f,d |
Вычесть W из f * |
1 |
C,CD,Z |
SUBLW k |
Вычесть W из константы |
1 |
C,CD,Z |
INCF f,d |
Прибавить 1 к f * |
1 |
Z |
INCFSZ f,d |
Прибавить 1 к f и пропустить если 0 * |
1(2) ** |
- |
DECF f,d |
Вычесть 1 из f * |
1 |
Z |
DECFSZ f,d |
Вычесть 1 из f и пропустить если 0 * |
1(2) ** |
- |
Логические команды |
|||
ANDWF f,d |
Побитное "И" W и f * |
1 |
Z |
ANDLW k |
Побитное "И" константы и W |
1 |
Z |
IORWF f,d |
Побитное "ИЛИ" W и f * |
1 |
Z |
IORLW k |
Побитное "ИЛИ" константы и W |
1 |
Z |
XORWF f,d |
Побитное "Исключающее ИЛИ" W и f * |
1 |
Z |
XORLW k |
Побитное "Исключающее ИЛИ" константы и W |
1 |
Z |
COMF f,d |
Инвертировать f * |
1 |
Z |
CLRF f |
Очистить f |
1 |
Z |
CLRW f |
Очистить W |
1 |
Z |
CLRWDT |
Очистить WDT |
1 |
-TO,-PD |
RLF f,d |
Циклический сдвиг f влево через перенос * |
1 |
C |
RRF f,d |
Циклический сдвиг f вправо через перенос * |
1 |
C |
Битовые операции |
|||
BCF f,b |
Сбросить бит b в регистре f |
1 |
- |
BSF f,b |
Установить бит b в регистре f |
1 |
- |
BTFSC f,b |
Проверить бит b в регистре f и пропустить если 0 |
1(2) ** |
- |
BTFSS f,b |
Проверить бит b в регистре f и пропустить если 1 |
1(2) ** |
- |
Команды передачи управления |
|||
GOTO k |
Безусловный переход |
2 |
- |
CALL k |
Вызов подпрограммы |
2 |
- |
RETURN |
Возврат из подпрограммы |
2 |
- |
RETLW k |
Возврат из подпрограммы с загрузкой константы в W |
2 |
- |
RETFIE |
Возврат из подпрограммы и разрешение прерывания |
2 |
- |
SLEEP |
Переход в спящий режим |
1 |
-TO,-PD |
NOP |
Нет операции |
1 |
- |