| Автор |
Съобщение |
|
E1
Ранг: Почетен член
Регистриран на: Нед Юли 22, 2007 8:57 pm Мнения: 607 Местоположение: Белград
|
 Подвижен текст
Налага ми се да направя едно светодиодно табло с текст, вървящ отдясно наляво. 8 реда и 48 колони. Но не ми е ясно как става самото движение на текста. Използвам Асемблер и процесор PIC16F877А. Как става физическата връзка между символната таблица, паметта и самото движение през регистрите... Търсих във форума, но не намерих нищо по въпроса. Не успях и в нета да намеря някой сорс код.
|
| Нед Юли 22, 2007 9:07 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Пишеш в буфер 8/47 и го извеждаш на таблото като започваш пъро от позизия 0-47, 1-47-off, 2-47-off-off, 3-47-off-off-off ..... n-47-nxOff-0. Тоест въртиш началната позиция от която започваш да извеждаш. С Off съм ознчил изгасена колона.
"Асемблер и процесор PIC16F877А" определено ще пишеш дълго и мъчително 
|
| Нед Юли 22, 2007 9:25 pm |
|
 |
|
E1
Ранг: Почетен член
Регистриран на: Нед Юли 22, 2007 8:57 pm Мнения: 607 Местоположение: Белград
|
Ако разбирам правилно, буферите са колоните, нали така? За мъките си го знам... Като не научих "С"...
|
| Нед Юли 22, 2007 9:32 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Да двуразмерен масив 8/48 ти представлява дисплеиния буфер. Самата индикация е удобно да я направиш в прекъсване на таимера а в цикъла на програмата да пишеш каквото трябва в буфера
|
| Нед Юли 22, 2007 9:48 pm |
|
 |
|
E1
Ранг: Почетен член
Регистриран на: Нед Юли 22, 2007 8:57 pm Мнения: 607 Местоположение: Белград
|
Някой би ли могъл да даде поне част от подобен сорс за Асемблер? Тук прехвърлянето на символите изглежда доста изморително писане... 
|
| Нед Юли 22, 2007 10:16 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Нали знаеш.
Хората са казали "На ахмак глава краката теглят".
Като те мързи да учиш C ще пишеш до посиняване на пръстите 
|
| Нед Юли 22, 2007 10:26 pm |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
Никола, стига бе!  Някога имаше тема "С какво да започнем" или нещо такова. И ти беше съгласен, че трябва да се започне с асемблер. Остави човека да си пише, както си знае! 
|
| Нед Юли 22, 2007 11:46 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Нали се сещаш че такава задача на асемблер се прави с писане до посиняване на пръстите  Разбира се образно казано но си е доста зор.
Едно е да започнеш а друго е да пишеш нещо по сложно на асеблер 
|
| Нед Юли 22, 2007 11:51 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
ами едва ли асемблера е виновен, явно просто задачката е тежка за питащия.
по въпроса - движението става като при визуализацията към адреса на колоната прибавяш офсет, който се увеличава с времето. ако това не ти е достатъчно, избери друго поприще.
|
| Пон Юли 23, 2007 8:17 am |
|
 |
|
MegatroniC
Ранг: Минаващ
Регистриран на: Сря Яну 04, 2006 6:23 pm Мнения: 43 Местоположение: Earth
|
|
| Пон Юли 23, 2007 9:22 am |
|
 |
|
mndsl
Ранг: Новодошъл
Регистриран на: Вто Май 23, 2006 4:56 pm Мнения: 113 Местоположение: Варна
|
С PIC16F877А много мъки ще береш, търси някой процесор с повече FLASH и RAM и работещ на по-високи честоти. Правил съм такова табло 7х128, но ползвах PIC18F458, на 40 MHz, програмата е на С, щото има едни огромни масиви, дето посмъртно не можеш ги управлява на асемблер. Така че ако си решил да правиш табло, почвай да учиш С 
|
| Пон Юли 23, 2007 9:39 am |
|
 |
|
GDTRON
Ранг: Минаващ
Регистриран на: Чет Мар 01, 2007 7:33 pm Мнения: 35
|
Това не го разбрах, така не става ли движение от горе на долу? Като гледам последователно светваш по редове а не по колони защото колоните са 48. Или аз нещо греша??
|
| Пон Юли 23, 2007 12:29 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
8/48 е буфера. Грешката е моя. В следващия ми пост съм го писал вярно ама ...
Последователноста е за динамичнато управление на диодите. В main се сменя само офсета.
|
| Пон Юли 23, 2007 1:08 pm |
|
 |
|
Yanek
Ранг: Новодошъл
Регистриран на: Пет Юни 29, 2007 10:59 pm Мнения: 113
|
Според мен няма, чак толкова да се изгърбиш, както те плашат колегите.  Има решения, които не изискват чак толкова RAM, макар и малко по-бавни, но определено под ръба на възможностите на този PIC. Зависи обаче от схемното решение. Зависи също колко колони на символ ще бъдат и дали всички символи ще са с еднакъв брой колони, ще се променя ли шрифта и разни други подробности. Може да се направи с указатели и броячи, като за всеки символ предварително се прави таблица с N на брой колони, като 1 колона представлява един байт. Има само един буфер за нулево терминирания стринг, който ще се изписва. 1 указател за първият символ който ще се изписва на матрицата и един брояч на колоните в този символ. Допълнително един указател за текущо изписвания символ и един брояч за текущо изписваната колона от символа. Трети брояч за общия брой изписани колони. От тук нататък се сещаш. Като дойде време да се премести с една колона инкрементираш началния брояч в символа, ако е минал броя на колоните в този символ, се инкрементира указателя за символи, а брояча се нулира (или става 1) от там нататък изписваш 48 колони, като следиш общия брояч на колони, втория указател за текущо изписвания символ с втория брояч. Когато стигнеш края на стринга се прехвърляш отново на първия символ и т.н. Един от проблемите е да напишеш колкото са символите толкова и функции които да ти връщат за този символ байта за текущата колона. Друг проблем е да определиш коя е функцията за указания от втория указател символ, но и това не е страшно, защото можеш да си напишеш макрос, който да променя програмния брояч според указания символ, където да се намира съответната функция. Мисля, че не е толкова страшна задача. Тук ти дадох само един примерен алгоритъм с повече упореба на флаш и по-малко RAM.
|
| Пон Юли 23, 2007 3:28 pm |
|
 |
|
E1
Ранг: Почетен член
Регистриран на: Нед Юли 22, 2007 8:57 pm Мнения: 607 Местоположение: Белград
|
Предвиждам малки и големи букви с размери 4х7 точки. Осми ред долу е за направа на малките букви. Само латински букви са.
|
| Пон Юли 23, 2007 9:52 pm |
|
|