- •Оглавление
- •Введение
- •Методы разработки алгоритмов и программ имитационных моделей комбинационных схем и последовательных автоматов с памятью
- •Методы разработки алгоритмов имитационных моделей комбинационных схем
- •Непосредственнее решение функций алгебры логики
- •Метод бинарных функций
- •Решение функции алгебры логики методом адресных переходов
- •Элементы памяти полупроводниковых устройств
- •Классификация триггерных устройств
- •Триггер как элементарный последовательный автомат
- •Наиболее популярные методы разработки алгоритмов и программ имитационных моделей с памятью
- •Асинхронные триггеры
- •Асинхронный 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.
Общий вид программы и типовые приемы программирования
Общий вид программы представлен ниже.
#include "p16f873a.inc" ; Константы и определения контроллера
; pic16f873a
call system_setup ; Настройка окружения и
; портов ввода/вывода
main:
; Основная программа
goto main
#include "hdw_init.inc"
end
Начинается программа с подключения файла определений специальных регистров для микроконтроллера PIC18F873A p16f873a.inc, который используется в учебной микропроцессорной системе.
Далее следует вызов подпрограммы настройки периферийных устройств микроконтроллера system_setup — именно с него микроконтроллер начинает выполнение программы. После этого управление передается по адресу метки main: которая указывает на основную программу. Основная программа выполняется циклически, о чем говорит инструкция безусловного перехода goto main, расположенная в конце.
В конце исходного текста подключается файл hdw_init.inc, содержащий в себе текст подпрограммы system_setup. Так как при выполнении лабораторных работ всегда используется одна и та же микропроцессорная система, причем используется единообразно (в качестве устройтсв ввода информации используются кнопки, а в качестве устройтсв вывода — светодиоды) то настройка периферийных устройств будет одинаковой для всех.
Заканчивается программа обязательным ключевым словом end.
Битовая арифметика
Некоторые методы имитационного моделирования требуют выполнения операций над переменными, размерностью в один бит, например метод непосредственного вычисления ФАЛ. В то же время набор инструкций PIC16 не содержит специальных инструкций для работы с однобитовыми переменными.
Для того, чтобы получить нужные возможности по работе с битами, вместо них можно использовать байты, у которых все разряды за исключением самого младшего, игнорируются. В этом случае типовые операции по работе с битами будут выглядеть следующим образом:
Чтение бита в регистр W из порта ввода-вывода (PORT A, 1 разряд)
movlw 0
btfsc PORTA, 1
movlw 1 ; в нулевом разряде W бит 1 порта PORTA
Запись бита из регистра F в порт ввода-вывода (PORT С, 2 разряд)
btfss F
bcf PORTC, 2
btfsc F
bsf PORTC, 2
Булева функция И между регистром W и F
andwf F
Булева функция ИЛИ между регистром W и F
iorwf F
Булева функция НЕ над регистром W
xorlw 1
Булева функция И между регистром W и битом 1 порта PORTA
bfss PORTA, 1
andlw 0
Булева функция ИЛИ между регистром W и F
bfsc PORTA, 1
iorlw 1
Ветвление
Ветвление организуется в зависимости от состояния нужного бита. Для организации ветвления следует использовать связку из команд условного и безусловного перехода — btfss/btfsc и goto.
Ветвление в зависимости от состояния бита 4 регистра F (btfss)
btfss F, 4
goto bit_is_null
; Бит в единице
…
bit_is_null:
; Бит в нуле
Ветвление в зависимости от состояния бита 3 регистра F (btfsc)
btfsc F, 4
goto bit_is_set
; Бит в нуле
…
bit_is_set:
; Бит в единице
