Страница 2 из 2 ПерваяПервая 12
Показано с 16 по 23 из 23
  1. #16
    High Power
    Регистрация
    30.04.2002
    Адрес
    Липецк, Россия
    Возраст
    55
    Сообщений
    935
    Записей в дневнике
    16
    Поблагодарили
    64
    Поблагодарил
    4
    Я хоть и не считаю себя крутым "спецом-программистом" , но посоветовать кое чего могу, однако несколько непонятно... Какой пример Вам нужен ? У меня пример из даташита используется уже пару лет... Если он у вас не работает , то надо пытаться локализировать глюк ...
    Сделайте вывод на ЖКИ не по кнопке, а по запуску PIC. И посмотрите , что получится...
    Я Вам привел реальный пример реальной программы от RW4LED --- Вы ее посмотрели? Там есть и вывод на ЖКИ и она нормально компилируется.
    Делайте какие-нибудь эксперименты и задавайте вопросы , описывая их ... А иначе сдвинуться с мертвой точки сложно...

    Удачи!
    RU3GA

  2. #17
    Standart Power Аватар для RW1ZK
    Регистрация
    11.07.2003
    Адрес
    г.Заозерск Мурманская обл.
    Возраст
    59
    Сообщений
    215
    Поблагодарили
    3
    Поблагодарил
    0
    Переписал программу, убрал опрос кнопки. Но всё-равно выводится двойка во всех десяти разрядах. Мне надо выводить число в нужном мне разряде. Что не правильно? Спасибо!
    Вложения Вложения
    • Тип файла: zip driver.zip (10.5 Кб, Просмотров: 97)

  3. #18
    High Power
    Регистрация
    30.04.2002
    Адрес
    Липецк, Россия
    Возраст
    55
    Сообщений
    935
    Записей в дневнике
    16
    Поблагодарили
    64
    Поблагодарил
    4
    Во-о-о-о.... Вот теперь вижу , что все работает без глюков
    Все нормально!
    Вместо "goto wyw" поставьте NOP --- и будет одна "двойка" в первом разряде.
    Вы выводите "2" ровно десять раз --- вот она и заполняет экран. Почему именно десять раз? Так у Вас команда "btfss FSR,4" этим занимается Ваша ошибка в том , что Вы применили FSR, но его фактически не используете .
    По всей видимости, Вы немного не разобрались в программе из даташита и применении FSR.
    Попробую изложить простыми словами вобщем алгоритм вывода (по программе из даташита):
    1. "Обзываем" первый регистр "экранной памяти" --- 0х26 как screen.
    Это значит , что начиная с регистра 0х26 у нас будут лежать цифры , которые нам надо вывести. Поскольку цифр на индикаторе 10 , то у нас будут заняты 10 регистров 0х26 -- 0х2F . Сами цифры мы пока туда не положили --- мы только определили место , где они будут лежать.
    2. Заполним эти регистры цифрами , что б было что выводить.
    Т.е. занесите в эти регистры нужные Вам данные --- в даташите этого нет , там подразумевается , что эти данные уже там лежат.
    3. Заносим в FSR значение screen.
    4. Далее работаем с регистром INDF.
    Почему с ним? Ведь мы его даже не объявляли?
    А его и не надо объявлять --- он служебный и обращаясь к нему мы фактически обращаемся к тому регистру, адрес которого записан в FSR , а в FSR --- у нас сейчас что записано? --- 0х26 (см. пункт 3) Значит мы, обращаясь к INDF, работаем с регистром по адресу 0х26 , а там у нас что записано? --- первая цифра для вывода на экран (если Вы конечно выполнили пункт 2 )
    5. Обработав регистр INDF (т.е. послав биты на индикатор), делаем инкремент FSR и переходим опять в начало цикла вывода. Теперь в FSR у нас записано 0х27 и поэтому , обращаясь к INDF , мы работаем с регистром по адресу 0х27, а там у нас записана вторая цифра для вывода на экран --- вобщем зацикливаем программу. Однако не просто зацикливаем, а проверяем --- все ли 10 цифр мы вывели на экран --- если все десять , то надо останавливаться --- вот поэтому мы в конце цикла вывода проверяем 4 бит FSR. Дело в том что в числе 0х30 ( это следующее число за 2F , а в 2F у нас хранится последняя --- 10-тая--- цифра для вывода ) появляется "1" в четвертом бите --- т.е если появилась "1" в четвертом бите FSR, то значит мы вывели все 10 цифр на экран и пора останавливаться Таким образом, начало "экранной памяти" 0х26 --- выбрано не случайно (ведь можно было выбрать 0х25 , или 0х10 --- как Вы выбрали для своей переменой ind ) , а именно для удобства проверки конца выполнения вывода на экран...
    Уф... Устал по клавишам бить
    Вот в свете вышеизложенного взгляните на свою программу --- у Вас FSR используется только как счетчик количества знаков для вывода , при чем значение этого счетчка -- 10 (Вы сначала "забили" в него значение 0х26 , а потом , делая с каждым циклом инкремент, проверяете , не появился ли 4 бит в FSR --- как только он появился --- подпрограмма вывода на ЖКИ у Вас заканчивается) . Вот у Вас и выводится ровно 10 двоек

    P.S. Если все равно непонятно --- пишите --- будем разбираться ...
    Я в свое время так намыкался по форумам , где "профи" тебе "влёт" указывают на ошибку и еще так поливают грязью по ходу дела , что исчезает само желание программировать А уж ham-ы между собой всегда легко пообщаются на любые темы --- и без всяких "напрягов"!

    Удачи!
    RU3GA

  4. #19
    Standart Power Аватар для RW1ZK
    Регистрация
    11.07.2003
    Адрес
    г.Заозерск Мурманская обл.
    Возраст
    59
    Сообщений
    215
    Поблагодарили
    3
    Поблагодарил
    0
    Спасибо за подсказку. Убрал команду btfss FSR,4. Переписал прогу. Всё равно выводится двойка несколько раз. Не во временных парамерах-ли вся проблема?

  5. #20
    Standart Power Аватар для RW1ZK
    Регистрация
    11.07.2003
    Адрес
    г.Заозерск Мурманская обл.
    Возраст
    59
    Сообщений
    215
    Поблагодарили
    3
    Поблагодарил
    0
    Поторопился и не присоединил файл программы...
    Вложения Вложения
    • Тип файла: zip driver.zip (10.3 Кб, Просмотров: 108)

  6. #21
    High Power
    Регистрация
    30.04.2002
    Адрес
    Липецк, Россия
    Возраст
    55
    Сообщений
    935
    Записей в дневнике
    16
    Поблагодарили
    64
    Поблагодарил
    4
    Я не пойму --- почему Вы не хотите использовать подпрограмму из даташита индикатора?
    У Вас на индикаторе --- 10 цифр! Вот и выводить надо все десять --- иначе последствия будут не предсказуемы --- как у Вас.
    Хотите двойку в первом разряде ? Ну так и выведите сначала 9 штук "0000" , а потом "двойку" --- вот тогда будет все "честно"... И все заработает ....

  7. #22
    Standart Power Аватар для RW1ZK
    Регистрация
    11.07.2003
    Адрес
    г.Заозерск Мурманская обл.
    Возраст
    59
    Сообщений
    215
    Поблагодарили
    3
    Поблагодарил
    0
    Я не совсем понял, как забить 10 значений для вывода... По адресу 0x26 заносим скажем 0, по адресу 0x27 - 0, по адресу 0x28 - 0 и т.д. Потом вывод. Правильно или нет? Но ведь незначащие нули необходимо погасить. Зачем их выводить? Тяжело общаться в форуме. Вопросов масса... В даташите по умолчанию используется частота кварца 5 мгц, у меня 4 мгц. Может в этом всё дело?

  8. #23
    High Power
    Регистрация
    30.04.2002
    Адрес
    Липецк, Россия
    Возраст
    55
    Сообщений
    935
    Записей в дневнике
    16
    Поблагодарили
    64
    Поблагодарил
    4
    Первоначальное сообщение от RW1ZK
    Я не совсем понял, как забить 10 значений для вывода... По адресу 0x26 заносим скажем 0, по адресу 0x27 - 0, по адресу 0x28 - 0 и т.д. Потом вывод. Правильно или нет? Но ведь незначащие нули необходимо погасить. Зачем их выводить? Тяжело общаться в форуме. Вопросов масса... В даташите по умолчанию используется частота кварца 5 мгц, у меня 4 мгц. Может в этом всё дело?
    Нужно внимательней читать даташит
    При "0000" --- выводится как раз ПУСТОЙ знак на индикаторе. Ноль выводится при коде "1010"
    А в остальном все верно как Вы описали --- заносим в ячейки 0х26 - 02F --- десять нужных значений. И цикл вывода на индикатор состоит из вывода ВСЕХ десяти значений --- вот тогда все будет корректно.
    Тактовая частота в данном случае значения не имеет.
    Заставьте работать сначала код из даташита, а уж потом его модернизируйте так как Вам нравится --- я обычно так поступаю Я честно говоря не понимаю в чем проблема. Вроде работу кода из даташита я объяснил, вопросов с Вашей стороны вроде не было --- скопируйте его мышкой к себе. Перед вызовом подпрограммы "fresh_screen" занесите 10 значений в нужные ячейки --- и у Вас сходу все заработает А уж потом меняйте то , что Вам надо и следите за тем , сохраняется ли работоспособность ...

    Если тяжело в форуме --- "стучитесь" в аську : 333-903-770
    Я постоянно доступен в будни днем ( на работе), часто вечером (из дома), часто в выходные (из дома). Правда я с понедельника в отпуске --- так что буду только из дома ( с 18.00 в будни и в любое время в выходные)...

