| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Как би изглеждал този С код на асемблер за PIC16 примерно http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=1036 |
Страница 1 от 1 |
| Автор: | jony++ [ Вто Сеп 20, 2005 11:39 am ] |
| Заглавие: | Как би изглеждал този С код на асемблер за PIC16 примерно |
Как биха изглеждал този С код на асемблер за PIC16 примерно int T = 23; int temp1, temp2; temp1 = T%10; temp2 = T/10; Сигурно ще е нещо просто, но ....... май математика ми куца Благодаря ви. |
|
| Автор: | Gogo [ Вто Сеп 20, 2005 2:34 pm ] |
| Заглавие: | |
Намираш си процедурата на асм: "Divide 16 bit int by 8 bit int to 8 bit int and remainder" и виждаш как изглежда temp2 ти е резултата, а temp1 остатъка. |
|
| Автор: | jony++ [ Вто Сеп 20, 2005 4:46 pm ] |
| Заглавие: | |
Май е по-добре да кажа за какво ми е това деление защото може да се окаже че имало и по-лесен начин..... Ами работата е там че искам да извеждам двуцифрени числа на динамичен 2 разряден 7 сегмендет LED и чрез това деление исках да разделя десеттиците от единиците. |
|
| Автор: | arcopal [ Вто Сеп 20, 2005 10:11 pm ] | ||||||||||||||||||
| Заглавие: | |||||||||||||||||||
методи - БОЛ! Но всичко по реда си! 1.не знам какъв формат данни ти трябва за ЛСД-то ама най-лесно според мен е да си зеделиш 200 байта (2 байта за число в интервала 0-99) и да си направиш едно масивче директно с исходните стойности... тъпо, обемно, но бързо! макар че за обема може да се поспори - не знам колко място заемат инструкциите реализиращи двете деления... но пък простотата на този метод е неоспорима - свежда се до едно четене от масив! 2.ако все пак си останеш на деленетото... ВНИМАНИЕ - едното деление може да го замениш със ВАДЕНЕ!!!
3. самото делене можеш да направиш като си напишеш класическата функция за бързо делене:
4.става и като работиш с BCD-числа! разликата от "стандартните" двоично-дестични е, че след всяко "двоично" събиране/вадене "подравняваш" - тоест добавяш 0x6/0x60 на тетрадата в коята има пренос(проверяваш битове C, DC). когато ти потрябват отделните цифри - "распакетираш"(тоест вземаш поотделно всяка от тях като маскираш другата с AND 0) тетрадите по една в байт и си готов! 5.ЦЕНЕН ПИК-СЪВЕТ: погледни в сайта на Мicrochip, там има примери за разни алгоритми преобразования, деления(и за какло ли не) и описания/доунлоад на всевъзможни библиотеки![/code] |
|||||||||||||||||||
| Автор: | jony++ [ Чет Сеп 22, 2005 11:01 am ] | |||||||||
| Заглавие: | ||||||||||
Благодаря за прделожените варианти, но този код с деленено нещо неработи...
|
||||||||||
| Автор: | ¶ [ Чет Сеп 22, 2005 11:51 am ] |
| Заглавие: | Re: Как би изглеждал този С код на асемблер за PIC16 примерн |
... |
|
| Автор: | jony++ [ Чет Сеп 22, 2005 1:38 pm ] | |||||||||
| Заглавие: | Re: Как би изглеждал този С код на асемблер за PIC16 примерн | |||||||||
pirev, не ми се карай |
||||||||||
| Автор: | arcopal [ Съб Сеп 24, 2005 4:38 pm ] |
| Заглавие: | |
ПЪРВО СЕ ИЗВИНЯВАМ за тотално грешния и дори безмислен алгоритъм за "делене" който съм написал... ама така става когато човек бърза - да ми е за урок да знам да не се излагам! Значи за умножение и деление има два подхода: 1.последователно събиране/вадене към/от делимото на делителя и при всеки цикъл инкрементираш с единица променливата-резултат 2.същото като по-горе, но когато делимото е четно го умножаваш/делиш на две, като съответно променливата-резултат също се удвоява! тука има един момент ако почнеш да умножаваш от самото начало резултата и си го занулил предварително няма да поставам повече алгоритми за да не напиша пак някоя глупост, само ще дам ей този готин линк: http://www.convict.lu/Jeunes/Math/Fast_operations2.htm темата наистина е за академията |
|
| Автор: | jony++ [ Нед Сеп 25, 2005 1:02 am ] |
| Заглавие: | |
Благодаря много. Извинявам се че съм сложил темата тук, тя наистина е за академията. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|