Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2013, 01:53   #1
юрий п
Новичок
Джуниор
 
Регистрация: 22.11.2013
Сообщений: 1
По умолчанию помогите написать программу в асемблере. по условию.

Плавно повышать температуру в сушильной камере (увеличивая величину напряжения на регуляторе нагревательного элемента каждый раз на 2% за счет изменения ШИМ) до тех пор, пока она не достигнет верхнего предельного значения. Выдержка времени между очередными повышениями температуры за счет изменения индекса модуляции ШИМ Зс
вот выгладываю свое решение помогите исправить ошибки.
включим нагревательный элемент и вентилятор
bset P2.1 ;установим первый бит порта
bsep DP2.1 ;задаем направление
bset P2.8 ;установим восьмой бит порта
bset DP2.8 ;задаем направление

acp:

;проверяем достигли ли мы максимального значения температуры
;читаем значение температуры из порта для сравнения
ВCLR DP2.8; запись нуля в регистр направления (ввод)

BMOV R1.1,R2.2; пересылка содержимого порта Р2.8 в R1.1
JB R1.1,stop1; условный переход: если в первом бите порта R1 единица, то перейти по
;метке

;установим ШИМ на 2%
mov R1,1916h ;запишем значение модуляции 0,02
push R1 ;сохраним значения с стеке для
;дальнейшего преобразования
push R1 ;занесем его через стек в регистр СС0
pop CC0
mov CCM0,0007h ;заполняем поля регистра режима
mov T01CON,0047h ;заполняем поля регистра управления
bset DP2.0 ;задаем направления работы порта

;выполним выдержку времени 3 секунды
MOV R12,#0003h ; три цикла задержки по 1 секунде
mov R0,6768h ;записываем делитель
push R0 ;сохраним значение в стеке
pop T2 ;записываем делитель в таймер

KL:
mov T2CON,0046h ;программируем регистр управления

CI:
NOP; пустой шаг − некоторая задержка времени в выполнении программы
JNB T2IR, CI; условный переход: если в T2IR нет единицы, то перейти
по метке
MOV T2CON,#0000h; выключение таймера
BCLR T2IR; установка триггера T2IR в ноль
SUB R12,#0001h; вычесть из числа 3 единицу
JMPR CC_NZ,KL; если не выполнены все 3 цикла, то перейти по
метке

;увеличиваем на 2% напряжения на нагревателе
pop R1 ;получим значения индекса модуляц.
sub R1,0083h ;вычитаем из регистра 83h
push R1 ;сохраним значения с стеке для
;дальнейшего преобразования
push R1 ;занесем его через стек в регистр СС0
pop CC0
mov CCM0,0007h ;заполняем поля регистра режима
mov T01CON,0047h ;заполняем поля регистра управления
bset DP2.0 ;задаем направления работы порта
jmpr cc_uc,acp ;безусловный переход
stop1: ;достигнута температура MAX

Последний раз редактировалось юрий п; 22.11.2013 в 13:18.
юрий п вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите написать программу!!! egorov.i Паскаль, Turbo Pascal, PascalABC.NET 0 17.10.2013 13:41
Задача на асемблере: Написать программу для подсчета количества вхождений в строку 3-й буквы Вашей фамилии. Vlt Помощь студентам 0 13.03.2013 21:01
Помогите написать программу voher3 Фриланс 3 01.12.2008 10:57