lecke №2

Cél: hogy dolgozzon ki egy LED vezérlő eszköz segítségével egy gombnyomással. Valahányszor megnyomja a gombot, a kimeneti port van kötve a LED megváltoztatja az állapotát, hogy ellentétes. Ez a probléma könnyen megoldható a segítségével D-flip-flop, de még mindig nézd meg, hogyan lehet megoldani segítségével mikrokontroller.

A kör eszköz ugyanaz, mint az osztályban 1. A program algoritmus egyszerű. Először konfigurálja input-output portok. Ellenőrizze az állam a nyomócsonk Jr. D (PD0), amely össze van kötve a gombot, majd végezze el az összehasonlítást művelet, amely során PD0 ellenőrizzük egyenlőség az egyhez. Ha a feltétel teljesül a program ugrik a tetején a hurok, ha nem, akkor végre egy másik összehasonlítás működését, de PB0 sor. Első összehasonlító operátor ellenőrzések PB0 a nullával egyenlő, ha az eredmény igaz (PB0 = 0), akkor bocsátott ürítőegységtől (PB0 = 1). Ha hamis, nullára (PB0 = 0). Később a program, hogy a várakozó folyamat nélkül a LED villog olyan gyakran, hogy a szem nem veszi észre azt. A fő hurok a program felfüggesztésre kerül, amint a LED bekapcsol, és meg kell újítani, amint elengedi a gombot.

Konfigurálása bemeneti és kimeneti portok mindkét feladat 1:

DDRD = 0x00; // Port D - bemenet

PORTD = 0xFF; // csatlakozni felhúzó ellenállás

DDRB = 0xFF; // Port B - Output

PORTB = 0x00; // beállított kimenet 0

ÍRóPROGRAM főhurok. Itt fogjuk használni egy feltételes állítás, ha mást. Ez az operátor végez különböző műveleteket, ha bizonyos körülmények és van írva a következő:

Feltétel minden logikai kifejezés. Ha az eredmény ez a kifejezés igaz, akkor a „készlet A”, ellenkező esetben a „készlet kimutatások”

Eljárás készenléti gomb lenyomásakor egy üres ciklust. és ezt a ciklust kell elvégezni, amíg, ha a feltétel igaz. A feltétel az egyenlőség vonal PD0 egység, azaz, amíg a gomb nincs lenyomva.

míg a ((PIND (1 <

Mi ellenőrizze az állapotát a következő kifejezést vonalak PB0

if ((PINB (1 <

Mi kapcsolja az ellenkező állapotba PB0

PORTB | = (1 <

Ellenkező esetben, feltéve, hogy a nulla PB0

(1 <

Aztán megint ellenőrizze az állam a gomb

míg a ((PIND (1< // ha a gomb megnyomása fog futni egy üres ciklus

Szintén ebben a programban, meg lehet oldani a problémát a kapcsolati ugrál. A legegyszerűbb módja a program ismertetése különleges késés. A jitter okozza, hogy a megfelelő nyomócsonk D helyett egy egyszerű átmenet egysége nullára, kapunk egy impulzus sorozat. Ahhoz, hogy eltűnjön ez a program kell, hogy menjen aludni, amint észleli az első nulla bemenet. Készenléti állapotban a program felfüggeszti valamennyi akciót és egyszerűen dolgozzanak ki a késés. Annak érdekében, hogy vezessenek be egy késés késés használat standard könyvtár eljárások util / delay.h.

Mi használja ezt a funkciót, amely végrehajtja a késleltetés:

_delay_ms (200); // 200 ms késleltetéssel

Ez biztosítja a késedelem minden egész szám ezredmásodperc. Továbbá, ez a funkció egyszerűen behelyezi miközben minden egyes ciklus után.

A program kódja:

A cikkben anyagokat a könyvet használták Belov AV „Tanítsd AVR eszközök Fejlesztő”

Kapcsolódó cikkek