реклама на сайте
подробности

 
 
> 4х разрядное DEC число разбить на цифры
Punk
сообщение Jan 27 2007, 14:37
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



Прет! Есть преременная unsigned int и её значение в программе не превышает 9999 необходимо разбить на отдельные числа для отображения на светодиодном индикаторе.
В хексе у меня все получилось без проблем а вот в деке че то ни хрена.Подскажите плз как надо грамотно разбивать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
day177
сообщение Jan 31 2007, 09:36
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 34
Регистрация: 25-01-07
Пользователь №: 24 755



Спасибо! вчера в час ночи меня тоже до этого доперло! получилось
Код
while (1){

              buf=zg7[(bin2bcd(sec) & 0x0f)]; //получаем единицы sec
              for (cnt=0;cnt<8;cnt++) {
              buf = buf << 1; // делаем логический сдвиг значения из знакогенератора
              bitc(PORTD,IND_DATA);
              if (SREG&0x01) {bits(PORTD,IND_DATA);} //проверяем флаг сдвига, если установлен, в DATA пишем 1
              bitc(PORTD,IND_CLK); //даем 0 на CLK
              bits(PORTD,IND_CLK); //даем 1 на CLK
              } //for
              PORTB.3=0;
              delay_ms(1);
              PORTB.3=1;
              
              buf=zg7[((bin2bcd(sec)>>4) & 0x0f)]; //получаем десятки sec          
              for (cnt=0;cnt<8;cnt++) {
              buf = buf << 1; // делаем логический сдвиг значения из знакогенератора
              bitc(PORTD,IND_DATA);
              if (SREG&0x01) {bits(PORTD,IND_DATA);} //проверяем флаг сдвига, если установлен, в DATA пишем 1
              bitc(PORTD,IND_CLK); //даем 0 на CLK
              bits(PORTD,IND_CLK); //даем 1 на CLK
              } //for
              PORTB.2=0;
              delay_ms(1);
              PORTB.2=1;
                                
  }//while
Go to the top of the page
 
+Quote Post
I_AM_WINER
сообщение Jan 31 2007, 22:47
Сообщение #3





Группа: Новичок
Сообщений: 4
Регистрация: 31-01-07
Пользователь №: 24 916



Можно делать через sprintf (... 4%D ...)
А декодер реализован так

switch(m_chr)
{
case '0' a_ret=0x3f; break;
case '1' a_ret=0x06; break;
// a_ret - код сегментов
// и так все цифирьки до 9

}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 08:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016