Преобразование чисел! Хелп!
Преобразование чисел! Хелп!
Добрый день всем!
Вообщем стоит задача:
Преобразовать 10 число в двоичное и вывести это число в порт!
Ребят очень нужно!
Вообщем стоит задача:
Преобразовать 10 число в двоичное и вывести это число в порт!
Ребят очень нужно!
Re: Преобразование чисел! Хелп!
Не совсем понятно ПРЕОБРАЗОВАТЬ, если это про МК, так в нем числа и так в двоичном виде, это ваша среда разработки показывает вам числа в удобном формате.
- Финский
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Сб авг 28, 2010 13:29:43
- Откуда: Докучаевск, Донецк
- Контактная информация:
Re: Преобразование чисел! Хелп!
PORTx = num;
или
ldi R16, num
out PORTx, R16
где num - число от 0 до 255
или
ldi R16, num
out PORTx, R16
где num - число от 0 до 255
[color=#800000]Техноманьяк и IT-шаман. Танцы с бубном на дому.[/color]
Re: Преобразование чисел! Хелп!
есть допустим число 12345 в десятичьном виде, его нужно преобразовать в бинарный вид и вывести по одному порту, тоесть последовательный вывод! Я так понял, что как то нужно сформировать массив и записать туда преобразование, а потом вывести этот массив побитно! Желательно на С, так как в асме не силён!
Re: Преобразование чисел! Хелп!
если исходить из того, что число Unsigned int, то
PORTx = num;// младший байт
PORTx = num >> 8;// старший байт
где num - число от 0 до 0xffff
PORTx = num;// младший байт
PORTx = num >> 8;// старший байт
где num - число от 0 до 0xffff
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Преобразование чисел! Хелп!
По одному биту в одну ногу вывести чтоле?
Если да то (третья нога порта B в данном случае. контроллер AVR)
а ваще телепаты в отпуске ) ни какой контроллер, ни какой компилятор, ни какие задержки нихрена не написано
Если да то (третья нога порта B в данном случае. контроллер AVR)
Код: Выделить всё
while (myNum)
{
if (myNum&0x01)
PORTB |= (1<<3);
else
PORTB &= ~(1<<3);
myNum>>=1;
delay_ms(100); // тут пауза которой собственно задаем длительность каждого импульса
}
а ваще телепаты в отпуске ) ни какой контроллер, ни какой компилятор, ни какие задержки нихрена не написано
Re: Преобразование чисел! Хелп!
Ни какая разрядность десятичного и двоичного чисел, ни какой порт (хотя, теперь ясно, что какой-то последовательный (?) ).
Re: Преобразование чисел! Хелп!
Сорри! Контроллер мега8, компилятор CodeVision, в двоичном 24 разряда, задержка между битами 50 мкс
Допустим вывод через портС.1
Допустим вывод через портС.1
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Преобразование чисел! Хелп!
см выше я пример написал, или поменять порт и ногу самостоятельно никак?
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Преобразование чисел! Хелп!
Если кодвижн можно ваще проще сделать
Код: Выделить всё
while (myNum)
{
PORTC.1 = myNum&0x01;
myNum>>=1;
delay_ms(50); // тут пауза которой собственно задаем длительность каждого импульса
}- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Преобразование чисел! Хелп!
Код: Выделить всё
myNum
.
.
.
myNum>>=1;
Это ж двоичное. А надо десятичное. Может ошибаюсь?
Docendo discimus
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Преобразование чисел! Хелп!
pyzhman писал(а):Это ж двоичное. А надо десятичное. Может ошибаюсь?
Что-то в последнее время часто вижу такие реплики. Любое число в МК в итоге будет двоичным.
В компиляторе по дефолту используются десятичные числа. Я не знаю даже как сформулировать то что я хочу сказать, но попробую объяснить...
Есть десятичное число 201 скажем. В бинарном это будет 11001001.
Сдвиг (>>) это бинарная операция. Также как и побитовое И (&). То есть если к десятичному числу применить бинарную операцию компилятор будет с ним работать как с бинарным уже.
Задача в чем стоит. Вывести вот это число - 201 в ногу порта. последовательно.
Следовательно что мы делаем.
Берем последний бит числа - 342&1. В бинарном виде это будет 11001001 & 00000001. (((ТУТ надо ввести корректировку в мой код, для чисел больше байта могут быть проблемы)))
В результате получим "1". Выводим эту единичку в ногу порта.
Далее делаем сдвиг нашего числа вправо на 1 разряд. В результате получим 1100100
И далее все по новой пока не пройдем все число.
Теперь насчет корректировки.
PORTC.1 = myNum&0x01;
заменить на
PORTC.1 = myNum&0x01UL;
В таком случае можно будет работать с числами до 32 бит.
Re: Преобразование чисел! Хелп!
Спасибо за ответы! Блин потёк аквариум, залил таймер, занимался ремонтом! Завтра опробую и отпишусь.
Re: Преобразование чисел! Хелп!
вывести получилось, только надо что бы вывод был младшим байтом вперёд?