PIC16F877 + DHT22

Ne - chyba je ve funkci ReadData v řádku i = 0; uvnitř smyčky for ( j … ). V každý smyčce nuluješ i, tak se nemůžeš divit, že na výstupu dostáváš jenom poslední bit. Tam to nemá co dělat. To musí zůstat jenom před smyčkou.

Ten řádek i|= (1 << (7 - j)); //Nastaví bit do 1 dělá následující :

vezme jedničku a posune ji na pozici (7 - j) - tedy 7,6,5,…,0 (0x80,0x40,0x20, … ,0x01) a pokaždé ji logicky přičte do i. Jenže na začátku cyklu si vždy i vynuluješ, což je chyba …

Není tam i=(1<<(7-j));, ale i|=(1<<(7-j)); totéž jako i := i or 2^(7-j)
Snad jsem ten Pascalovskej zápis nezpackal.

Když s Cčkem začínáš, tak :

A+=2; odpovídá A = A + 2;
A<<=1; odpovídá A = A << 1;
A=7;* odpovídá A = A * 7;

atd.