
- •Оглавление
- •Введение
- •Методы разработки алгоритмов и программ имитационных моделей комбинационных схем и последовательных автоматов с памятью
- •Методы разработки алгоритмов имитационных моделей комбинационных схем
- •Непосредственнее решение функций алгебры логики
- •Метод бинарных функций
- •Решение функции алгебры логики методом адресных переходов
- •Элементы памяти полупроводниковых устройств
- •Классификация триггерных устройств
- •Триггер как элементарный последовательный автомат
- •Наиболее популярные методы разработки алгоритмов и программ имитационных моделей с памятью
- •Асинхронные триггеры
- •Асинхронный 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.
Приложение а. Исходные тексты примеров а.1. Применение метода непосредственного вычисление фал
#include "p16f873a.inc"
org 0
call system_setup
goto main
; Индексы ячеек в ОЗУ, предназначенных для
; хранения промежуточных результатов
EXPR_1: equ H'20'
EXPR_2: equ H'21'
EXPR_3: equ H'22'
EXPR_4: equ H'23'
; Интерфейс ввода/вывода
#define IN_A PORTB, 0
#define IN_B PORTB, 1
#define IN_C PORTB, 2
#define IN_D PORTB, 3
#define OUT_F PORTC, 0
main:
; a || b
movlw 1
btfss IN_A
movlw 0
btfsc IN_B
iorlw 1
movf EXPR_1
; c && b
movlw 1
btfss IN_C
movlw 0
btfss IN_B
andlw 0
movf EXPR_2
; (2) && d
movlw 1
btfss EXPR_2
movlw 0
btfss IN_D
andlw 0
movf EXPR_3
; (1) -> (3)
movlw 0
btfss EXPR_1
movlw 1
btfsc EXPR_3
iorlw 1
movf EXPR_4
; Вывод результата
btfss EXPR_4
bcf OUT_F
btfsc EXPR_3
bsf OUT_F
goto main
#include "hdw_init.inc"
end
А.2. Применение метода бинарных программ
#include "p16f873a.inc"
call system_setup
goto main
; Интерфейс ввода/вывода
#define IN_A PORTB, 0
#define IN_B PORTB, 1
#define IN_C PORTB, 2
#define IN_D PORTB, 3
#define OUT_F PORTC, 0
; Запись результата
out_1:
bsf OUT_F
goto main
out_0:
bcf OUT_F
goto main
; Бинарные переходы
main:
check_a:
btfsc IN_A
goto check_b1
goto check_b2
check_b1:
btfsc IN_B
goto check_c
goto out_0
check_b2:
btfsc IN_B
goto check_c
goto out_1
check_c:
btfsc IN_C
goto check_d
goto out_0
check_d:
btfsc IN_D
goto out_1
goto out_0
#include "hdw_init.inc"
end
А.3. Применение метода адресных переходов а.3.1. Способ размещения таблицы в пзу
#include "p16f873a.inc"
org 0
call system_setup
goto main
; Интерфейс ввода/вывода
#define IN_A PORTB, 0
#define IN_B PORTB, 1
#define IN_C PORTB, 2
#define OUT_F PORTC, 0
OFFSET: equ H'20'
RESULT: equ H'21'
main:
movlw 0
movwf OFFSET
btfsc IN_A
bsf OFFSET, 2
btfsc IN_B
bsf OFFSET, 1
btfsc IN_C
bsf OFFSET, 0
movf OFFSET
fcall lookup_table
movwf RESULT
decfsz RESULT
goto OUT_0
goto OUT_1
OUT_0:
bcf OUT_F
goto main
OUT_1:
bsf OUT_F
goto main
lookup_table:
addwf pcl
retlw 0
retlw 0
retlw 0
retlw 1
retlw 1
retlw 1
retlw 1
retlw 1
#include "hdw_init.inc"
end
А.3.2. Способ размещения таблицы в озу
#include "p16f873a.inc"
org 0
call system_setup
call load_table
goto main
; Интерфейс ввода/вывода
#define IN_A PORTB, 0
#define IN_B PORTB, 1
#define IN_C PORTB, 2
#define OUT_F PORTC, 0
OFFSET: equ H'20'
RESULT: equ H'21'
LOOKUP: equ H'22'
main:
movlw 0 ; Формирование смещения
movwf OFFSET
btfsc IN_A
bsf OFFSET, 2
btfsc IN_B
bsf OFFSET, 1
btfsc IN_C
bsf OFFSET, 0
movf OFFSET
addlw LOOKUP ; Получение значения функции
movwf FSR
movf INDF
movwf RESULT ; Запись результата в выход
decfsz RESULT
goto OUT_0
goto OUT_1
OUT_0:
bcf OUT_F
goto main
OUT_1:
bsf OUT_F
goto main
load_table:
movlw 0
mowvf (LOOKUP+0)
movlw 0
mowvf (LOOKUP+1)
movlw 0
mowvf (LOOKUP+2)
movlw 1
mowvf (LOOKUP+3)
movlw 1
mowvf (LOOKUP+4)
movlw 1
mowvf (LOOKUP+5)
movlw 1
mowvf (LOOKUP+6)
movlw 1
return
#include "hdw_init.inc"
end