#include "piccolo_all.h"
#include "delays.h"
Makródefiníciók | |
#define | SW1_PRESSED() SW1==0 |
#define | SW1_RELEASED() SW1==1 |
Enumerációk | |
enum | STATE12 { WAIT_FOR_PRESS, WAIT_FOR_RELEASE } |
Függvények | |
void | delay_ms (unsigned int d) |
void | main (void) |
Ez a program a véges állapotgép megközelítéssel valósítja meg a LED1 kijelző SW1 nyomógombbal történő vezérlését:
Az állapotgépes megvalósítás előnye az, hogy a nyomógomb lenyomásra/felengedésre várakozás közben nem foglaljuk le a CPU idejét, hanem más tevékenység végzésére is lehetőséget adunk. Itt most LED4-et villogtatjuk "életjelzőként", ~1 Hz-es frekvenciával.
A nyomógomb pergésmentesítését úgy valósítjuk meg, hogy a nyomógomb állapotát csak bizonyos időközönként (~20 ms) vizsgáljuk, így az adott időköznél rövidebb idő alatt bekövetkező többszöri állapotváltást (a kontaktusok pergését) nem érzékeli a programunk.
Hardver igény:
Definíció a(z) ledswitch2.c fájlban.
void delay_ms | ( | unsigned int | d | ) |
Késleltető eljárás, amely a Microchip PIC18 könyvtári eljárásait használja A belső ciklus kb. 1 ms késleltetést végez.
unsigned | int d az előírt várakozási idő, 1 ms egységekben |
Definíció a(z) ledswitch2.c fájl 44. sorában.