Помогите сочленить 16f84 и TIC8184
|
|
QWERTY |
Дата: Вт, 15.09.2009, 20:24 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
73
Замечания:
±
На сайте с 11.05.2008
Статус:
Offline
|
Неправильно отображаются символы на LCD, не могу понять, где засада, вот фрагмент: A var word Dataout var portb.0 CLK var portb.1 load var portb.2 main: A = %111111100 shiftout Dataout, CLK, 0, [A\9] pulsout load,1 pause 200 goto main end Файлик с описанием индикатора прикрепляю. Поможете разобраться? Добавлено (15.09.2009, 20.24.50) --------------------------------------------- Я пробовал менять режим для shiftout c 0 на 1, менял порядок битов. Результат - 0.
Сообщение отредактировал
QWERTY - Вт, 15.09.2009, 21:00
|
|
|
|
demanik |
Дата: Вт, 15.09.2009, 23:52 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
попробуйте: shiftout Dataout, CLK, 1, [A\9] судя по вашему рисунку должно быть p.s. выложите полную документацию
Попробуй всё и вся... может быть пол...
Сообщение отредактировал
demanik - Ср, 16.09.2009, 00:05
|
|
|
|
QWERTY |
Дата: Ср, 16.09.2009, 15:35 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
73
Замечания:
±
На сайте с 11.05.2008
Статус:
Offline
|
Я пробовал менять на 1 и 0, разницы нет. причем если во так: Code define OSC 4 include "modedefs.bas" A var word trisa = %00000000 Dataout var portb.0 CLK var portb.1 load var portb.2
main: a=%000001100 shiftout Dataout,CLK,0,[A\9] pulsout load,1 pause 500 '1 a=%111011000 shiftout Dataout,CLK,0,[A\9] pulsout load,1 pause 500 '2 a=%101011100 shiftout Dataout,CLK,0,[A\9] pulsout load,1 pause 500 '3 a=%001101100 shiftout Dataout,CLK,0,[A\9] pulsout load,1 pause 500 '4 a=%101110100 shiftout Dataout,CLK,0,[A\9] pulsout load,1 pause 500 '5 a=%111110100 shiftout Dataout,CLK,0,[A\9] pulsout load,1 pause 500 '6 a=%000011100 shiftout Dataout,CLK,0,[A\9] pulsout load,1 pause 500 '7 a=%111111100 shiftout Dataout,CLK,0,[A\9] pulsout load,1 pause 500 '8 a=%101111100 shiftout Dataout,CLK,0,[A\9] pulsout load,1 pause 500 '9 a=%110111100 shiftout Dataout,CLK,0,[A\9] pulsout load,1 pause 500 '0 a=%000000000 shiftout Dataout,CLK,0,[A\9] pulsout load,1 pause 500 'пробел pulsout portb.7,1000 goto main end то цифры выводятся нормально, но код получается очень объёмным. А если вот так: Code include "modedefs.bas" define OSC 4 A var word trisa = %00000000 Dataout var portb.0 CLK var portb.1 load var portb.2 x var byte
main: for x=1 to 8 goto convert shiftout Dataout,CLK,0,[A\9] next pulsout load,1 pause 500 goto main end convert: lookup x, [%000001100, %111011000, %101011100, %001101100, %101110100, %111110100, %000011100, %111111100, %101111100, %110111100, %000000000], A то получается полный бред. Тоесть не выводится только один сегмент D, зато выводятся стрелочки и точки. Прикладываю пдф :)) Это вся документация, имеющаяся у меня...
Сообщение отредактировал
QWERTY - Ср, 16.09.2009, 15:37
|
|
|
|
demanik |
Дата: Ср, 16.09.2009, 17:35 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Quote (QWERTY) то получается полный бред Второй пример более правильный "pulsout load,1" вы передаете в конце всего пакета, попробуйте ещще тут поменять режим передачи на 1. И еще может у вас на рисунке неправильно указано соответствие сегментов битам. Советую сделать так: передавать у все разряды одинаковую информацию по очереди включая только один бит ( например: 000000001 потом 000000010 и так далее) и отметить какие сегменты зажигаются. У вас получится таблица соответствия сегмента биту.
Попробуй всё и вся... может быть пол...
|
|
|
|
QWERTY |
Дата: Ср, 16.09.2009, 20:28 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
73
Замечания:
±
На сайте с 11.05.2008
Статус:
Offline
|
А это мысль про сегменты..... Добавлено (16.09.2009, 20.28.23) --------------------------------------------- Уважаемый demanik! А не поможете с параллельной проблемой? Вопрос в том, как в pbprpo извлечь разряд из числа для перекодировки в 7 сегментов? Например: 1234567890 в десятичном формате, мне для отображения на 7-сигментном индикаторе нужно перекодировать каждый разряд. Как это сделать в pbpro? Собираю счетчик
|
|
|
|
slavauk |
Дата: Ср, 16.09.2009, 20:50 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
64
Замечания:
±
На сайте с 14.03.2009
Статус:
Offline
|
Quote (QWERTY) А если вот так: Quote (QWERTY) то получается полный бред. Может вместо goto convert поставить gosud convert а в конце процедуры convert: не забыть return
|
|
|
|
QWERTY |
Дата: Ср, 16.09.2009, 21:39 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
73
Замечания:
±
На сайте с 11.05.2008
Статус:
Offline
|
Попробовал для начала сменить режим с 0 на 1, как советовал demanik. Приходится переписывать двоичный вид числа, а в остальном без изменений. Заменил goto на gosub, осталось все как есть.
|
|
|
|
QWERTY |
Дата: Ср, 16.09.2009, 21:45 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
73
Замечания:
±
На сайте с 11.05.2008
Статус:
Offline
|
А вот результат с первым вариантом, который очень много весит.
|
|
|
|
slavauk |
Дата: Ср, 16.09.2009, 22:00 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
64
Замечания:
±
На сайте с 14.03.2009
Статус:
Offline
|
попробуйте next поставить после pause 500
|
|
|
|
QWERTY |
Дата: Ср, 16.09.2009, 22:52 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
73
Замечания:
±
На сайте с 11.05.2008
Статус:
Offline
|
Quote (slavauk) попробуйте next поставить после pause 500 Цифры стали двигаться влево по кругу и еще пришлось заменить for x= 1 to 8 на for x= 0 to 7, иначе цифры выводились начиная с 2
Сообщение отредактировал
QWERTY - Ср, 16.09.2009, 23:03
|
|
|
|
QWERTY |
Дата: Ср, 16.09.2009, 23:02 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
73
Замечания:
±
На сайте с 11.05.2008
Статус:
Offline
|
если зажигать сегменты по очереди, устанавливая в 1 по одному биту, то табличка получается такая:
|
|
|
|
demanik |
Дата: Ср, 16.09.2009, 23:30 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Quote (QWERTY) осталось все как есть попробуйте еще увеличить длительность импульса "load"
Попробуй всё и вся... может быть пол...
|
|
|
|
QWERTY |
Дата: Ср, 16.09.2009, 23:37 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
73
Замечания:
±
На сайте с 11.05.2008
Статус:
Offline
|
10 достаточно будет? или 100 сделать7Добавлено (16.09.2009, 23.32.21) --------------------------------------------- сейчас попробую...... Добавлено (16.09.2009, 23.34.39) --------------------------------------------- нет. Все так же без сегмента D Добавлено (16.09.2009, 23.37.57) --------------------------------------------- Спать пойду, завтра додумаю. :))
|
|
|
|
slavauk |
Дата: Ср, 16.09.2009, 23:38 | Сообщение # 14 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
64
Замечания:
±
На сайте с 14.03.2009
Статус:
Offline
|
Quote (QWERTY) Цифры стали двигаться влево по кругу знакомест только 8, а пытаемся вывести 11 знаков. Поэтому и двигаются. include "modedefs.bas" define OSC 4 A var word trisa = %00000000 Dataout var portb.0 CLK var portb.1 load var portb.2 x var byte main: for x=0 to 7 gosub convert shiftout Dataout,CLK,0,[A\9] pulsout load,1 pause 500 next goto main convert: lookup x, [%000001100, %111011000, %101011100, %001101100, %101110100, %111110100, %000011100, %111111100], A return end В "длинной" проге есть - pulsout portb.7,1000 Єто для чего?
|
|
|
|
QWERTY |
Дата: Ср, 16.09.2009, 23:40 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
73
Замечания:
±
На сайте с 11.05.2008
Статус:
Offline
|
просто так, чтобы видеть что цикл вывода совершился, у меня там светодиод приклеен. :))
|
|
|
|