Пост N: 40
Зарегистрирован: 08.03.07
Откуда: Раша, Санкт-Петербург
Рейтинг:
0
Отправлено: 20.07.08 23:27. Заголовок: Вычитание многобайтных чисел
Есть ньюанс не оговоренный в самоучителе. При вычитании многобайтных чисел, после инверсии и суммирования производится проверка на переполнение, с целью определения знака результата. Алгоритм во всех случаях работоспособен за исключением того, когда все байты вычитаемого числа равны "00"!! Двухбайтный пример: С=А-В А=АА.АА В=00.00 Число В инвертируется и инкрементируется таким образом, что получается В(inv)="00.00". После сложения C=А+В(inv) получается C=АА.АА При этом флаг С не устанавливается в 1 и программа думает что результат отрицательный. Дальше число выворачивается наизнанку и выдается в качестве результата "55.56"
Я выкручиваюсь проверкой на нулевость перед вычитанием каждого байта вычитаемого числа. Если > 0 - вычитай, меньше - С=А и всего делов. Проще решения не нашел. А логичного вмешательств в алгоритм придумать не смог.
Хочу выяснить неужели никто не сталкивался с этой проблемой? Или я что-то делаю неправильно.
Пост N: 128
Зарегистрирован: 16.03.09
Откуда: Родина, Севастополь
Рейтинг:
0
Отправлено: 12.01.11 22:34. Заголовок: Хорошо бы создать от..
Хорошо бы создать отдельный раздел, типа "Работа над ошибками" и там их устранять. А сверху в разделе операции вычитания, сложения, деления, умножения, степени, корней и тд. уже без ошибок, что бы не повторяться. Я всё о наболевшем!
Пост N: 50
Зарегистрирован: 01.12.08
Откуда: Киргизия, Бишкек
Рейтинг:
0
Отправлено: 25.04.12 10:58. Заголовок: Подскажите как прави..
Подскажите как правильно отнимать однобайтовое число от трехбайтного. Мне нужно то некого трех байтного числа в каждом цикле отнимать число 250. может, есть готовая библиотека?
Пост N: 53
Зарегистрирован: 01.12.08
Откуда: Киргизия, Бишкек
Рейтинг:
0
Отправлено: 26.04.12 11:05. Заголовок: я сделал вот так но..
я сделал вот так но в МРLAB всеровно что то не так при вычитании со старшего байта спасибо буду думать bsf Status,C ; movlw 0xFA ; Константа для индикации 250 subwf Ind_L1,F ; btfsc Status,C ; goto pr bsf Status,C ; decf Ind_M1 ; btfss Status,C
Пост N: 227
Зарегистрирован: 10.02.11
Откуда: Россия
Рейтинг:
3
Отправлено: 28.04.12 10:48. Заголовок: Александр пишет: Al..
Александр пишет:
цитата:
Alex ну вы голова!!!
Спасибо конечно за комплимент, но голова не я, а создатели Си-компиляторов. Этот код выдран из дизасма. Переходите на ЯВУ и бросайте читать писанину КЕА, много интересного узнаете. В том числе и то, что он создаёт код, намного компактнее вашего.
Пост N: 54
Зарегистрирован: 01.12.08
Откуда: Киргизия, Бишкек
Рейтинг:
0
Отправлено: 28.04.12 14:40. Заголовок: Почему не устроил? В..
Почему не устроил? Все устроило. Только я не знаю что означает var+1, var+2 Если это название регистров общего назначения, то я подставил в свою программу, переписав их на Ind_l1, Ind_M1, Ind_H1. И получилась полная ерунда. Мне бы очень хотелось бы понять в чем дело? В регистрах у меня лежит число = 3625000 и мне надо отнимать каждый раз число 250. Сейчас у меня вот эта программа которая в прицепе уже работает. Но ваш код Алексей Конечно компактнее.
Отправлено: 28.04.12 22:16. Заголовок: Вообще то это код не..
Вообще то это код не мой :) вы правильно поняли как назначение регистров. А в симуляторе прогоняли? Вы привыкли что в самоучителе все раздевано но иногда надо и самостоятельно немного подумать. Сложение это тоже самое что и вычитание только знаки разные... -250 это тоже самое что и 6 но в дополнительном коде поэтому вместо вычитания 250 можно сделать плюс 6 и будет тоже самое :) не зря для заема флаг инверсный а для переполнения прямой и один и тот же :) я уже даже забыл что такое вычитание... Постоянно заменяю на сложение.
Отправлено: 29.04.12 00:56. Заголовок: Алексей пишет: Кстат..
Алексей пишет:
цитата:
Кстати, флаг С не надо поднимать или опускать это делается аппаратно. Все фокусы с ним это выдумки КЕА...
умножение на 4, а как же быть если идет последовательный опрос флага С, и результат каждой последующей операции зависит от предыдущей? bcf STATUS,C ; Установка в 0 бита № 0 регистра Status. r1 rlf TMR_L,F ; Циклический сдвиг влево содержимого регистра TMR_L ; с сохранением результата в нем же. btfsc STATUS,C ; Опрос состояния бита флага С. rlf TMR_H,F ; Если С=1, то циклический сдвиг влево содержимого регистра ; TMR_H c переносом в его младший разряд 1 из бита флага С ; с сохранением результата в нем же (в TMR_H). ;=============================================================================================== bcf STATUS,C ; Установка в 0 бита № 0 регистра Status. r2 rlf TMR_L,F ; Если С=0 (а также после исполнения предшествующей команды), ; то циклический сдвиг влево содержимого регистра ; TMR_L с сохранением результата в нем же. btfsc STATUS,C ; Опрос состояния бита флага С. rlf TMR_H,F ; Если С=1, то циклический сдвиг влево содержимого регистра ; TMR_H с переносом в его младший разряд 1 из бита флага С ; с сохранением результата в нем же (в TMR_H).
Отправлено: 29.04.12 01:04. Заголовок: Блин как обычно забы..
Блин как обычно забыл :( видимо в привычку входит :) а может думаю не о том, а о чпу станке, вчера запустил уже вторую ось осталось приладить ось z шпиндель и собрать все воедино... в любом случае слегка подправить и заработает... одну команду добавить, одну заменить и все заработает как надо :)
Отправлено: 29.04.12 01:09. Заголовок: Насчет сдвига в пост..
Насчет сдвига в посте 54 от Игоря я в упор не вижу сдвига, вы же приводите сдвиг! Кстати, в моем посте 163 в цитате должна быть программа Игоря а не часть сообщения от Александра. Не знаю как так получилось, мое сообщение относилось к установке флага С в первой строчке кода Игоря :) КЕА в начале самоучителя очень любил работать с ним везде где надо и не надо
Пост N: 232
Зарегистрирован: 10.02.11
Откуда: Россия
Рейтинг:
3
Отправлено: 29.04.12 13:19. Заголовок: Александр пишет: чт..
Александр пишет:
цитата:
что это вроде не совсем корректно
Согласен, иногда нужно их сбрасывать, но только когда это необходимо. Алексей, видимо, имел ввиду, что некоторые ходы КЕА являются излишней писаниной, так же как и в коде Игоря.
Для Игоря :
цитата:
movlw 0x6 addwf Ind_L1, F btfsc STATUS, C goto $+.5 decf Ind_M1, F incf Ind_M1, W btfsc STATUS, Z decf Ind_H1, F
Пост N: 55
Зарегистрирован: 01.12.08
Откуда: Киргизия, Бишкек
Рейтинг:
0
Отправлено: 29.04.12 18:02. Заголовок: Еще раз всем спасибо..
Еще раз всем спасибо , что откликнулись. Alex пишет:
цитата:
Мужики, может всё же созреем на базу арифметики?!
Это очень нужное дело, дело в том ,что в условиях дефицита времени иногда просто необходима нужная библиотека или хотя бы намек где копать. Так вот например, сегодня убил целый день пытаясь подключить энкодер к пику. Для начал взял за основу кусок программы из самоучителя Тимофея Носова но желаемого результата не получил. В интернете тоже особо нет не чего. Ну это видимо тема для другого топика. Alex пишет:
цитата:
некоторые ходы КЕА являются излишней писаниной, так же как и в коде Игоря.
Здесь я не могу с вами не согласится. Просто в процессе разработки перестраховываюсь. Спасибо вам за код, он мне очень понравился выглядит как то более по взрослому. Я, как только разберусь (если получится с энкодером) то вставлю этот код в программу и по образцу переделаю подпрограмму сложения в не же. И все-таки давайте создадим ветку с Библиотеками.
Отправлено: 30.04.12 16:54. Заголовок: как вариант, но нужн..
как вариант, но нужно определится с тем кто что будет делать, а потом подкорректируем, я предполагаю, что мой мысли сразу забанят в плане не профессионализма, ну что поделать я учусь на работах обмена и статьях КЕА, ну так предлагаю самое сложное корни в n-ной степени оставить продвинутым как Alex, а самим разобрать что попороще. Кстати Alex подскажите а где именно можно найти самоучитель для Си?
Пост N: 577
Зарегистрирован: 16.03.09
Откуда: Родина, Севастополь
Рейтинг:
1
Отправлено: 30.04.12 18:26. Заголовок: Я бьюсь с народом по..
Я бьюсь с народом по поводу ПП уже не один год. Всем лень, хотя дело архи нужное. Создал даже раздел под это дело, но сказали что это всё не нужно и я удалил. Хотя материал остался. Если есть желающие и будет активность готов восстановить этот раздел. Структура его такова, как я вижу. Это будет выглядеть как подфорум. В нём темы. Первая тема с готовыми отобранными оптимальными ПП. Как топик, первое, допустим, сложение. По порядку как сообщения сложение 1b+1b, второе 2b+1b, 2b+2b, 3b+1b, 3b+2b, 3b+3b и так далее. 10-15 сообщений и все суммы есть. Пусть первые и будут выглядить по детски, но для кого как. Кто пишет первую прогу будет неоценимым подспорьем и экономией массы времени. В процессе ему уже и не надо будет туда заглядывать, но на его место придут другие!!!! Так же и с вычитанием, делением, корнем и тд. Есть тригонометрия, фурье, СКЗПН (действующее значение переменного напр., готов поделиться, проверенно на практике, точность просто супер). Если есть желание, давайте сделаем проект. В соседних темах вначале обсуждать каждую ПП, находить оптимальную и после утверждения добавлять в базу. Знаю что некоторым это не нравится, считают что это повредит саморазвитию и росту. Лично я так не считаю. Год назад когда КЕА взялся за ПП, я надеялся что в этом направлении и пойдёт, но он просто стал систематизировать уже готовый свой материал, ничего нового практически не внося. А так хотелось арфметики! Без неё ни куда. Но кроме начинающих нужна помощи и сильных, хотябы в обсуждениях. Причём для каждой ПП в шапке прописывать алгоритм её работы. Когда есть понимание её работы в голове отложится и сама процедура, со временем уже можно будет и с головы писать, не заглядывая, да и своё что то превносить. Вот! Этот вопрос у меня наболевший, но поддержки я не нашёл. СИ хорошо, и я сам потихоньку начал его осваивать, пока на самом начале, на въезде, но и асм бросать не собираюсь, как то он мне ближе, по тому как полный контроль над МК, знаешь каждый его шаг буквально. P.S. Писал почти в слепую, инет со свистка, не обессудте за ошибки и граматику
Отправлено: 01.05.12 01:25. Заголовок: SanSanich конечно в..
SanSanich конечно восстановИте раздел, тем более, что в школе с математикой было туго приходится разбираться более осознано, а щас уже 2 высших образования, но слова тригонометрия, фурье, СКЗПН до сих пор меня пугают своей "не вкуренностью"
Пост N: 56
Зарегистрирован: 01.12.08
Откуда: Киргизия, Бишкек
Рейтинг:
0
Отправлено: 01.05.12 18:56. Заголовок: SanSanich не надо би..
SanSanich не надо биться с народом нужно просто создавать. Я думаю потехоньку и создастся база с библиотеками не хуже чем здесь а может и от туда взять все самое лучшее. У меня некоторое время не было интернета поэтому прошу вас SanSanich восстановить хотя бы на время если не решитесь создавать ветку с библиотеками или если не трудно вышлите мне на почтовый ящик (адрес есть в обмене, а если нету сообщите я напишу). Я вот тут кое как приобрел датчик влажности HTM-B71 так вот согласно даташита чтобы получить значение температуры и влажности нужно будет делать как минимум три математических действия. А там и деление и умножение. Так что мне без вашей помощи не обойтись.
Пост N: 578
Зарегистрирован: 16.03.09
Откуда: Родина, Севастополь
Рейтинг:
1
Отправлено: 02.05.12 22:17. Заголовок: Ну вот, два единомыш..
Ну вот, два единомышленника уже есть! Может кто ещё подтянется. Кстати, некоторые процедуры есть на chipmk, у меня сохранился удалённый раздел «Систематизация кода» . Как только вернусь на родину (сейчас очень далеко!) с рабочего компа создам раздел, или как подфорум, чтоб на виду был. Это скорее всего после 9 мая. Пока готовьте что у кого есть, чтоб процесс не затягивался.
Пост N: 286
Зарегистрирован: 01.03.11
Откуда: Украина, Киев
Рейтинг:
1
Отправлено: 03.05.12 00:18. Заголовок: SanSanich пишет: у ..
SanSanich пишет:
цитата:
у меня сохранился удалённый раздел «Систематизация кода» . Как только вернусь на родину (сейчас очень далеко!) с рабочего компа создам раздел, или как подфорум, чтоб на виду был.
Это обязательно надо сделать. SanSanich пишет:
цитата:
Пока готовьте что у кого есть, чтоб процесс не затягивался.
Желательно, чтобы этим процессом управлял один человек. Т.е. надо все это выкладывать не на прямую, а через премодерацию. SanSanich есть еще один момент. Твой юродивый однофамилец выложенное в этой теме, будет переводить на птичий язык и продавать подписчикам абонемента (правильно именно подписчикам, а не участникам, как он выдумал), как он это делал многократно. Хотя мне, в общем, это все ровно.
Пост N: 579
Зарегистрирован: 16.03.09
Откуда: Родина, Севастополь
Рейтинг:
1
Отправлено: 03.05.12 17:59. Заголовок: Алексей пишет: А по..
Алексей пишет:
цитата:
А потом еще обвинит нас в том что мы же украли его идеи, он только не успел их оформить, как было с битами конфигурации... :)
Да это не важно. Вопрос в самой необходимости такой базы, в одном месте и в системе. Отечественного варианта ни где нет, если всё получится будем первыми. Главное сделать. Да и предпологаю нормальное живое обсуждение, что будет очень полезно всем участникам. Правда вот на счёт сохранённого раздела по систематизации я погорячился, увидив у себя архив с этим названием. Там всего одна страница, и та совершенно о другом. Но многое я по ходу сохранял, но на разных компах, приеду буду искать и собирать. Есть много макросов, но честнот говоря, ими не пользуюсь. ПП как то понятнее, так как более прозрачны.
Все даты в формате GMT
3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет