#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.
1.5.9