Микропроцессорная техника. Микроконтроллер в двухпозиционном регуляторе

Московский ордена Октябрьской Революции и ордена Трудового Красного Знамени институт Стали и Сплавов кафедра электротехники Курсовая работа Микропроцессорная техника. Микроконтроллер в двухпозиционном регуляторе Выполнил студент Денисов А.В. подпись Группа МПП97-1В Задание разработка структурной и электрической схемы микроконтроллера на базе заданных в варианте микропроцессорных
интегральных схем и его программирование для работы с двухпозиционным регулятором по заданному закону регулирования. Данные варианта 4 Карта памяти Адрес таймера и интерфейса 0000-3FFFСВОБОДНО16КCT74h,75h,76h,77h400 0-47FFRAM2К4800-F7FFСВОБОДНО44КIOC8h,C9h ,CAh,CBhF800-FFFFROM2К Краткое описание контроллер выполнен на микропроцессорном комплекте серии К580. Микросхемы, входящие в состав комплекта, образуют полный набор, необходимый для построения несложных программно управляемых микроконтроллеров. Набор микросхем
КР580ВМ80А – микропроцессор КР580ВК28 – системный контроллер КР580ВВ55А – программируемый контроллер ввода-вывода КР580ВИ53 – программируемый таймер КР580ГФ24 – генератор тактовых импульсов К555ИД3 – дешифратор 4 в 16 К555ИД7 – дешифратор 3 в 8 К505РЕ3 динамическое ОЗУ 512х8 Микросхемы ПЗУ иностранного производства
Микросхемы ОЗУ и ПЗУ подключены к шине адреса ЦПУ согласно карте памяти, при этом двоичные адреса каждой из микросхем показаны в таблице 1. Контроллер ввода-вывода и системный таймер подключены к младшим 8 адресным линиям 0-7, так как пространство ввода-вывода для процессора серии 580 допускает обращение только к 256 устройствам. Программное обеспечение Контроллер управляется программно. Среднее время выполнения команды микропроцессором составляет максимально около 10 тактов на самых сложных EQU 00001000b IOSBC74OUT EQU 0b IOSBBMODE0 EQU 0b IOSBBMODE1 EQU 0100b IOSBB70IN EQU 010b IOSBB70OUT EQU 0b IOSBC30IN EQU 01b IOSBC30OUT EQU 0b Адреса портов программируемого интерфейса IIOBASE03h Порт программирования IIOBASE02h Порт C IIOBASE01h
Порт B IIOBASE00h Порт A Константы для работы с IIOSBSETMODEIOSBAMODE0IOSBA70INIOSBC74INI OSBBMODEIIOMODEIOSBB70OUTIOSBC30OUT Таймер CT Режимы работы таймеров – биты байта состояния CTSBTIMER0 EQU 0b CT STATUS BITS CTSBTIMER1 EQU 010b CTSBTIMER2
EQU 10b CTSBSTOP EQU 0b CTSBLOWBYTE EQU 00010000b CTSBHIGHBYTE EQU 0010b CTSBTWOBYTES EQU 00110000b CTSBMODE0 EQU 0b CTSBMODE1 EQU 010b CTSBMODE2 EQU 0100b CTSBMODE3 EQU 0110b CTSBMODE4 EQU 00001000b CTSBMODE5 EQU 00001010b CTSBBINCODE EQU 0b CTSBBINDECCODE EQU 01b Адреса портов таймера
CT CTMODEPORT EQU CTBASE03h Порт программирования CT CTTIMER2PORT EQU CTBASE02h Таймер 2 CTTIMER1PORT EQU CTBASE01h Таймер 1 CTTIMER0PORT EQU CTBASE00h Таймер 0 IOCPORT TIMER0FREQUENCY
EQU 1000 Задание основного тактирования по T0, Гц TIMER0DELAY EQU 20 TIMER0FREQUENCY TIMER0MODE CTSBTIMER0CTSBTWOBYTESCTSBMODE2CTSBBINDE CCODE TIMER1MODE CTSBTIMER1CTSBTWOBYTESCTSBMODE0CTSBBINCO DE TIMER2MODE CTSBTIMER2CTSBTWOBYTESCTSBMODE0CTSBBINCO DE Прочие константы Константы для работы с нагревателем
HEATERMODEPORT EQU IIOAPORT HEATERON EQU 1 HEATEROFF EQU 0 ОСНОВНАЯ ПРОГРАММА См. входные параметры подпрограмм ORG RAMBASE Эта программа находится в ОЗУ mvi a,IIOMODEPORT xra a Очистка аккумулятора call RestartTimer Запуск таймера 0 Работа на участке 1 dT-50C, dt5сек mvi a,200 Начальная температура mvi b,TIMER0FREQUENCY 5 SHR 4 Время регулировки 5 секунд mvi c,TIMER0FREQUENCY 5 AND 0FFh mvi d,TIMER0FREQUENCY 5 50 SHR 4 Время изменения T mvi e,TIMER0FREQUENCY 5 50 AND 0FFh на 1 градус mvi h 1 Уменьшать температуру call reg
Работа на участке 2 dT0, dt5сек mvi a,150 Начальная температура mvi b,TIMER0FREQUENCY 5 SHR 4 Время регулировки 5 секунд mvi c,TIMER0FREQUENCY 5 AND 0FFh mvi d,0FFh Время изменения температуры mvi e,0FFh велико T const mvi h,0 температура постоянна call reg Работа на участке 3 dT-100C, dt2сек mvi a,150 Начальная температура mvi b,TIMER0FREQUENCY 2 SHR 4
Время регулировки 2 секунды mvi c,TIMER0FREQUENCY 2 AND 0FFh mvi d,TIMER0FREQUENCY 2 100 SHR 4 Время изменения температуры mvi e,TIMER0FREQUENCY 2 100 AND 0FFh на 1 градус mvi h 1 Уменьшать температуру call reg Отключение нагревателя call OffHeater Завершение программы hlt Подпрограммы для работы с нагревателем
OnHeater и OffHeater включить и выключить нагреватель соответственно ВХОД НЕТ ВЫХОД НЕТ РЕГИСТРЫ НЕ ИЗМЕНЯЕТ ФЛАГИ НЕ ИЗМЕНЯЕТ OnHeater push b mov b,a mvi a,HEATERMODEPORT out HEATERON mov a,b pop b ret OffHeater push b mov b,a mvi a,HEATERMODEPORT out HEATEROFF mov a,b pop b ret HeaterControl подпрограмма поддержки заданной температуры.
Если температура больше или равна заданной, выключает нагреватель, иначе включает. ВХОД a – заданная температура ВЫХОД если нагреватель включен CF1, иначе CF0 РЕГИСТРЫ НЕ ИЗМЕНЯЕТ ФЛАГИ CF HeaterControl push b mov b,a in HEATERSTATEPORT cmp b jnc TemperatureIsNormal call OnHeater jmp ExitHeaterControl TemperatureIsNormal call
OffHeater ExitHeaterControl mov a,b pop b ret Подпрограммы для работы с таймерами RestartTimer – запуск таймера на отсчт N отрезков. ВХОД a – номер таймера b,c – число отрезков для отсчта для таймеров 1 или 2 ВЫХОД НЕТ РЕГИСТРЫ НЕ ИЗМЕНЯЕТ ФЛАГИ НЕ ИЗМЕНЯЕТ RestartTimer push psw jnz IsTimer1 mvi a,TIMER0MODE Инициализация таймера 0 out TIMERMODEPORT mvi a,TIMER0DELAY AND 0FFh Ввод младнего байта величины задержки out CTTIMER0PORT mvi a,TIMER0DELAY SHR 4 Ввод старшего байта out CTTIMER0PORT jmp ExitRestartTimer IsTimer1 dcr a jnz IsTimer2 mvi a,TIMER1MODE out TIMERMODEPORT mov a,c out CTTIMER1PORT mov a,b out CTTIMER1PORT jmp ExitRestartTimer
IsTimer2 dcr a jnz ExitRestartTimer mvi a,TIMER2MODE out TIMERMODEPORT mov a,c out CTTIMER2PORT mov a,b out CTTIMER2PORT ExitRestartTimer pop psw ret CheckTimers – проверить, не было ли срабатывания таймера ВХОД НЕТ ВЫХОД если сработал таймер 1, установит бит 1 аккумулятора, если таймер 2 – бит 2 т.е. 1 – таймер 1, 2 – таймер 2 кроме того, если таймер сработал, установит флаг
CF РЕГИСТРЫ a ФЛАГИ CF CheckTimers stc push b push psw in TIMERSTATEPORT ani 110b jnz TimeOut pop psw pop b cmc ret TimeOut rlc Rotate bits to positions 0 and 1 rlc mov b,a pop psw mov a,b pop b ret Подпрограмма регулирования температуры Reg регулирование температуры ВХОД a – начальная температура b,c – тактов таймера 0 до окончания регулирования d,e – тактов таймера 0
до изменения уставки по T h – направление изменения T – 1, -1 или 0 ВЫХОД НЕТ РЕГИСТРЫ НЕ ИЗМЕНЯЕТ ФЛАГИ НЕ ИЗМЕНЯЕТ Reg push b Сохранить все основные регистры push d push h push psw push psw Запустить таймер 2 на счт времени mvi a,2 регистры b,c уже установлены, см. ВХОД call RestartTimer pop psw push d Регистровую пару d,e поместить в b,c pop b mov d,a
Store temperature in d TChanged mvi a,1 Таймер 1 call RestartTimer запустить на подсчт времени до новой уставки RegNext mov a,d Восстановим уставку T call HeaterControl Подрегулируем температуру call CheckTimers Проверим, не сработал ли таймер jnc RegNext cpi 1 jnc ExitReg Если сработал таймер 2 ВРЕМЯ – на выход mov a,d add h Иначе изменим уставку по температуре, mov d,a сохраним е jmp TChanged и перезапустим подсчт времени уставки ExitReg pop psw restore general registers pop h pop d pop b ret ENDALL