Алгоритм для Pic16f84

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Аватара пользователя
Сообщения: 3
Зарегистрирован: Пн апр 27, 2009 17:46:47

Сообщение Бубальгум »

Требуется помощь в написание алгоритам-программу для микроконтроллера PIC16F84.
Вот схемка: http://s59.radikal.ru/i166/0905/be/0518249d1148.jpg
её логику нужно сделать в виде программы.
Смысл работы в том, что приходящие 6-ти разрядное слово, проверяется путем сложений в лог. элементах. На выходе схемы появляется сигнал 1 - нет ошибок, а 0 соотв. сигнал ошибки. Тоесть схема выдает сигнал ошибки на все варианты 6ти разрядного слова в котором больше 1 еденицы и на 000000.
Безошибочные варианты слова:
000001
000010
000100
001000
010000
100000
Схема эл. принципиальная с пиком уже: http://s52.radikal.ru/i137/0905/80/6889d11375e8.jpg
Хочу выслушать ваши предложения. Как лучше реализовать алгоритм. Спасибо.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

Бубальгум писал(а): Как лучше реализовать алгоритм. Спасибо.
Вы реализуйте как угодно - чтоб работало. А потом уже "ЛУЧШЕ" ...
Контактная информация:
Реклама
Родился
Аватара пользователя
Сообщения: 3
Зарегистрирован: Пн апр 27, 2009 17:46:47

Сообщение Бубальгум »

((x-1) and x=0) and (x<>0)
Вот алготоритм. По нему нужно написать программу в Mplab.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

алгоритм прост как 2х2
последовательно проверяете каждый бит на состояние:
если = 1 прибавляем к счетчику 1
если = 0 пропускаем
после проверки всех битов проверка
если счетчик = 1 нет ошибки
если счетчик не равен 1 ошибка, вот и все
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Аватара пользователя
Сообщения: 3
Зарегистрирован: Пн апр 27, 2009 17:46:47

Сообщение Бубальгум »

Нужно оформить это в виде программы.

Правильно ли?

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

  movf            PORTB,W
                andlw           B'00111111'
                movwf           Temp1
                bcf             STATUS,C
L1
                rrf             Temp1,F
                movf            STATUS,W
                andlw           B'00000101' ; mask for C & Z
                btfsc            STATUS,Z
                goto             L1
                movwf           Temp2
                rrf             Temp2,F
                rrf             Temp2,F
                andwf           Temp2,W
                andlw           B'00000001'
                movwf           PORTA
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Бубальгум писал(а):((x-1) and x=0) and (x<>0)
Вот алготоритм. По нему нужно написать программу в Mplab.
Вот оно в чем дело , не можешь прочесь элементарную запись.
Интересно и кто же из тебя получится, очередной врач-убийца
или конструктор саморазрушающихся самолетов?
Все тебе уже было дано :
http://www.microchip.su/showthread.php?t=5886

Алгоритм прост как 3 копейки и нефиг его перевирать:

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

int X является степенью двойки
тогда и только тогда, когда
(X & (X - 1)) == 0 
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

правильно или нет, не знаю к сожалению (а может и к счастью), программирую для АВР а не для ПИК.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»