Свежие обсуждения
Микроконтроллеры

Подскажите пожалуйста по PIC16F84A

1 3

Подскажите пожалуйста по PIC16F84A. Изучая код на ассемблере, который посылает сигналы драйверу светодиодов(это тот же сдвиговый регистр), который в свою очередь выводит цифры на табло. Я обнаружил следующие строки:

SEG_7 andlw 0x0F
addwf PCL,f
retlw b'01111110'
retlw b'00000110'
retlw b'11011010'
retlw b'11001110'
retlw b'10100110'
retlw b'11101100'
retlw b'11111100'
retlw b'01000110'
retlw b'11111110'
retlw b'11101110'
retlw b'10000000'
retlw b'01000000'
retlw b'00100000'
retlw b'00010000'
retlw b'00001000'
retlw b'00000100'
end

Подскажите что они делают? Ведь на сколько мне известно retlw это выход из подпрограммы с записью в регистр W какого-то значения.. Но почему здесь все это вподрят???

 

у? давно не программировал контроллеры... но помойму в зависимости от значения f + значение PCL перескочин на нужную строку. и вернет нужное значение. это называется прием "таблицы"

SEG_7 andlw 0x0F
addwf PCL,f
retlw b'01111110' ; чем больше регистр W тем дальше перескочит
retlw b'00000110'
retlw b'11011010'
retlw b'11001110'
retlw b'10100110'
retlw b'11101100'
retlw b'11111100'
retlw b'01000110'
retlw b'11111110'
retlw b'11101110'
retlw b'10000000'
retlw b'01000000'
retlw b'00100000'
retlw b'00010000'
retlw b'00001000'
retlw b'00000100'
end

ВАЖНО эта таблица с retlw должна находиться на одной странице памяти в контроллере. Иначе если ее там полностью не будет, программа будет аццки глючить. Ну или делать с расчетом на страницы памяти (я не делал так)

Уважаемые форумчане, поправьте меня если наврал

Вот, откапал у себя какой то код .... тут пример с таблицей http://paste.ubuntu.com/131238/ эта программа разделяет число 134 на 1, 3, и 4 к примеру.

 

идею понял спасибо

 

Dmitry_177: почему здесь все это вподрят??? Это просто значения таблицы, а индекс таблицы растет сверху вниз. АСМ для PIC хорошо описан в переводе документации микрочип - вы можете в симуляторах MPLAB PROTEUS посмотреть как программа использует таблицу.

 

Вечный контроллер ))) жа давно не производят а ктото его все еще использует )))

 

Куча обучающего материала на нем замешана.

 

Артём Сергеевич: давно не производят Если верить микрочипу то производят и еще как PIC16F84A стоит 3.11$. Правда почему такой дорогой непонятно.

 

Да? Одно время снимали с производства.А потому и дорогой потому что унылое старье )))

 

AlexAlcoa: Правда почему такой дорогой непонятно.
технология такая. Потом они выпустили "переработанное и исправленное" под именем PIC16F628A ($1.86 там же). Он дешевле и имеет больше возможностей. Советую
Вот смотрю. 16-битне МК тоже с такого уровня цены стартуют

По теме: внутрисхемная отладка (пусть даже виртуальная - Протеус) очень помогает в понимании работы программы

 

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