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< 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