Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач2 / 05-13_Введение.doc
Скачиваний:
29
Добавлен:
02.06.2015
Размер:
926.72 Кб
Скачать

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

;

Соседние файлы в папке Курсач2