#include "piccolo_all.h"
#include "timers.h"
Makródefiníciók | |
#define | USE_OR_MASKS |
#define | SW1_PRESSED() SW1_minta==0 |
#define | SW1_RELEASED() SW1_minta==1 |
#define | SW3 PORTBbits.RB5 |
SW3 kapcsoló RB5-re csatlakozik. | |
Enumerációk | |
enum | ISRSTATE { WAIT_FOR_PRESS = 0, WAIT_FOR_RELEASE } |
enum | MAINSTATE { STATE_RESET = 0, STATE_WAIT_FOR_PNR1, STATE_WAIT_FOR_PNR2, STATE_BLINK, STATE_WAIT_FOR_RELEASE3 } |
Függvények | |
void | hi_isr (void) |
Magas prioritású programmegszakítás kiszolgálása. | |
void | lo_isr () |
Alacsony prioritású programmegszakítás kiszolgálása. | |
void | printNewState (MAINSTATE currentState) |
void | main (void) |
Változók | |
volatile unsigned char | delay |
késleltetés számlálója | |
volatile unsigned char | SW1_minta |
a nyomógomb mintavételezett állapota | |
volatile unsigned char | pnrSW1 |
Press & Release szemafor. | |
ISRSTATE | isrState = WAIT_FOR_PRESS |
ISR állapota. | |
MAINSTATE | LastState = STATE_RESET |
Az utoljára kiírt állapot. |
A program véges állapotgép megközelítéssel valósítja meg a LED1 kijelzőnek az SW1 nyomógombbal és az SW3 kapcsolóval történő vezérlését az alábbiak szerint:
Hardver igény:
Projekt konfiguráció: A program működéséhez a HID_BOOTLOADER szimbólumon kívül az USE_INTERRUPT és az USE_USB szimbólumokat is definiálni kell.
Definíció a(z) ledswitch_tmr0.c fájlban.
void printNewState | ( | MAINSTATE | currentState | ) |
Nyomkövető üzenet kíírása minden állapotváltáskor
currentState | a főprogram aktuális állapota | |
LastState | (globális változó) a főprogram utoljára kiírt állapota |
Definíció a(z) ledswitch_tmr0.c fájl 109. sorában.