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

Тема в разделе "WASM.ELECTRONICS", создана пользователем Pitch, 7 май 2009.

  1. Pitch

    Pitch New Member

    Публикаций:
    0
    Регистрация:
    6 май 2009
    Сообщения:
    7
    Требуется помощь в написание алгоритам для микроконтроллера 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
    Хочу выслушать ваши предложения. Как лучше реализовать алгоритм. Спасибо.
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Вот так вот.
    Код (Text):
    1. ((x-1) and x=0) and (x<>0)
     
  3. Pitch

    Pitch New Member

    Публикаций:
    0
    Регистрация:
    6 май 2009
    Сообщения:
    7
    Программу нужно реализовать в ассемблере, mplab для пиков. Спасибо за алгоритм.
     
  4. Pitch

    Pitch New Member

    Публикаций:
    0
    Регистрация:
    6 май 2009
    Сообщения:
    7
    Код (Text):
    1. movf            PORTB,W
    2.                 andlw           B'00111111'
    3.                 movwf           Temp1
    4.                 bcf             STATUS,C
    5. L1
    6.                 rrf             Temp1,F
    7.                 movf            STATUS,W
    8.                 andlw           B'00000101' ; mask for C & Z
    9.                 GotoIf          On,STATUS,Z,L1
    10.                 movwf           Temp2
    11.                 rrf             Temp2,F
    12.                 rrf             Temp2,F
    13.                 andwf           Temp2,W
    14.                 andlw           B'00000001'
    15.                 movwf           PORTA
    Правильно ли?
     
  5. Pitch

    Pitch New Member

    Публикаций:
    0
    Регистрация:
    6 май 2009
    Сообщения:
    7
    UPD
    Код (Text):
    1. movf            PORTB,W
    2.                 andlw           B'00111111'
    3.                 movwf           Temp1
    4.                 bcf             STATUS,C
    5. L1
    6.                 rrf             Temp1,F
    7.                 movf            STATUS,W
    8.                 andlw           B'00000101' ; mask for C & Z
    9.                 btfsc            STATUS,Z
    10.                 goto             L1
    11.                 movwf           Temp2
    12.                 rrf             Temp2,F
    13.                 rrf             Temp2,F
    14.                 andwf           Temp2,W
    15.                 andlw           B'00000001'
    16.                 movwf           PORTA
     
  6. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    Если мне не изменяет память то в пике есть флаш четности "P" .Можно ведь просто проверять его состояние и проверять состояние флага нуля Z.
     
  7. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    PS:Схемка то не совсем верная. Не понятно как МК узнает что кодовая комбинация пришла. Да нет никакой защиты от наводок. В протеусе заработает но в реале врядли будет работать корректно.
     
  8. Pitch

    Pitch New Member

    Публикаций:
    0
    Регистрация:
    6 май 2009
    Сообщения:
    7
    Мне работа в теории важна, реализовывать в реале я не буду...
     
  9. Pitch

    Pitch New Member

    Публикаций:
    0
    Регистрация:
    6 май 2009
    Сообщения:
    7
    UPD да и флага P нету в пике. И что даст проверка 00000001 vs 00000111 ?
     
  10. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    Если тебе не важна практика то и теория подавна не нужна.

    То ,что в этой модели МК нет флага четности тебе не повезло. Было б намного легче.
    А так тебе нужно проверять на равенство шести твоим комбенациям.

    ЗЫ: Выучи сначала основны ассемблера.
     
  11. Pitch

    Pitch New Member

    Публикаций:
    0
    Регистрация:
    6 май 2009
    Сообщения:
    7
    Я разве сказал что практика мне не важна? Я просто говорю что реализовывать на практике не буду.