КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Используемые в программе процедуры и макрокоманды
Proc _Reg Цифровой регулируемый привод, таймерное исполнение! Zad5:;задача 5 в меню каркасной программы mov [I],0;инициализация переменных, I(k) mov [I1],0;I(k-1) mov [Nupr],0;управление на ЦАП mov [Y],0;Y(k) mov [Y1],0;Y(k-1) mov [X],4000;задание скорости на входе фильтра mov ax,[X]; sar ax,3;;ах=4000/8=500 mov [C],ax;С=500 TaimIni 2735, Privod;f0=438Гц = 1/Т 0 ; Т 0 = 0,00228с, ;вектор прерывания - Privod ; цикл фоновой (прерываемой) программы ckl: DisplBin 320,Y;индикация переменных, задание DisplBin 350,Nos;обратная связь DisplBin 380,Nras;рассогласование DisplBin 410,Nu;управление KeyTest;клавиатура нажималась? jz ckl;переход по нулю ExitInt;выход из прерываний WriteReg 0D000h, Nul;обнулить ЦАП, останов привода jmp menu;выход в меню ;========================================= ;обработчик таймерных прерываний Privod: push ax;сохранение регистров фоновой программы push cx push dx Call _Fz;фильтр, расчет задания, результат в Y Call _Fos;формирование обратной связи Nos Call _Reg;ПИ-регулятор, выход в Nu mov al,20h;код 20h – в регистр al out 20h,al;al – в порт с адресом 20h pop dx;восстановить регистры pop cx pop ax sti;разрешить прерывания процессору iret;возврат в фоновую программу ;=========================== ;Используемые процедуры PROC _Fz;формирование задания, выход фильтра mov ax,0 add ax,[C];ax=500 add ax,[Y];ax=500+y(k-1) mov bx,[Y1] sar bx,3;bx=1/8[y(k-1)] sub ax,bx;ax=500 + y(k-1) -1/8[y(k-1)] mov [Y],ax;Y(k) – новое значение задания скорости mov [Y1],ax;Y(k-1) ← Y(k) для нового цикла ret;возврат из процедуры ;================================================ ;процедура формирования обратной связи с АЦП PROC _Fos;формирование обратной связи ReadReg 0F400h, Nos;чтение АЦП в переменную Nos ret ENDP ;========================================== ;процедура регулятора скорости mov dx,0;делимое в dx,ax mov ax,[Nras]; mov bx,[a];делитель a=7 в регистре bx div bx;деление dx:ax на bx; в ах –частное, в dx–остаток add ax,[I1];ax=Nras/a+I(k-1) mov [I],ax;I(k) – интегральная часть mov [I1],ax;I(k-1)=I(k) add ax,[Nras];добавить пропорциональную часть mov [Nu],ax;Nu=ax – управление для ЦАП WriteReg 0D100h;переслать в ЦАП ret;возврат из процедуры ENDP ;================================================ ;Сегмент данных DATASEG;начало сегмента данных INCLUDE "pr_menu.dat";файл с данными для меню
;Область для сохранения параметров системы. oldip8 dw 0;старое смещение вектора прер. oldcs8 dw 0;старый сегмент вектора прер. ;область сегмента данных – управление приводом X dw 0;задание на входе фильтра Y dw 0;выход фильтра y(k) Y1 dw 0;выход фильтра y(k-1) C dw 0;константа I dw 0;компонент интеграла I(k) I1 dw 0;компонент интегралаI(k-1) Nos dw 0;значение обр.связи в k интервале Ras dw 0;рассогласование Nu dw 0;управление (на ЦАП) a dw 7;коэффициент а=7 алгоритма Nul dw 0;нулевая константа для ЦАП ;конец сегмента данных ENDS ;=============================================== STACK 200h;начало сегмента стека размером 200h ;=============================================== END Start;конец программы, стартовый адрес ;=============================================== Процедуры _DisplBin – вывод на экран однословного двоичного числа со знаком путем прямой записи в видеопамять. Требует установки: в di –адреса знакоместа на мониторе, в переменной Atr – атрибута символов. _PrintBin – вывод двоичного числа в десятичной форме. _TestKey – вывод на монитор кодов и сканкодов клавиатуры в десятичной форме.
Дата добавления: 2014-01-11; Просмотров: 520; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |