Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Разработка программного обеспечения МПС




оставим блок-схему алгоритма (БСА) главной программы работы МКС, которая будет иметь символическое имя CONTROL. БСА этой программы приведена на рис. 3.1.

Из нее видно, что главная программа состоит из нескольких подпрограмм, которые вызываются по мере надобности. Такое построение упрощает структуру программы, делает ее более наглядной. Кроме того, использование подпрограмм упрощает разработку и отладку всей программы работы МКС.

 


Рис. 3.1. БСА главной программы работы МКС

 

Текст главной программы на языке Ассемблера для МК51 имеет следующий вид:

;**************************************************************

; CONTROL - главная программа работы МКС

;**************************************************************

DATA_W: EQU 30H; Начальный адрес массива в ПД для

; хранения кодов АЦП

ORG 0000H; Начальный адрес программы

CONTROL: JMP MAIN; Переход на основную программу

ORG 000BH; Вектор прерывания от Т/С0     

CALL TIMER; Подпрограмма отсчета времени Топр

RETI

ORG 0023H; Вектор прерывания от УАПП

CALL TRANSMIT; Подпрограмма передачи данных в

; интерфейс

RETI

ORG 0030H; Таблица констант

ADR_K1: DW XXXXH; Константа К1

ADR_K2: DW XXXXH; Константа К2

ADR_K3: DW XXXXH; Константа К3

ADR_K4: DW XXXXH; Константа К4

ADR_Q: DW XXXXH; Константа Q

ORG 0050H; Основная программа

MAIN:   MOV SP, #70H; Определить стек

CALL INIT; Подпрограмма инициализации МКС

AGAIN: CALL DIGIT; Подпрограмма ввода и обработки

; цифровой информации

CALL ANALOG; Подпрограмма ввода и обработки

; аналоговой информации

SETB ES; Разрешить прерывание от УАПП

SETB PS; Присвоить прерыванию от УАПП

; высший приоритет

; Опрос состояния переключателя SA4 «Работа / Пульт»

MOV P0, #0FFH; Настроить порт P0 на ввод

CLR P3.5; Открыть выходные буферы DD5

MOV A, P0; Ввод из P0P3.5; Закрыть буферы DD5ACC.7, COUNT; Переход, если SA4 разомкнут (Работа) PULT; Подпрограмма обслуживания пульта

; управления

JMP AGAIN; Зацикливание программы

COUNT: JNB F0, COUNT; Цикл отсчета времени Tопр = 2c

CLR F0; Сбросить флаг окончания счета Tопр

CLR ES; Запретить прерывания от УАПП

JMP AGAIN; Зацикливание программы

В программе определен массив ячеек памяти данных МК с начальным символическим адресом DATA_W для хранения кодов с выхода АЦП. Так как входных переменных 3, то массив будет иметь 3 ячеек. В памяти программ, начиная с адреса 0030H, размещаются однобайтные константы, которые будут использоваться при вычислениях функций. Значения констант условно обозначено XXH. В главной программе используются 2 прерывания: от таймера Т/С0 и от УАПП. Флаг F0 используется для индикации окончания отсчета времени опроса Топр. Он устанавливается, когда истечет время Tопр = 2 с.

Подпрограмма INIT используется для инициализации МКС после включения электропитания. БСА подпрограммы приведена на рис. 3.2. При сбросе МК все порты настраиваются на ввод [1,2], т.е. на их выводах будут высокие уровни (логические 1). В подпрограмме инициализации необходимо настроить УАПП и таймеры Т/C0, T/C1 на заданные режимы работы. Для двустороннего обмена по интерфейсу ИРПС выбираем для УАПП режим 1. Управляющее слово, которое следует загрузить в регистр SCON, будет 52H [1,2].

Скорость обмена УАПП задает таймер T/C1, который должен работать в режиме 2. Управляющее слово, которое нужно загрузить в регистр TMOD, будет 20H. Для получения заданной скорости обмена в регистр TH1 таймера T/С1 необходимо загрузить число, которое вычисляется из соотношения [2]:

 

. (3.1)

 

При SMOD = 0,  = 4 МГц и  = 9600 бит/с получаем из формулы число FEH.

