Quyidagi ma'nolarni noto'g'ri tushunasiz:
1 << ADSC
Bu, aslida, ADSC qiymatida ko'rsatilgan bit sonining chap qismidagi 1-bitni almashtirishni anglatadi.
ADSC
in this case is 6:
#define ADSC 6
Agar shunday qilsangiz:
while(ADSC);
aslida:
while(6);
Albatta, u hech qachon tugamaydi, chunki 6 0 emas.
Buning o'rniga, ikkilik rejimda 6 marta chapga siljiydingiz:
00000001
<< 6
01000000
Albatta, bu oltinchi raqamda 64 yoki 0x40. Ushbu ro'yxatga kiritilgan bittadan bittani qaytarish uchun ADCSRA registrining qiymati bilan ANDED qilinadi. Buning natijasi va while
bilan nazorat qilishingiz mumkin. Shunday qilib, quyidagilar tugaydi:
while(ADCSRA & 0x40);
Qaysi biri yoki unga tenglashtiriladi:
while(0x40);
agar 7 th bit o'rnatilgan bo'lsa yoki o'rnatilmagan bo'lsa:
while(0x00);
Va 0x00 0 bo'lgani uchun, bit belgilanmagan va while
tugagach, bu tenglikka teng bo'ladi.