/* taste.c */ /* Eine Taste wird entprellt. Mit jedem Tastendruck wird der Zustand des LED umgeschaltet */ /* Definition besonderer Bits mit sbit */ sbit taste1 = 0x90; /* Port 1, Bit 0 */ sbit led1 = 0x91; /* Port 1, Bit 1 */ /* Verwendung von Flags statt char-Variablen spart Speicherplatz */ bit taste1ENTPR; /* entprellte Version von taste1 */ bit taste1UMSCH; /* erzeugt aus dem Tastsignal ein umgeschaltetes Signal */ #define T10MS 1300 main() { led1=0; /* LED ist zunächst ausgeschaltet */ taste1ENTPR = taste1; /* entprelltes Signal = anliegendes Signal */ taste1UMSCH = 0; /* der Umschalter ist in Grundstellung: AUS */ for (;;) { if (taste1ENTPR!=taste1) /* Zustandswechsel wird festgestellt */ { /* Zeitverzögerung, um Prellphase abzuwarten */ int i; for (i=0; i1-Flanke */ { taste1UMSCH=~taste1UMSCH; /* Umpolen */ } } else { /* die zuerst festgestellte Zustandsänderung wird als "Spike" verworfen */ } } } }