Самоучитель для микроконтроллеров AVR - Самоучитель для микроконтроллеров AVR

В Си в переменную можно помещать только тот тип данных, который она может хранить!

Так как PORTB это байт, а ADCW - это два байта, то прежде чем выполнить оператор присваивания (это знак  = ) нужно преобразовать слово (слово - word - значит два байта)  ADCW  в без знаковый байт.

Преобразование типов данных - делают так:

Перед тем, что надо преобразовать записывают в скобках (       ), тип данных к которому нужно преобразовать.

(unsigned char) ~(ADCW>>2)

Результат этой строки - один байт и мы можем поместить его в PORTB

Если в регистре DDRB все биты равны "1" - т.е. все ножки порта_B выходы, мы безусловно увидим старшие 8 бит результата АЦП горящими светодиодами.

Вам должна быть абсолютно понятна разобранная строка:

PORTB = (unsigned char) ~(ADCW>>2);

разберем еще одну строчку:

ADCSRA|=0x40;

Go to Top