Помогите понять как отобразить в атмеге отрицательное число

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Помогите понять как отобразить в атмеге отрицательное число

Сообщение miwutka07 »

Помогите понять как отобразить в атмеге отрицательное число на 7-мисегментнике. Обычные числа то понятно. Проблемка такая. Подключаю ds18b20 и температура флоат. Процедура разложения интеджер. Плюсовые показывает а минусовые не показывает. Постоянно 0 горит. Подскажите советом кто знает. Если надо выложу пример процедурки...
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение pyzhman »

Код: Выделить всё

if(temperatura < 0)
{
temperatura= -temperatura;
}
//далее отображаем температуру.
Docendo discimus
Реклама
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение miwutka07 »

void Display2(int Number2) //Ô-öèÿ äëÿ ðàçëîæåíèÿ äåñÿòè÷íîãî öèñëà/**/
{
unsigned char Num6, Num7, Num8,Num9, Num10;

Num6=0;
Num7=0;
Num8=0;
Num9=0;
Num10=0;

while (Number2 >= 10000) //10000
{
Number2 -= 10000;
Num6++;
}

while (Number2 >= 1000) //1000
{
Number2 -= 1000;
Num7++;
}

while (Number2 >= 100) //100
{
Number2 -= 100;
Num8++;
}

while (Number2 >= 10) //10
{
Number2 -= 10;
Num9++;
}

Num10 = Number2; //îñòàòîê
Disp6 = Dig[Num6];
Disp7 = Dig[Num7];
Disp8 = Dig[Num8];
Disp9 = Dig[Num9];
Disp10 = Dig[Num10];
};

так работает на положительное число.

ds18b20_select(&rom_code[0][0]);
w1_write(0x44);
ds18b20_read_spd(&rom_code[0][0]);
resolution=(__ds18b20_scratch_pad.conf_register>>5) & 3;
w1_init();
t1= (*((int *) &__ds18b20_scratch_pad.temp_lsb) & ((int) bit_mask[resolution]))*0.0625;

t1 float
как используя свой код например вывести отрицательное? :)
как его правильно разложить? поставить минус это и так понятно.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение pyzhman »

Приведенный мной кусок не ставит минус, а отрицательное число делает положительным. :)
Docendo discimus
Реклама
Эиком - электронные компоненты и радиодетали
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение miwutka07 »

вот блин)) точно. Надо математику за 6 клас почитать ))) Ща попробую и отпишусь! СПС!
Реклама
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение Мастер Ломастер »

битва с дураками проиграна, победители торжествуют. слава победителям!
Реклама
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение miwutka07 »

спасибо. читаю. Неплохо былобы гдето почитать как выводить флоат числа с запятой на сегментник......
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение Мастер Ломастер »

miwutka07 писал(а):спасибо. читаю. Неплохо былобы гдето почитать как выводить флоат числа с запятой на сегментник......
если вы все еще не смирились с тем фактом, что float - это в 99% случаев совершенно лишнее в программах для микроконтроллеров, то читайте до конца - в конце специально для floatофилов есть пример :)))
битва с дураками проиграна, победители торжествуют. слава победителям!
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение miwutka07 »

Вродь у меня этот же принцып и использован :) ток чуть по другому расписан :) Тоже использую массив для вывода числа на весь порт...
От флоатов пришлось уходить делением и сложением и вычитанием ))) когда измерял перемменное напряжение :) Но хочеться отображать както числа с запятой. Почитаю тот сайтик
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение pyzhman »

Библиотечные функции работы с DS18B20 возвращают float. Так что хочешь не хочешь, а работать с ними. Нет, если не хочешь, то пишешь сам. :)
Docendo discimus
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение miwutka07 »

сижу вкуриваю те процедурки по ссылке. Очень полезные. Правда надо на бумаге всё просчитать чтоб понять и запомнить :)
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение Мастер Ломастер »

pyzhman писал(а):Библиотечные функции работы с DS18B20 возвращают float. Так что хочешь не хочешь, а работать с ними. Нет, если не хочешь, то пишешь сам. :)
для ленивых, но умныххитрых, есть иной выход - найти библиотеки, котрые без float-ов обходятся :)))
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение pyzhman »

+
Docendo discimus
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение Аlex »

miwutka07 писал(а): Но хочеться отображать както числа с запятой
Вот и именно, что "как-то". Вы сами не знаете что хотите, по этому не понимаете как это "что-то" сделать.
Что-бы вывести число с точкой нужно, как минимум, определиться где эта точка будет находиться, т.е. сделать её фиксированной. А дальше всё просто. Умножаем float-переменную на 10 в степени равной месту разряда точки справа, приводим её к целому числу и выводим на индикатор, установив в нужном месте точку.
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение miwutka07 »

опять этот злой модер отвечает с критикой мне))) Ведь ответил же так как надо... И зачем только критику свою приписывать...??? Не нравиться - сдай права модера. За объяснение про числа с точкой спасибо.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение Аlex »

Это не критика, это воспитательные меры :))
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение miwutka07 »

Блягодаря воспитательным работам мозг начинает работать быстрее и лучше )))
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение ploop »

Вот что Си с мозгом делает :)))
Библиотечные функции работы с DS18B20 возвращают float
Его как-то на байты можно разложить, или без него обойтись? На ассемблере вот как выглядит:

Код: Выделить всё

  ld XL,Z+                        ; Читаем младший 
  ld XH,Z                         ; и старший байты температуры

  bst XH,7                        ; в T признак знака (0 - положительная темп.)
  brtc ct2                        ; Если отрицательная - инвертируем значение   
    com XH
    neg XL
  ct2:
; Работаем дальше. Если T стоит, выводим минус
Предполагаю, так же коротко можно и на Си сделать, если не использовать флоат.
BVS
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн май 23, 2011 18:27:41

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение BVS »

вот так лучше:

Код: Выделить всё

ld XL,Z+                        ; Читаем младший 
  ld XH,Z                         ; и старший байты температуры

  bst XH,7                        ; в T признак знака (0 - положительная темп.)
  brtc ct2                        ; Если отрицательная - инвертируем значение   
  neg XL
  brcc pc+2
  inc XH
  neg XH	
  ct2:
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Помогите понять как отобразить в атмеге отрицательное чи

Сообщение ploop »

Не врубился, что это даст?
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»