Как максимально просто перевести байт из двоично-десятичной в десятичную систему счисления - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет в си я не силен , пот столкнулся с проблемой. Приходит мне байт в двоично десятичной системе. Как максимально просто перевести в десятичную систему?

Решение задачи: «Как максимально просто перевести байт из двоично-десятичной в десятичную систему счисления»

textual
Листинг программы
    int b1=TWDR;   //получил байт
       int b2=TWDR;
           dva[0]=(b1>>4)<<4;
           dva[1]=(b2<<8)>>4;
           dva[2]=0b11111101;
           dva[3]=0b11111110; 
                    
        _delay_ms(10) ;
               
        for (int ii=0;ii<=1;ii++)
        {
        switch(dva[ii]){
        case 0b00000000 :PORTD=0b0111111; break;//0
        case 0b00010000 :PORTD=0b0000110; break;//1
        case 0b00100000 :PORTD=0b1011011; break;//2
        case 0b00110000 :PORTD=0b1001111; break;//3
        case 0b01000000 :PORTD=0b1100110; break;//4
        case 0b01010000 :PORTD=0b1101101; break;//5
        case 0b01100000 :PORTD=0b1111101; break;//6
        case 0b01110000 :PORTD=0b0000111; break;//7
        case 0b10000000 :PORTD=0b1111111; break;//8
        case 0b10010000 :PORTD=0b1101111; break;//9     
         break;  
           }
       PORTC=dva[ii+2];  
      _delay_ms(10) ;
      PORTC=0b11111111;
     }

Объяснение кода листинга программы

Список элементов кода, сопровождаемых номерами:

  1. Объявление переменной b1 и присваивание ей значения TWDR (возможно, это значение поступает с периферийного устройства).
  2. Объявление переменной b2 и присваивание ей значения TWDR.
  3. Попытка перевести байт в десятичную систему счисления, используя сдвиги и маску. Значение dva[0] будет содержать старшие 4 бита байта, а dva[1] - младшие 4 бита.
  4. Присваивание переменной dva[2] значение 0b11111101.
  5. Присваивание переменной dva[3] значение 0b11111110.
  6. Задержка в 10 миллисекунд.
  7. Начало цикла, который будет выполняться для каждого из двух возможных значений dva[ii].
  8. В каждой итерации цикла происходит проверка значения dva[ii] и присвоение соответствующего значения порту PORTD.
  9. После каждой итерации цикла происходит задержка в 10 миллисекунд.
  10. После завершения цикла происходит присвоение порту PORTC значение dva[ii+2].
  11. Задержка в 10 миллисекунд.
  12. Присваивание порту PORTC значение 0b11111111. Похоже, что этот код выполняет функцию перевода двоичного значения в десятичное, а затем использует это значение для управления светодиодами, начиная с определенного адреса и с задержками между каждым шагом. Однако, без дополнительной информации о контексте, это лишь предположение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы