Простейшая асмолиба для работы со светодиодной матрицей P10
Понадобилось сделать большие автономные часы (ага, давно часов не делал). Купил данную матицу. Скажу сразу, не подошла, ибо потребление просто конское, 2.5А при 5В. Но простенькая либа для вывода циферок (500 байт, из них 160 на знакогенератор) на 8051 асме была за вечер все же написана.
Читать дальше
Читать дальше
SI7021 и asm
Всем добра!
Долго у меня руки не доходили закончить этот проект. Много видел всяких библиотек, но проект задумывался на asm, был отложен на год или два. И вот руки дошли его закончить.
Работать на asm c этим датчиком никаких сложностей нет. Всё, что не поддерживается набором команд AVR, было отброшено за ненадобностью.
В итоге, что получилось, можно посмотреть в приложенных файлах. Я не делал перевод температуры в BCD, т.к. в моём проекте это не требуется.
Ну и несколько коротеньких функций в качестве бонуса:
Такое я использовал в программах МЕНЮ или если что-то уже получаешь в ASCII
Это функция поиска кнопки, при использовании ADC
Долго у меня руки не доходили закончить этот проект. Много видел всяких библиотек, но проект задумывался на asm, был отложен на год или два. И вот руки дошли его закончить.
Работать на asm c этим датчиком никаких сложностей нет. Всё, что не поддерживается набором команд AVR, было отброшено за ненадобностью.
В итоге, что получилось, можно посмотреть в приложенных файлах. Я не делал перевод температуры в BCD, т.к. в моём проекте это не требуется.
Ну и несколько коротеньких функций в качестве бонуса:
Такое я использовал в программах МЕНЮ или если что-то уже получаешь в ASCII
Ld temp,Y ;* Берем цифру в BCD
subi temp,(-0x67) ;* Переводим в HEX, сразу добавляем (1)
brhc ADD_6 ;* Проверяем младшую тетраду на ноль
Sub_66:
subi temp,0x66 ;* И обратно в BCD
ADD_6:
subi temp,-6 ;- Если в младшей тетраде (0) добавл. (6)
rjmp Sub_66
Это функция поиска кнопки, при использовании ADC
KNOB:
cbi Flags,fl_Key_CODE ;= Сбрасываем флаг кода, что-то там ADC насчитало
ldi temp1,0x20 ;= Загружаем регистр для сдвига (1) (0010 0000)
ldwi Z,TAB_KEY*2 ;= и он же счетчик обработанных кнопок
NEW_KEY_VALUE:
lpm temp,Z+ ;= извлекаем максимально возможный код кнопки из таблицы.
ldi count,3 ;= На это число, в итоге, уменьшим код , чтобы определить кнопку т.к. значение может отличаться
(+/-) 1 от табличного.
CheckTabADC:
cp CODE_KEY,temp ;= Сравниваем полученное с данными в таблице
breq EXIT_KNOB ;+ Равны - уходим
dec temp ;= Вычитаем из полученного кода (1)
dec count ;= Соответственно и уменьшаем счётчик возможностей
brne CheckTabADC ;= И снова проверяем. ;= Достанем следующий код кнопки , для проверки с полученным, при этом передвинув
lsr temp1 ;= флажок , указывающий какой код кнопки мы будем обрабатывать ;= В итоге temp1 всегда ==0x01, что соответствует коду 0xFF - не нажата.
;| 0x02 - SW5, 0x04 - SW4,0x08 - SW3, 0x10 - SW2, 0x20 - SW1
brne NEW_KEY_VALUE
; nop ;= а сюда все равно не попадём никогда , так что похрен;= что тут можно понаписать
EXIT_KNOB:
mov Flags_KEY,temp1 ;= Переносим в регистр флагов
ret
- 0
- 22 июля 2019, 11:58
- ILYAUL
- Оставить комментарий
- 1
Сложить и приумножить
Дискламер: Тут будет описано несколько боянистых боянов. Поэтому, если вы решите что боян, можно не читать, скажете что я разрешил. А на случай если кто-то не знает, пусть это лежит здесь.
В противополжность персонажам известного анекдота, сегодня мы не станем отнимать и делить. Напротив, мы будем умножать и складывать, чтобы получить в результате всем известное уравнение прямой y=kx+b.
Читать дальше
В противополжность персонажам известного анекдота, сегодня мы не станем отнимать и делить. Напротив, мы будем умножать и складывать, чтобы получить в результате всем известное уравнение прямой y=kx+b.
Читать дальше
- +2
- 15 мая 2019, 19:26
- Gornist
- Оставить комментарий
- 1
Dowlib update
DOWLIB обновлён.
Bugfix: устранено бесконечное ожидание в Ex_DowRst при коротком замыкании шины. Теперь возвращает CY (нет отклика устройства на сброс)
Bugfix: вызов Ex_DowSkipRom ошибочно возвращал CY. поправлено.
Новая версия в аттаче.
Bugfix: устранено бесконечное ожидание в Ex_DowRst при коротком замыкании шины. Теперь возвращает CY (нет отклика устройства на сброс)
Bugfix: вызов Ex_DowSkipRom ошибочно возвращал CY. поправлено.
Новая версия в аттаче.
Easy_I2C AVR ASM практикум PCF8591 & DS1307
PCF8591 это микросхема в которой 4 АЦП и 1 ЦАП на скорости до 100кГц по i2c
Вот я добрался до неё. Она, как мне казалось, не самая простая микросхема однако сложного в ней по сути ничего нет.
Читать дальше
Вот я добрался до неё. Она, как мне казалось, не самая простая микросхема однако сложного в ней по сути ничего нет.
Читать дальше
Easy_I2C AVR ASM практикум PCF8574 и немного мыслей о жк дисплеях + I2C-GPIO
Отредактировано 23.12.2013
PCF8574 это 8-битный расширитель ввода – вывода. Другими словами у нас появляется еще 8 ног
Читать дальше
PCF8574 это 8-битный расширитель ввода – вывода. Другими словами у нас появляется еще 8 ног
Читать дальше
Обработка mRTOS напильником
Вместо вступления.
Это мой первый топик (не здесь а вообще, в этих ваших интернетах). Прощу сильно не пинать. Далее немного нытья.
Здравствуйте, меня зовут Евгений и яалко начинающий микроконтроллерщик. В моей чисто любительской практике с микроконтроллерами еще пару лет назад (тогда я трогал только AVR) не было какой то особой активности. Надо написать какую то простую программку — написал суперлуп и готово. Надо поморгать светодиодиками — запилил стандартный delay(). Положение усугублялось тем что я, как начинающий микроконтроллерщик, не мог не наткнуться на CodeVision AVR и не залипнуть на нем. Ведь там все что хочешь и сразу. Деление программы на отдельные файлы не практиковал — валил все переменные, функции и объявления в одну кучу говкода. Так продолжалось до тех пор пока мне не пришлось писать программу с изобилием задержек и таймаутов. Далее все о чем предупреждал товарищ DI HALT в статьях об архитектуре программ, прочитанных позже. Программные уродцы, полная невозможность модернизации и поддержки, тормоза, зависания, паранойя, депрессия, плохой стулсон. Далее я взял за правило всегда писать по правилам даже простые программы.
Читать дальше
Это мой первый топик (не здесь а вообще, в этих ваших интернетах). Прощу сильно не пинать. Далее немного нытья.
Здравствуйте, меня зовут Евгений и я
Читать дальше
uRTOS в режиме кооперативной ОС

В предыдущей статье была рассмотрена работа ОС uRTOS в вытесняющем режиме. С тех пор кое-что в системе изменилось, исходник был тщательно перелопачен, перекомпонован, дополнен комментариями. Также в ОС была добавлена возможность работы в кооперативном режиме. Остановимся на этом чуток подробнее.
Читать дальше
Реализация кольцевого буфера на ассемблере AVR
Для очередного эксперимента понадобился мне такой вот буфер. Что это такое, можно почитать в Википедии, а также здесь, поэтому углубляться не буду.
Оговорки:
Читать дальше
Оговорки:
- я не профессиональный программист и наверное им не стану, поэтому возможно, что нижеприведенное потребует оптимизации/переработки;
- на Сях и прочих высокоуровневых языках не пишу — не умею;
- долго искать готовое решение на ассемблере не стал, а изобретать колесо вроде как и не запрещено (хоть иногда и глупо), зато интересно.
Читать дальше