Страница 1 из 1

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

Добавлено: Чт май 07, 2009 07:59:09
Бубальгум
Требуется помощь в написание алгоритам-программу для микроконтроллера 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
Хочу выслушать ваши предложения. Как лучше реализовать алгоритм. Спасибо.

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

Добавлено: Чт май 07, 2009 08:11:01
ikarab
Бубальгум писал(а): Как лучше реализовать алгоритм. Спасибо.
Вы реализуйте как угодно - чтоб работало. А потом уже "ЛУЧШЕ" ...

Добавлено: Чт май 07, 2009 08:14:09
Бубальгум
((x-1) and x=0) and (x<>0)
Вот алготоритм. По нему нужно написать программу в Mplab.

Добавлено: Чт май 07, 2009 14:52:05
ibiza11
алгоритм прост как 2х2
последовательно проверяете каждый бит на состояние:
если = 1 прибавляем к счетчику 1
если = 0 пропускаем
после проверки всех битов проверка
если счетчик = 1 нет ошибки
если счетчик не равен 1 ошибка, вот и все

Добавлено: Чт май 07, 2009 16:27:03
Бубальгум
Нужно оформить это в виде программы.

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

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

  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

Добавлено: Чт май 07, 2009 17:13:48
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 

Добавлено: Чт май 07, 2009 23:02:35
ibiza11
правильно или нет, не знаю к сожалению (а может и к счастью), программирую для АВР а не для ПИК.