Программа в ассемблере для микроконтроллера.

Для тех, кто хочет сделать мир лучше.
Ответить
Сообщение
Автор
Аватара пользователя
Pitch666
Полковник
Полковник
Сообщения: 5489
Зарегистрирован: 27.08.2008
Откуда: Роисся
Поблагодарили: 10 раз
Контактная информация:

#1 Сообщение 05.05.2009, 00:57

Требуется помощь в написании программы для микроконтроллера PIC16F84.
Принцип работы:
Есть схема контроля передачи информации с помощью кода 1 и 6. Смысл её работы заключается в том, что при поступлении на входы 6-ти разрядного слова (например 001010), схема осуществляет перебор. Если в слове одна "1", то при сложение на выходе получается 1 и схема срабатывает. Но если в слове более 1ой "1", то при сложении получается 0 и схема выдает сигнала ошибки.
Всю логику я хотел реализовать с помощью железа. Но так подходящие логические элементы не выпускают - реализация с помощью микросхем становится очень дорогой и неудобной(схема теряет технологичность).
Поэтому я решил все сделать на базе микроконтроллера, а именно PIC16F84. Отсюда вытекает то, что логику схемы придется написать в виже программы для микроконтроллера.
А так как я в асме полный 0 (ну почти 0 :D), прошу тех кто кодит в ассемблере помочь написать программку.
По сути она должна работать так: задается цикл с перебором таблицы истинности.
[spoiler=""Таблица истинности""]Изображение[/spoiler]
И условие при котором все варианты не выделенные полужирным - считаются ошибочными.
Кому интересно вот структурная и эл. принципиальная схемы:
[spoiler=""Структурная схема""]Изображение[/spoiler]
[spoiler=""Схема электрическая принципиальная""]Изображение[/spoiler]
Прошу сильно не бить за оформление. Если что поправьте меня (возможно я где то написал полную ересь) и скажите как сделать лучше. Возможно кто-то знает специализированный форум, елси таковые есть - прошу у вас линк на него. Заранее спасибо.

Аватара пользователя
x_000
Полковник
Полковник
Сообщения: 4889
Зарегистрирован: 25.02.2008
Откуда: Deutsches Reich
Благодарил (а): 6 раз
Поблагодарили: 18 раз

#2 Сообщение 05.05.2009, 02:30

Код: Выделить всё

mov al, [слово_сюда]
mov cl, 00000000b
xor al, cl
cmp al, 00000001b
je one_1
cmp al, 00000010b
je one_1
[аналогичные сравнения]
jmp more_than_one_1
если я правильно понял

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#3 Сообщение 05.05.2009, 11:26

Быдлокод, но можно написать код на сях или дельфях, дизасемблировать его и взять оттуда нужный код... Способ не 100%-ный но попробовать можно.

Аватара пользователя
Jonny
Полковник
Полковник
Сообщения: 1371
Зарегистрирован: 30.05.2008
Благодарил (а): 23 раза
Поблагодарили: 54 раза

#4 Сообщение 05.05.2009, 13:42

ну да
насрать что строчек будет не 10, а 1010
Никакого отношения к нацистским группам и направлениям не имею.

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#5 Сообщение 05.05.2009, 14:03

:) Я же говорю - способ не самый лучший, но если болше ничего не получается... :)

Аватара пользователя
x_000
Полковник
Полковник
Сообщения: 4889
Зарегистрирован: 25.02.2008
Откуда: Deutsches Reich
Благодарил (а): 6 раз
Поблагодарили: 18 раз

#6 Сообщение 05.05.2009, 14:39

зачем мудрить? тут все просто и понятно же

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#7 Сообщение 05.05.2009, 15:27

Согласен с x_000. Проще написать сразу на АСМе и не мудрить с Делфи 0 он выдаст кучу ненужной инфы ;)
Только вот код у него неочень. Щас попробую написатьп прогу.

Добавлено спустя 7 минут 52 секунды:
Ге, АСМ я уже подзабыл - сразу и не написать. Но суть я уловил и у меня получилось максимум 14 строчек.
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
Pitch666
Полковник
Полковник
Сообщения: 5489
Зарегистрирован: 27.08.2008
Откуда: Роисся
Поблагодарили: 10 раз
Контактная информация:

#8 Сообщение 05.05.2009, 17:56

Спасибо всем.
andreil писал(а): Добавлено спустя 7 минут 52 секунды:
Ге, АСМ я уже подзабыл - сразу и не написать. Но суть я уловил и у меня получилось максимум 14 строчек.
Ну мне так и сказали, что около 15-20 строк.

Как я понял там должен быть алгоритм, сейчас скину схему, тоесть всю её логику нужно сделать в виде программного-алгоритма.

Добавлено спустя 23 минуты 34 секунды:
А вот и схема. На входы x приходят сигналы, при сложении и инвертировании в лог. элементах на выходе получатеся 1 или 0. Следовательно 1 - нет ошибок, а 0 - сигнал ошибки.
Изображение
Вся проблема в том, что это асм MPlab, там другие команды...

Ответить