Как максимально просто перевести байт из двоично-десятичной в десятичную систему счисления - 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; }
Объяснение кода листинга программы
Список элементов кода, сопровождаемых номерами:
- Объявление переменной
b1
и присваивание ей значенияTWDR
(возможно, это значение поступает с периферийного устройства). - Объявление переменной
b2
и присваивание ей значенияTWDR
. - Попытка перевести байт в десятичную систему счисления, используя сдвиги и маску. Значение
dva[0]
будет содержать старшие 4 бита байта, аdva[1]
- младшие 4 бита. - Присваивание переменной
dva[2]
значение 0b11111101. - Присваивание переменной
dva[3]
значение 0b11111110. - Задержка в 10 миллисекунд.
- Начало цикла, который будет выполняться для каждого из двух возможных значений
dva[ii]
. - В каждой итерации цикла происходит проверка значения
dva[ii]
и присвоение соответствующего значения портуPORTD
. - После каждой итерации цикла происходит задержка в 10 миллисекунд.
- После завершения цикла происходит присвоение порту
PORTC
значениеdva[ii+2]
. - Задержка в 10 миллисекунд.
- Присваивание порту
PORTC
значение 0b11111111. Похоже, что этот код выполняет функцию перевода двоичного значения в десятичное, а затем использует это значение для управления светодиодами, начиная с определенного адреса и с задержками между каждым шагом. Однако, без дополнительной информации о контексте, это лишь предположение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д