Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
10.01.2007, 10:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
преобразование числа для занесения его в регистр на PIC16F84
Начал изучать пики на ассамблере,попалась програмка сложения двух трехбайтовых чисел,все понятно там,но мне хочется занести свои числа в регистры и сложить потом проверить правельность результата, не могу преобразовать число из десятичного в двоичный и положить в регистры например 25555
как преобразовать число из регистров в десятичное понял: по формуле (regh*256+regm)*256+regl
где regh-старший регистр числа
regm-средний регистр числа
regl-младший рестр числа
как из десятичного в регистры пока не понял,но если подумать и поломать голову пойму,мож кто поможет быстрей
|
|
|
|
10.01.2007, 14:46
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,392
Сказал спасибо: 1,976
Сказали Спасибо 1,332 раз(а) в 580 сообщении(ях)
|
Re: преобразование числа для занесения его в регистр на PIC1
Сообщение от CERGEI1982
|
как из десятичного в регистры пока не понял,но если подумать и поломать голову пойму,мож кто поможет быстрей
|
Запускаете обычный виндовский калькулятор в инженерном режиме, вводите число, переключаетесь в HEX формат. Не, ну конечно можно и ручками, но все же так проще.
Кстати если взять NumLock калькулятор, так он даже в римские переводить умеет
|
|
|
|
10.01.2007, 16:43
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
ну попробуй переведи например два числа 25555 и 16000 шестидеричные ,внеси в пик,пусть он сложит их и проверь ответ,вот я о чем
|
|
|
|
10.01.2007, 16:49
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,392
Сказал спасибо: 1,976
Сказали Спасибо 1,332 раз(а) в 580 сообщении(ях)
|
Сообщение от CERGEI1982
|
ну попробуй переведи например два числа 25555 и 16000 шестидеричные ,внеси в пик,пусть он сложит их и проверь ответ,вот я о чем
|
?????
25555.*=*0x63D3, то есть мл. байт 0xD3, следующий 0x63, старший 0x00 (речь шла о трехбайтных)
Или я таки чего не понял?
|
|
|
|
10.01.2007, 17:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
ДА ОБ ЭТОМ ,КАК ПРЕОБРАЗОВАЛ?
|
|
|
|
10.01.2007, 17:47
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,392
Сказал спасибо: 1,976
Сказали Спасибо 1,332 раз(а) в 580 сообщении(ях)
|
Сообщение от CERGEI1982
|
ДА ОБ ЭТОМ ,КАК ПРЕОБРАЗОВАЛ?
|
Ну ладно, мне не влом и повторить...
Запускаете обычный виндовский калькулятор в инженерном режиме, вводите число, переключаетесь в HEX формат. Увидите то же число в HEX формате.
|
|
|
|
10.01.2007, 18:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
ИЗВИНЯЙ СРАЗУ НЕ СООБРАЗИЛ,СПАСИБО ЗА ПОМОЩЬ
|
|
|
|
10.01.2007, 18:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
ВСЕ СХОДИТСЯ,ОКАЗЫВАЕТСЯ ВСЕ ПРОСТО
|
|
|
|
11.01.2007, 12:30
|
|
Временная регистрация
Регистрация: 17.05.2006
Сообщений: 72
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Извиняйте, если не в тему, но вообще есть стандартный алгоритм перевода чисел из одной системы счисления в другую.
Нагляднее всего перевести десятичное число в другую систему, например по основанию 16. Делим наше число (25555) на основание системы счисления, в которую нужно перевести число (16). Результат сохраняем как целое число и остаток: 25555/16=1597 и 3 в остатке. Этот остаток будет самой младшей цифрой нашего нового числа по основанию 16.
Далее делим целую часть результата деления на основание 16 и получаем снова целое и остаток, который будет второй цифрой нашего нового числа: 1597/16=99 и 13, т.е. D.
Далее повторяем до тех пор, пока после очередного деления не останется число, меньшее основания нашей новой системы, т.е. меньшее 16:
99/16=6 и 3 в остатке, 3 – следующая цифра нашего числа;
6 ‹ 16, поэтому 6 – последняя, самая старшая, цифра нашего 16-ричного числа.
В конечном итоге получаем:
25555=0х63D3.
Ву а ля!
PS Таким способом можно перевести число из любой системы счисления в любую другую, только делить надо по правилам той системы, из которой переводят число. Нагляднее всего перевести число в десятичную систему, а уже потом переводить его в другую систему счисления.
__________________
"Имею честь иметь Вашу честь в своём доме..."
|
|
|
|
11.01.2007, 17:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
сложновато,но в общем понятно,но калькулятор всегда есть в компе,и не надо делить число ,так как только через комп можно запрограмировать
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:58.
|
|