Для отсчета времени Топр будем использовать таймер T/С0 в 1-м режиме работы. Управляющее слово для этого режима равно 01H. При тактовой частоте работы МК, равной 4 МГц, максимальное время задержки будет 196605 мкс [1,2], что значительно меньше требуемой 2 с. Поэтому на таймере T/C0 реализуем задержку на 1 с, а в регистре общего назначения (РОН) будем накапливать количество переполнений таймера с целью получения требуемой задержки в 2 с. Для получения задержки 1 с в регистры таймера TH0, TL0 первоначально необходимо загрузить число 196605 - 1000000 = 96605 c = 96605/3 МЦ = 32 202 МЦ = 7DCAH. Количество переполнений таймера для отсчета времени 2 с будет: 2 с / 1 с = 2. Для счета переполнений будем использовать регистр R0 1-го банка РОН.

 


Рис. 3.2. БСА подпрограммы инициализации МКС

*************************************************************

; INIT - подпрограмма инициализации МКС

;********** *******************************************

INIT:      MOV SCON, #52H; Режим 1 для УАПП, двусторонний

; обмен

MOV TMOD, #20H; Режим 2 для T/С1

MOV TH1, #0FEH; Загрузить TH1 для скорости

; обмена 9600 бит/с

SETB TR1; Запустить T/С1

ORL TMOD, #01H; Режим 1 для T/С0

MOV TH0, #7DH; Загрузить регистры T/С0

MOV TL0, #CDH; для отсчета задержки 1 с

MOV 08H, #0; Очистка регистра R0 в 1-м банке P0H

SETB TR0; Запустить T/С0

SETB EA; Общее разрешение прерываний

SETB ET0; Разрешить прерывание от T/С0

RET

 

Подпрограмма TIMER является обработчиком прерывания при переполнении таймера T/C0, ее БСА приведена на рис. 3.3. Эта подпрограмма производит отсчет времени опроса Топр. При каждом вызове подпрограммы вследствие переполнения таймера (истекло 1 с) инкрементируется регистр R0 в 1-м банке РОН. Если содержимое R0 станет равным 2, то это означает, что истекло время Топр = 2 с. После окончания отсчета времени 2 с подпрограмма TIMER устанавливает флаг F0 = 1, что является сигналом для главной программы CONTROL начать новый цикл опроса датчиков и выполнения других функций управления.

 


Рис. 3.3. БСА подпрограммы отсчёта времени Tопр

 

;***********************************************************

; TIMER - подпрограмма отсчета времени Tопр = 2 с

; Выходной параметр: F0 - флаг окончания отсчета времени

; Используется 1-й банк P0H

;************** ******************************************

TIMER: CLR TR0      ; Остановить T/С0

SETB RS0     ; Перейти в 1-й банк P0H

INC R0

CJNE R0, #2, EXIT; Переход, если (R0)<2

SETB F0; Установить флаг F0 окончания cчета 3,6 c

MOV R0, #0  ; Очистить R0

EXIT:    MOV TH0, #7DH  ; Перезагрузить T/С0

MOV TL0, #0CAH

SETB TR0; Запустить T/С0

CLR RS0       ; Перейти в 0-й банк P0H

RET

 

Ячейка ПД с адресом 24H используется в программе для хранения значений входных сигналов X1, X2, X3 и X4, а также для запоминания результата вычисления логической функции f() - управляющего сигнала Y1. Выбор этого адреса обусловлен тем, что эта ячейка, как и другие с адресами от 20H до 2FH, допускают обращение к отдельным битам с помощью команд SETB bit и CLR bit [1,2], что упрощает программирование. После выполнения подпрограммы DIGIT в ячейке 20H будет:

 

 

  7 6 5 4 3 2 1 0 - разряды
24H 0 0 0 Y1 X4 X3 X2 X1  

 

Для формирования одиночного управляющего импульса Y1 длительностью t1 = 100 мкс используется подпрограмма задержки DEL100MKS, текст которой будет приведен ниже.

 


Рис. 3.4. БСА подпрограммы ввода и обработки цифровой информации


;**********************************************************

; DIGIT - подпрограмма ввода и обработки цифровой информации

; Используется ячейка ПД с адресом 24H для хранения значений

; X1, X2, X3, X4, Y1

;***********************************************************

DIGIT:  MOV P0, #0FFH   ; Настроить P0 на ввод

CLR P3.4       ; Открыть выходные буферы DD7

MOV A, P0   ; Ввод сигналов X1-X4

SETB P3.4    ; Закрыть буферы DD3

