ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
27 ноября
89532 Топик полностью
ReAl (17.05.2007 11:34, просмотров: 1) ответил mix47 на Отладка
Сверху вниз по порядку написания, а не по порядку важности. Всё в целом - отличное подтверждение мнения "чтобы резко улучшить качество программного обеспечения и уменьшить его размер, надо во всех текстовых редакторах убрать функцию COPY/PASTE. Я бы первым делом написал что-то в духе <c> void USART_put_nibble(uint8_t n) { n += '0'; if( n > '9') n += ('A' - '9' - 10); USART_Transmit( n ); } void USART_put_u8(uint8_t b) { USART_put_nibble( b >> 4); USART_put_nibble( b & 0x0F); } /* И так далее по потребности, и не копипастил бы эти if() в таком количестве, и уж тем более строка rez = i; откровенно лишняя Вызов USART_put_u8( i ); выглядит гораздо читабельнее и код в целом будет короче. */ </c> Зачем rez 32-битный - не понимаю. Те " | 0 " в строках с набором маски битов были нужны и поравданы в показанном ранее примере только для того, чтобы можно было (почти) произвольно закомментировать/раскомментировать отдельные биты в болванке, в однострочном варианте они выглядят "как-то странно". Куда-то затерялось ожидание готовности АЦП. Читать из АЦП рекомендуют сначала младший байт, потом старший. Насколько я помню документацию, после чтения младшего блокируется обновление всего регистра данных АЦП до чтения ADCH. <c> uint16_t rez; ... while( !(ADCSRA & (1<<ADIF)) ); rez = ADCW; /* компилятор достаточно умён, чтобы прочитать в нужном порядке */ USART_put_u16( rez); </c> Что там с i вышло - надо смотреть внимательно после переписывания кода в человеческом виде