Ассемблер
Добрый день.
Остро встал вопрос помощи с контрольной на языке ассемблер с 11 по 14 задание.
Для меня язык программирования это, что-то из раздела фантастики.
Возможно, кто-то поможет и объяснит, конечно, не бесплатно.
Я, вроде как, часть решила, но не знаю, верны ли мои умозаключения.
А хочется не просто купить и забыть, хочется разобраться.
Очень нужно. Выручай, сила пикабу
Пишем программу для утюга на ассемблере
Пост носит сугубо техническо-юмористический характер, прошу всерьёз не воспринимать, а то были прецеденты
Всем привет! По причине того, что я имею официальный диагноз "Оператор ЭВМ", многие знакомые или родственники часто обращаются ко мне с просьбой что-нибудь починить. Ну, например, отвлечься от сортировки трёхмерных массивов, и сделать наконец-таки что-нибудь полезное для родины. Например, мультиварку или утюг. Но, чтобы это не было скучно, давайте попробуем написать исходный код для обыкновенного утюга. Для эстетичности и ради культурной ценности писать мы его будем на ассемблере.
Далее следует техническое описание, кому оно не интересно, а хочется сразу посмотреть результат, можете промотать до фотки с утюгом.
Ассемблер для AVR основан на RISC-архитектуре, что значительно позволяет упростить программу. Выберем микроконтроллер Attiny13, и напишем под него самую примитивную программу из возможных:
Чтобы не быть голословным, данная программа не задействует ОЗУ, а лишь устанавливает контроллер в конкретный режим работы. Далее я объясню, почему так.
Режим работы и данная программа весьма проста. Её можно выразить одним условием:
ТЕМП < K ? А : Б
Где темп - температура с датчика (напряжение на входе АЦП), к - требуемая константа температуры, а - состояние нагрева утюга, б - состояние охлаждения утюга
Аналогичная конструкция применяется в различных бойлерах, мультиварках, плойках и прочих устройствах, имеющих тысячи разновидностей. В таком виде я её впервые увидел в фирменном бойлере фирмы ARISTON.
У людей, более-менее знакомых с темой сразу же возникнет два вопроса:
По сути дела, данные устройства при использовании в этой задаче эквивалентны. Но имеется ряд отличий:
- Считается, что полупроводниковая схема надежнее, так как не имеет металлических частей, накапливающих усталостные напряжения. Поэтому такие устройства прослужат дольше. На практике случаи потери прошивки или пробоя по питанию столь же часты, сколь и выход из строя механического терморегулятора
- В данном включении наша ATTINY13 действительно ничем не будет отличаться от обычного компаратора LM339. Отличия проявляются лишь в возможности изменения константы K (вот эта строчка):
LM339 тоже поддерживает аппаратное изменение, для этого устанавливается обычный потенциометр на второй вход сравнения компаратора. Однако, например, в случае необходимости применения термопрофиля в качестве альтернативы МК практически отсутствуют варианты. Т.е. тут мы можем численно задать эту константу, и менять её при помощи внешних средств. Чтобы сделать подобное без микроконтроллера, платы будут очень громоздкими.
Немного отвлечёмся от темы:
В бойлере Gorenje эту константу можно дополнительно изменять при помощи двух кнопок, навешанных на свободные ножки контроллера. Для этого делаются соответствующие подпрограммы. Таким образом выставляется температура нагрева бойлера:
Правда, здесь используется контроллер с большим количеством ножек, для того, чтобы ещё и вывести динамическую индикацию этой константы:
Вернёмся к утюгу. Наша программа имеет 5 "субрутин", не записывает и не читает ничего из ОЗУ, даже не инициализируется стек. По причине того, что она весьма линейна.
preset - установка режима работы контроллеров. Записываем параметры в регистры управления.
adc_start - начало преобразования АЦП (напряжение в значение регистра)
wait - ожидание снятия флага преобразования. Флаг снимается, когда преобразование завершено.
compare - сравнение констант. Данные с АЦП пишутся в регистр, константа также пишется в регистр и происходит их сравнение (в данном случае - ветвление) brsh - branch if same or higher, то есть переход, если в АЛУ установлен флаг C
enable - ветка, в которую мы попадаем, либо не попадаем. Включает ТЭН.
Саму методику преобразования я уже описывал в предыдущих постах, когда работал с посудомойкой, а именно, здесь
Реле возьмём из проекта с пылесосом на линуксе.
Также нам понадобится, собственно, утюг. Возьмём типичный советский утюг, так как на опыты его уже не жалко:
Программа готова, прошьём контроллер:
Далее испытаем работоспособность схемы на макете. Вместо терморезистора (его видно в пакетике) для испытаний стоит крутилка из предыдущих проектов:
Всё успешно работает, поэтому можно попробовать подсоединить схему к утюгу. Пока что на соплях, для проверки того, что всё идёт по плану:
Далее установим терморезистор в область ТЭНа:
Ещё одним недостатком схем на микроконтроллерах и микросхемах, в отличие от механики, является необходимость в источнике питания. Это может быть трансформатор силовой, импульсный или же конденсаторный блок питания. В нашем случае лень было заморачиваться с этим, так что пока наш утюг получил USB-интерфейс, и питается от него:
Ну вот, собственно говоря, и всё. Пост писал Kekovsky для pikabu.ru
Жалко пацана
Наткнулся сегодня на объявление на одной из площадок.
Грустная история
Ответ на пост «Программисты, ну как так-то? :(»
Для тех кто разочаровался в современных программистах - ловите ссылку на демку 2004го года:
https://drive.google.com/file/d/1Shaq1UjpvXj7quWFKEf_89e4u32yLPuc/
Пароль от архива 123456
Небольшой отрезок демки записал на видео
Для пользователей Win 10 перед запуском, нажать правой кнопкой мышки, зайти в свойство файла, далее во вкладку с СОВМЕСТИМОСТЬ, кликнуть ИЗМЕНИТЬ ПАРАМЕТРЫ ВЫСОКОГО DPI.
Внизу выбрать ПЕРЕОПРЕДЕЛИТЬ РЕЖИМ МАСШТАБИРОВАНИЯ ВЫСОКОГО РАЗРЕШЕНИЯ..., из ниспадающего разрешения выбрать ПРИЛОЖЕНИЕ.
Далее ОК, ПРИМЕНИТЬ, ОК.
Потом запустить сам файл и выбрать самое высокое разрешение. Погнали!
И если вы думаете, что это ВИРУС, то нет ребята, это один файл помещающий в себя клип с музыкой и крутым визуалом, написанный на асме. Старики помнят, молодым будет интересно.
И этот шедевр весит всего 47 килоБайт.
Да-да, КАРЛ, 47 КИЛОбайт!
К примеру файл скриншота этой темы весит 123 килобайта, то есть почти в три раза больше файла демки.
Так и хочется добавить - "умели же раньше!"
В Питере шаверма и мосты, в Казани эчпочмаки и казан. А что в других городах?
Мы постарались сделать каждый город, с которого начинается еженедельный заед в нашей новой игре, по-настоящему уникальным. Оценить можно на странице совместной игры Torero и Пикабу.
Реклама АО «Кордиант», ИНН 7601001509