Tisk
Koutek AVR -
Napsal uĹživatel radioklub.cz   
Středa, 22 Červen 2011 20:43

Kompatibilní zapojení: LED panel s ATmega8

Ke stažení: LED_Tlacitko.c == LED_Tlacitko.pdf == LED_Tlacitko.htm
.
.

Untitled
/*
Popis:
P?i stisku tla?ítka se rozsvítí vybrané ledky. Po uvoln?ní tohoto tla?ítka ledky 
op?t zhasnou. 

Ledky které se mají rozsv?cet jsou vybrány konstantou "LED".

Tla?ítka jsou p?ipojena k portu "D" K tla?ítk?m jsou p?ipojeny "pull up" rezistory 
na 5 V, takže pokud není stisknuté tla?ítko, je na daném pinu 5 V (log. 1). 
P?i stisku tla?ítka se daný pin uzemní a je na n?m tedy 0 V (log 0).
Tla?ítka jsou p?ipojena k pin?m PD2 a PD3.

Stavy na portu "D" jsou tedy následující:
0b00001100 - žádné tla?ítko není stisknuté
0b00000100 - stisknuté tla?ítko "1"
0b00001000 - stisknuté tla?ítko "2"
0b00000000 - stisknutá ob? tla?ítka
*/


#include <avr/io.h>		//Vlož knihovnu vstup? a výstup? (PORT, DDR, PIN)


#define LED 0b10101010; //Ledky, které  se mají rozsvítit p?i stisku tla?ítka
						//(každá druhá)


/**********************HLAVNÍ FUNKCE*************************/

int main (void) //hlavní funkce
{
unsigned char prom; //nadefinujeme si prom?nnou typu unsigned char se jménem "prom"
					//to znamená, že v pam?ti RAM vznikne místo (8 bit?) kam m?žeme 
					//ukládat data
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)		// Nekone?ná smy?ka (dokud 1 = po?ád)
	{
	prom=PIND; 	//do prom?nné "prom" uložíme stav na portu "D" 
				//(tam kde je 5 V bude "1" a kde je 0 V bude "0")
	prom=prom&0b00000100;	//vymaskujeme pouze tla?ítko "1" 
							//(pokud bylo na PD2 5 V bude výsledek 0b00000100
							//jinak bude výsledek "0"
	
	if(prom==0)	//pokud se prom?nná "prom" rovná nule - tla?ítko je stisknuté
		{
		PORTB = LED; //Rozsvi? vybrané ledky
		}
	else //jinak (pokud se prom?nná "prom" nerovná nule - tla?ítko není stisknuté
		{
		PORTB = 0;	//zhasni všechny ledky
		}

	}	//Konec cyklu "while (1)" - program sko?í zp?t na jeho za?átek

}//konec funkce main() - sem se program nikdy nedostane 
 //(závorka tu však musí být jinak by p?eklada? nahlásil chybu)