Program pro změnu stavu LED tlačítky

Dobrý večer, Jsem začínající prográmator a dostal jsem za úkol toto : Napište program pro změnu stavu LED tlačítky Tl1 až Tl3. Tl1 nuluje všechny LED, Tl2 zvýší číslo zobrazené pomocí LED o 1, Tl3 sníží číslo zobrazené pomocí LED o 1. Můj program nefunguje a nevím jak tam vložit to tlačítko pro reset :frowning: . Budu rád za jakoukoliv radu :slight_smile:

Zde je můj program:

#include <avr/io.h>
#include <avr/iom168.h>
#include <avr/delay.h>

//Deklarace globalnich promenych
unsigned char c;

void main(void)
{
//inicializace Port B - vstup (tlacitka)
PORTB=0x00;
DDRB=0x00;

//inicializace Port D - vystup (LED diody)
PORTD=0x00;
DDRD=0xFF;

PORTD=0;
while(1)
{
	if (PINB,0 == 0) c = c + 1; //pricteni 1
	if (PINB,1 == 0) c = c - 1; //odecteni 1
	if (PINB,2 == 0) c = c << 1; //bitovy posun o jeden bit doleva
	if (PINB,3 == 0) c = c >> 1; //bitovy posun o jeden bit doprava
	if (PINB,4 == 0) c = -c; //bitovy doplnek,jednickovy doplnek
	if (PINB,5 == 0) c = 255; // nastaveni samych jednicek
	if (PINB,6 == 0) c = 0; //nastaveni samych nul
	PORTD = ~c; //0..LED sviti,1..LED nesviti
	_delay_ms(100);
}

}

reset coho ?, co ma robit to c=c+1 ? a schema **presne **ako to mas zapojeneby nebolo ?

Zřejmě tlačítka spínají k zemi, proto se musí port B nastavit na 0xFF aby se aktivovaly pull-up rezistory.

Zde je schema

Omlouvám se preklep ne tlacitko pro reset ale pro to vynulování :smiley:

Máš za úkol kontrolovat tlačítka 1-3 a máš přesně dané úkoly, které tlačítko má co dělat. Tak mi celkem není jasné, proč v programu kontroluješ těch tlačítek 7 a jak jsi přišel na ty úžasný matematický úkoly, které ty ostatní tlačítka dělají …

Chce se to víc zamyslet. Pomůžeme Ti se nasměrovat, pomůžeme vyřešit dílčí problém, ale nebudeme tady řešit domácí úkoly - to by ses nic nenaučil.

KOntrolne otazky pre ostatnych, ten reset nemusi byt osetreny ? dufam ze na napajani procesora mas 100n + 10uF elektrolit. Ale ak ide o teoreticku ulohu tak je to jedno v reale to ljedno nebude.

U AVR nemusí být RESET pin ošetřen, nicméně nikdo nic nezkazí tím, že externí rezistor přidá.