SWAP A        ; Поменять местами тетрады аккумулятора

ANL A, #00001111B; Обнулить СтТ аккумулятора

MOV 24H, A          ; Переслать аккумулятор в ячейку 24H

MOV C, 24H.1; Переслать С ß X2

ORL C, 24H.2; С ß X2 X3

CPL C  ; C ß

ORL C, /24H.0; C ß f() =

CLR P1.5; Вывести Y1=1

SETB P1.5    ; Вывести Y1=0

EXIT:    RET

 

Подпрограмма ANALOG выполняет ввод и обработку аналоговой информации - напряжений U1, U2, U3 поступающих в МКС от датчиков. БСА подпрограммы ANALOG изображена на рис. 3.5. Первый блок БСА - это подпрограмма OPROS, которая производит ввод аналоговых сигналов U1 - U3, их преобразование в цифровые коды W1 - W3 и размещение в памяти данных МК. В результате выполнения подпрограммы OPROS в ПД в ячейках с адресами 30H - 32H будет следующая информация:

 

  7 6 5 4 3 2 1 0 - разряды
32H x x x x x x x x W3
31H х х х х х х x x W2
(DATA_W) 30H x x x x x x x x W1

 

Здесь обозначено: x - произвольное значение (0 или 1).

В блоках 2 - 4 подпрограммы ANALOG производится вычисление заданной функции g() = (W1+W2)*W3

Для выполнения арифметических операций умножения и деления можно воспользоваться готовыми подпрограммами, которые приведены в приложении данного руководства.

В блоке 5 БСА полученное значение функции g() сравнивается с двухбайтной константой Q, хранящейся в памяти программ по символическому адресу ADR_Q. Сравнение можно выполнить с помощью программы вычитания двухбайтных целых чисел g() - Q. Результат сравнения определяется значением флага переноса C микроконтроллера после вычитания старших байтов. Если C=1, то g() < Q. Если же С=0, то g() >=Q. В блоке 6 подпрограммы ANALOG производится анализ флага C, и в зависимости от его значения формируются одиночные импульсы Y2 или Y3 длительностью t2 и t3 на выводах P1.1 и P1.2 порта МК. Подпрограммы задержек DEL5MS на 5 мс и DEL3MS на 3 мс будут приведены ниже. После выполнения подпрограммы ANALOG в ячейке с адресом 24H будет:

 

  7 6 5 4 3 2 1 0 - разряды
24H 0 Y3 Y2 Y1 X4 X3 X2 X1  

 


Список литературы

микроконтроллерный сигнал аналоговый ассемблер

1. Сташин В.В., Урусов А.В., Мологонцева О.Ф. Проектирование цифровых устройств на однокристальных микроконтроллерах. - М.: Энергоатомиздат, 1990.

2. Однокристальные микроЭВМ. Справочник/ А.В. Боборыкин, Т.П. Липовецкий и др. - М.: МИКАП, 1994.

3. Федорков Б.Г., Телец В.А., Дегтяренко В.П. Микроэлектронные цифроаналоговые и аналогоцифровые преобразователи. - М.: Радио и связь, 1985.

4. Цифровые интегральные микросхемы. Справочник / М.И. Богданович, И.Н. Грель, В.А. Прохоренко, В.В. Шалимо. - Мн.: Беларусь, 1991.

5. Цифровые и аналоговые интегральные микросхемы: Справочник / Под ред. С.В. Якубовского. - М.: Радио и связь, 1990.

6. Полупроводниковые БИС запоминающих устройств: Справочник / Под ред. А.И. Гордонова и М.Н. Дьякова. - М.: Радио и связь, 1987.

.   Лебедев О.Н. Микросхемы памяти и их применение. - М.: Радио и связь, 1990.

8. Иванов В.И., Аксенов А.И., Юшин А.М. Полупроводниковые оптоэлектронные приборы: Справочник. - Энергоатомиздат, 1989.

9. Резисторы, конденсаторы, трансформаторы, дроссели, коммутационные устройства РЭА. Справочник / Н.Н. Акимов, Е.П. Ващуков, В.А. Прохопенко, Ю.П. Ходоренко. - Мн.: Беларусь, 1994.

.   Гуртовцев А.Л., Гудыменко С.В. Программы для микропроцессоров: Справ. пособие. - Мн.: Выш. шк., 1989.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...