Похожие темы

  1. Цифровая шкала: частотомер с ЖК индикатором WM-1611-62B
    от US6ICL в разделе Цифровые трансиверы
    Ответов: 2
    Последнее сообщение: 11.02.2013, 17:27
  2. Ищу драйвер монитора
    от RV3DHW в разделе Программное обеспечение
    Ответов: 3
    Последнее сообщение: 29.12.2005, 06:45
  3. Драйвер верхнего ключа
    от вфт_лщ в разделе Радиолюбительские технологии
    Ответов: 5
    Последнее сообщение: 18.08.2004, 09:25
  4. Драйвер к принт серверу D-Link DP-101/E
    от Alex.A в разделе Компьютеры и сети
    Ответов: 1
    Последнее сообщение: 05.09.2002, 13:27
  5. ЛЮЮЮДИ!!!!!!! Помогите найти драйвер для...
    от в разделе Компьютеры и сети
    Ответов: 3
    Последнее сообщение: 11.08.2001, 19:02

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Похоже, что вы используете блокировщик рекламы :(
Форум QRZ.RU существует только за счет рекламы, поэтому мы были бы Вам благодарны если Вы внесете сайт в список исключений!
как отключить
×
Рейтинг@Mail.ru
eXTReMe Tracker


Похоже, что вы используете блокировщик рекламы :(
Форум QRZ.RU существует только за счет рекламы, поэтому мы были бы Вам благодарны если Вы внесете сайт в список исключений!
как отключить
×