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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2011, 00:41   #1
jakim91
Новичок
Джуниор
 
Регистрация: 15.04.2011
Сообщений: 2
Восклицание Программа для жизни

Умоляю, помогите товарищи программисты!
Для курсача надо сделать прогу на ассемблере, и есть алгоритм работы в тексте, но как этот алгоритм работы перевести хотябы в текст программы не имею ни малейшего понятия, т.к. на ассемблере (по нашей специальности) проходили просто как запихнуть в N-ый регистр чтото...помогите пожалуйста...вот текст алгоритма:
Инициализация:
• RESET: 10 – вход сброса;
• Y1 – Y7: – выходы на индикаторы ;
• Y15: – выход на обогреватель;
• Y14: – выход на вентилятор;
• Y12: вход с датчика температуры;
• Y13: – вход с датчика влажности;
• Y8-Y11: входы с кнопок;
• Тактовая частота АЦП 400 кГц (коэффициент деления = 4);
• Частота внутреннего тактового генератора = 1,6 МГц;
• Разрешить прерывание по нажатию кнопок (ввод данных с пульта);
• Разрешить прерывание по нажатию кнопки вкл/выкл на вентиляторе;
• Разрешить прерывание по нажатию кнопки вкл/выкл на нагревателе;
• Разрешить прерывание от часов реального времени;
• Разрешить прерывание по переполнению счетчиков;
• Текущее_влажность = влажность измеренная датчиком влажности;
• Текущее_ температура = температура измеренная датчиком температуры
• Кнопка_ нагреватель = = 0;
• Кнопка_ вентилятор = = 0;
• Текущее_время = = текущее время;
• Счетчик_день = = 0;
• Счетчик_ночь = = 0;
• Период_День = = 8.01 – 20.00
• Период_Ночь = = 20.01 – 8.00
Тело основного цикла:
• Переходим на метку TEST;
• Вечный цикл
{
МК уходит в режим пониженного энергопотребления, пока не придет какое – нибудь прерывание.
}
Описание прерываний:
INT_NIGHTTEMP (прерывание от кнопки_ температура ночью)
• i = 1;
• переходим на метку BUTTON;
• регистр_ночь = счетчик_i*5.
INT_DAYTEMP (прерывание от кнопки_ температура днём)
• i = 2;
• переходим на метку BUTTON;
• регистр_утро = счетчик_i*5.
INT_NIGHTHUM (прерывание от кнопки_ влажность ночью)
• i = 3;
• переходим на метку BUTTON;
• регистр_день = счетчик_i*5
INT_ DAYHUM (прерывание от кнопки_ влажность днём)
• i = 4;
• переходим на метку BUTTON;
• регистр_вечер = счетчик_i*5.
INT_CURTIME (прерывание от блока сравнения текущего времени с одним из заданных периодов (ночь, утро, день, вечер))
• регистр = введенное значение в данный период;
• переход на метку COMPARE.
INT_WIND (прерывание от кнопки вентилятора)
• Переход на метку WIND.
INT_WARM (прерывание от кнопки нагревателя)
• Переход на метку WARM.
Процедуры:
TEST:
• подается сигнал на устройство контроля подключения вентилятора/нагревателя и на устройство подачи питания вентилятора/нагревателя. Последнее последовательно подает питание на вентилятор и на нагреватель, а первое следит, течет ли в этот момент через него ток. Если какое-либо из внешних устройств не подключено в момент подачи питания, то через устройство контроля не потечет ток, соответственно последнее выдаст сигнал ошибки на табло: Е0 – не подключен вентилятор, Н0 – не подключен нагреватель. Код ошибки вентилятора – 0, код ошибки нагревателя – 11.
BUTTON:
• Счетчик_i = = Счетчик_i +1;
• Если Счетчик_i = 1, то Y2 = Y3 = =1;
• Если Счетчик_i = 2, то Y1 = Y2 = Y7 = Y5 = Y4 = =1;
• Если Счетчик_i = 3, то Y1 = Y2 = Y3 = Y4 = Y7 = =1;
• Если Счетчик_i = 4, то Y6 = Y7 = Y2 = Y3 = =1;
• Если Счетчик_i = 5, то Y1 = Y6 = Y7 = Y3 = Y4 = =1;
• Если Счетчик_i = 6, то Y1 = Y6 = Y5 = Y4 = Y3 = Y7 = =1;
• Если Счетчик_i = 7, то Y1 = Y2 = Y3 = =1;
• Если Счетчик_i = 8, то Y1 = Y2 = Y3 = Y4 = Y5 = Y6 = Y7 = =1;
• Если Счетчик_i = 9, то Y1 = Y2 = Y3 = Y4 = Y6 = Y7 = =1;
• Если Счетчик_i = 10, то
{
Y1 = Y2 = Y3 = Y4 = Y5 = Y6 = = 1, Y7 = =0;
SLEEP;
}
• Возврат назад.
COMPARE:
• если регистр < Текущее_влажность, то Y14 = 1 и Кнопка_ вентилятор = 1;
• если регистр > Текущее_ влажность, то Y15 = 1 и Кнопка_ нагреватель = 1;
• если регистр = = Текущее_ влажность, то (Y14 = 0 и Кнопка_ нагреватель = 0) и (Y15 = 0 и Кнопка_ вентилятор = 0);
• если регистр > Текущее_ температура, то Y15 = 1 и Кнопка_ вентилятор = 1
• если регистр < Текущее_температура, то Y14 = 1 и Кнопка_ нагреватель = 1
• если регистр = = Текущее_ температура, то (Y14 = 0 и Кнопка_ нагреватель = 0) и (Y15 = 0 и Кнопка_ вентилятор = 0);
• Возврат назад.
WIND:
• Если Кнопка_вентилятор = = 1, то Кнопка_вентилятор = 0 и Y15 = 0 и МК уходит в режим сохранения энергии;
• Если Кнопка_вентилятор = = 0, то Кнопка_вентилятор = 1 и Y15 = 1 и МК выходит из режима сохранения энергии;
• Возврат назад.
WARM:
• Если Кнопка_нагреватель = = 1, то Кнопка_нагреватель = 0 и Y14 = 0 и МК уходит в режим сохранения энергии;
• Если Кнопка_ нагреватель = = 0, то Кнопка_ нагреватель = 1 и Y14 = 1 и МК выходит из режима сохранения энергии;
• Возврат назад.
=========================
ЗАРАНЕЕ БЕЗМЕРНО БЛАГОДАРЕН
jakim91 вне форума Ответить с цитированием
Старый 15.04.2011, 09:03   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

МП то какой?
p51x вне форума Ответить с цитированием
Старый 15.04.2011, 11:45   #3
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

p51x
"запихнуть в N-ый регистр чтото..." регистры с номерами, по-моему, были на PDP
Mikl___ вне форума Ответить с цитированием
Старый 15.04.2011, 18:19   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

в арме тоже есть R0, R1,...
p51x вне форума Ответить с цитированием
Старый 15.04.2011, 20:13   #5
jakim91
Новичок
Джуниор
 
Регистрация: 15.04.2011
Сообщений: 2
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
МП то какой?
МК такой: PIC16F84
jakim91 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хорошая программа для разрезания жестких дисков для 7-ой винды и других ОС. Pumik2010 Windows 3 01.03.2011 01:28
Программа для создания модулей/макетов для КМС LeoN Софт 0 02.12.2010 10:51
Обширная Справочная система для DELPHI (коды программ на все случаи жизни) Maksxaos Помощь студентам 1 11.01.2009 12:39
О жизни Simply-Art Свободное общение 19 20.01.2007 09:25