Atmega32 AD převodník
Napsal: 29 bře 2012, 01:38
Zdravím, začínám s programováním na kitu evb4.3 a chtěl bych vytvořit takovýto program.
Na vstup převodníku např.PINA.0 budu přivádět napětí a výsledek chci zobrazovat na diodách připojených k portu B. Dejme tomu, že chci zobrazit pouze registr ADCL(mám pouze 8diod takže výsledek ADCW nelze celý zobrazit). Začal jsem takto:
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRB=0xFF;
ADMUX=0;
ADCSRA=0x40;
PORTB=ADCL;
}
A ještě bych prosil o vysvětlení jak fungují tyto příkazy
#include <avr/io.h>
int main (void) //hlavní funkce
{
DDRB = 0xff; //(0xff = 0b11111111) -> Piny 0 - 7 portu "B" budou výstupní
DDRD = 0; //Port "D" bude vstupní (tlačítko je připojeno k portu "D")
while (1)
{
if(PIND & 0b00000001)
{
PORTB = 0b11110000; //Rozsviť vybrané ledky
}
else
{
PORTB = 0; //zhasni všechny ledky
}
}
}
celkem všemu rozumím až na toto: if(PIND & 0b00000001)
nerozumím tomu jak funguje tento příkaz. Proč nefunguje klasické porovnání if(PIND == 0b00000001)??
Tlačítka jsou připojena přes zem přímo k pinům uPC. Děkuji za odpovědi.
Na vstup převodníku např.PINA.0 budu přivádět napětí a výsledek chci zobrazovat na diodách připojených k portu B. Dejme tomu, že chci zobrazit pouze registr ADCL(mám pouze 8diod takže výsledek ADCW nelze celý zobrazit). Začal jsem takto:
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRB=0xFF;
ADMUX=0;
ADCSRA=0x40;
PORTB=ADCL;
}
A ještě bych prosil o vysvětlení jak fungují tyto příkazy
#include <avr/io.h>
int main (void) //hlavní funkce
{
DDRB = 0xff; //(0xff = 0b11111111) -> Piny 0 - 7 portu "B" budou výstupní
DDRD = 0; //Port "D" bude vstupní (tlačítko je připojeno k portu "D")
while (1)
{
if(PIND & 0b00000001)
{
PORTB = 0b11110000; //Rozsviť vybrané ledky
}
else
{
PORTB = 0; //zhasni všechny ledky
}
}
}
celkem všemu rozumím až na toto: if(PIND & 0b00000001)
nerozumím tomu jak funguje tento příkaz. Proč nefunguje klasické porovnání if(PIND == 0b00000001)??
Tlačítka jsou připojena přes zem přímo k pinům uPC. Děkuji za odpovědi.