- •Введение
- •1 Анализ темы курсовой работы.
- •1.2.1 Характеристики шины isa.
- •1.3. Выводы к главе 1
- •Разработка схемы модуля
- •Обзор характеристик Высокоскоростной risc процессор
- •Периферия и Ввод/Вывод
- •Специальные свойства
- •Обзор регистров и озу
- •3 Разработка программных модулей инициализации, управления и контроля
- •3.1 Анализ методов построения алгоритмов инициализации и управления.
- •3.2 Разработка алгоритмов инициализации и управления.
- •3.3 Разработка программного модуля.
- •3.4 Выводы к главе 3.
- •Заключение
- •Приложение а (обязательное) Программный код микроконтроллера
- •Приложение б (справочное) Описание элементов
- •Приложение г
- •Библиографический список
3.2 Разработка алгоритмов инициализации и управления.
Для управления модулем выполняются следующие операции:
- вывод данных при обращении по адресу 310h
- выполнение подпрограммы обработки прерывания (9).
При инициализации устройства необходимо:
- сохранить старый вектор прерываний и старую маску контроллера прерываний;
- установить новый вектор прерываний, то есть поместить в память по адресу, соответствующему нашему прерыванию адрес нашей функции обработки прерывания и установить новую маску прерываний, то есть разрешить используемое прерывание в котроллере прерываний.
3.3 Разработка программного модуля.
Управление устройством производится с помощью записи в соответствующие порты вывода команд и управляющих сигналов. Состояния выводов соответствующих портов и используемые при работе команды приведены в таблице 3.1. Данные по цифрам берутся из таблицы.
Таблица 3.1 - Управление устройством
Команда |
310h | |||||||
DAT0 |
DAT1 |
DAT2 |
DAT3 |
DAT4 |
DAT5 |
DAT6 |
DAT7 | |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 | |
Вывод двух цифр 0 и 1 соответственно |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
Вывод двух цифр 3 и 7 соответственно |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
Работа программы управления основана на записи и чтении данных (байтов) из порта 310h. Чтение и запись данных в соответствующие порты ввода-вывода осуществляется с помощью процедуры out (выдача байта в порт) и функции in, возвращающей значение прочитанного из соответствующего порта байта.
Программа написана на языке Borland C++ 3.1 с использованием вставок на языке ассемблера и предназначена для работы с операционной системой MS-DOS версии 6.22 и выше.
Текст программы приведен в приложении В.
3.4 Выводы к главе 3.
В данной главе были разработаны алгоритмы инициализации и управления и на их основе написаны соответствующие программные модули. Программа написана на языке Си.
Заключение
Разработанный в данном курсовом проекте препроцессор на базе PICконтроллера относится к системам индикации, является полезным устройством при проектировании систем на базе обычных персональных ЭВМ типаIBMPC. Разработанное устройство не требует для подключения никаких дополнительных устройств и имеет достаточно гибкое, легко настраиваемое под конкретные потребности программное обеспечение.
Исходя из выше сказанного, можно утверждать, что разработанное устройство вполне можно применять в составе различных систем, где кроме стандартных устройств вывода, информации необходимы дополнительные, компактные и многофункциональные устройства.
Приложение а (обязательное) Программный код микроконтроллера
; Секция заголовка
;
; описание опеpационных pегистpов
TMR0 EQU 01h
PC EQU 02h
STATUS EQU 03h
FSR EQU 04h
; pегистpы ввода/вывода
CNTRLPORT EQU 05h
DATAPORT EQU 06h
; ячейки ОЗУ
ONE EQU 0Ch
TWO EQU 0Dh
THREE EQU 0Eh
FOUR EQU 0Fh
FIVE EQU 10h
SIX EQU 11h
SEVEN EQU 12h
EIGHT EQU 13h
NINE EQU 14h
ZERO EQU 15h
DIGIT EQU 16h
; биты pегистpа STATUS
C EQU 0h
DC EQU 1h
Z EQU 2h
PD EQU 3h
TO EQU 4h
RP EQU 5h
; упpавляющие pегистpы
TRISA EQU 85h
TRISB EQU 86h
; слова инициализации для поpтов ввода/вывода
INITA EQU B'11111111'
INITB EQU B'00000000'
;
; Рабочая секция
;
; начало исполняемого кода
ORG 0
GOTO BEGIN
;
ORG 100h
BEGIN
; инициализация портов ввода/вывода
MOVLW INITA
MOVWF TRISA
MOVLW INITB
MOVWF TRISB
; заносим значения «выходных» цифр
; загpузить значение единицы в pегистp W
MOVLW B'0110000'
; присвоить значение единицы регистру ONE
MOVWF ONE
MOVLW B'1101101'
MOVWF TWO
MOVLW B'1111001'
MOVWF THREE
MOVLW B'0110011'
MOVWF FOUR
MOVLW B'1011011'
MOVWF FIVE
MOVLW B'1011111'
MOVWF SIX
MOVLW B'1110000'
MOVWF SEVEN
MOVLW B'1111111'
MOVWF EIGHT
MOVLW B'1111011'
MOVWF NINE
MOVLW B'1111110'
MOVWF ZERO
;
START
; внешнее прерывание по нарастающему фронту сигнала на выводе INT0
EXT_INT_EDGE(0, L_TO_H)
; получаем значение из порта А и заносим его в pегистp W
MOVLW CNTRLPORT
;
; сдвигаем адрес регистра на 00Ch
ADDWF 00Bh, 0
;
; вывод регистра W в порт B
MOVWF DATAPORT
; окончить прерывание по нарастающему фронту сигнала на выводе INT0
EXT_INT_EDGE(0, H_TO_L)
; зациклить
GOTO START
;
END
;