| Автор |
Съобщение |
|
me40
Ранг: Новодошъл
Регистриран на: Пет Авг 25, 2006 11:31 pm Мнения: 168 Местоположение: Русе
|
 Проблем с изписване "двоичен в двоично-десетичен код&qu
Приложил съм asm кода на програмата, с който немога да се справя.
Използвам готов макрос за превръщане от двоичен в двоично-десетичен код и съответно изписването му в/у LCD. Получава се често срещаното явление :"На симулация с MPLAB работи, но в действителност...НЕ"
Като пример зареждам за изписване числото "C9" или 201.
Ето и проблема:
Ако забраня изписването на стотиците (вслучая числото 2) с ";" пред командите, десетиците и единиците се изписват. Ако "забраня" десетиците и единиците, стотиците се изписват.
Но да се изпише цялото число - неможе ! Пробвах с различни числа - макроса работи, но незнам защо с цялото число нестава. Ако може и PREDATORa да си каже тежката дума, ще съм много благодарен 
|
| Вто Сеп 05, 2006 2:56 am |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Абе голяма е боза тоя код, незнам откъде ги сваляш тези главоблъсканици, обаче трябва да ти кажа, че обръщането в десетичен код е далеч по-просто от написаното. Първо, в кода няма нужда от три таблици с числа (и защо са три след като може само с една?!?!)...просто добавяш 0x30 към съответната цифра и получаваш ASCII кода на цифрата (цифрата 0 в ASCII е 0x30, 1 е 0x31 и пр..), остава ти само простата задачка да разбереш колко пъти по 100 има в числото (като разделиш на 100), колко пъти има 10 в остатъка от деленето със 100...и накрая просто изписваш остатъка като прибавиш към него 0x30... Напиши си кода сам иначе въпросите ти ще стават все повече
|
| Вто Сеп 05, 2006 4:27 am |
|
 |
|
me40
Ранг: Новодошъл
Регистриран на: Пет Авг 25, 2006 11:31 pm Мнения: 168 Местоположение: Русе
|
Да бе ! Чак сега стоплих за идеята. Sorry !
 . То ама наистина е мн. просто !
|
| Вто Сеп 05, 2006 8:30 am |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
предаторе, обръщането в десетичен код му е най-простотото възможно, макар че е написано за фиксиран брой цифри. първо вади по 100 и инкрементира цифрата за стотиците, после вади по десет и инкрементира десетиците, и квото остане е за единиците. тук нещо ме учудва обаче. човека твърди че макроса работи, а аз се учудвам от това. 100тиците и десетиците се вадят до получаване на отрицателен резултат, което ще рече че за следващия етап числото което остава в DIG_1не е правилно. например ако подадем 001 - вадим 100, получаваме 9Д (157) и минаваме на десетиците, без числото да е коригирано.
|
| Вто Сеп 05, 2006 8:45 am |
|
 |
|
me40
Ранг: Новодошъл
Регистриран на: Пет Авг 25, 2006 11:31 pm Мнения: 168 Местоположение: Русе
|
Пълна безмислица е да се използват 3 таблици както казва PREDATORa.
На симулация в MPLAB работи, но в действителност както описах при извеждане в/у lcd на трите символа работата се оплесква въпреки допълнително позициониране на курсора преди всяко извеждане !
Това немога да си го обясня и точно затова повдигнах темата !!!
Заедно и поотделно х1 и х10 - няма проблеми в/у LCD
х100 - се извеждат , но само самостоятелно .
|
| Вто Сеп 05, 2006 10:41 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Добре де, за да си сигурен къде точно ти е проблемът, защо не си запишеш трите знака от числото в паметта и да видиш какво е сметнал? Толкова трудно ли е да се направят няколко междинни проверки какви ги е на*рал софтът?
|
| Вто Сеп 05, 2006 10:59 am |
|
 |
|
me40
Ранг: Новодошъл
Регистриран на: Пет Авг 25, 2006 11:31 pm Мнения: 168 Местоположение: Русе
|
Ами тък като съм нов в тази област (2-3 седмичен), ще трябва да прочета довечера, къде точно се прави записа (кои адреси в EPROMA)а и ще пробвам, но според мен софта смята правилно щом при самостоятелно извеждане на числата няма проблеми. Пробвах снощи с активиране на TMR1 като брояч и цъкайки на входа се натрупва и извежда в/у LCD, но не и цялото число. Или само х1 и х10 или х100 !
|
| Вто Сеп 05, 2006 11:12 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Какъв EEPROM бе, младежо? Запиши ги някъде в RAM-a!
|
| Вто Сеп 05, 2006 11:27 am |
|
 |
|
me40
Ранг: Новодошъл
Регистриран на: Пет Авг 25, 2006 11:31 pm Мнения: 168 Местоположение: Русе
|
В рама нали ги виждам при симулация с MPLAB или нещо нестоплих !?!?!
|
| Вто Сеп 05, 2006 11:53 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Заеби симулаторите. Често лъжат. Пробвай дебъгер - ICD2 за PIC, или нещо от този род, не знам какъв ти е процесорът. Дебъг със симулатор е като секс със силиконова вагина. Направи го със жена!
|
| Вто Сеп 05, 2006 1:16 pm |
|
 |
|
me40
Ранг: Новодошъл
Регистриран на: Пет Авг 25, 2006 11:31 pm Мнения: 168 Местоположение: Русе
|
Егати убедих се, че е така. Е немогат ли да ги направят да нелъжат......!?!?!. Явно не...поне засега.
btw След като съкратих ненужните 2-таблици и премахнах допълнителното позициониране на курсора, работата изпече..... !
п.с. КАК МЕ Е ЛЪГАЛ СИМУЛАТОРА. Вече имам 1 на ум!!!!
|
| Вто Сеп 05, 2006 9:35 pm |
|
|