Da to moze da bude od pomoci ali u sustini nema nesto preterane potrebe za tim.
Interapt rutina ISR mora (veoma preporucljiva) da se u svakom slucaju koristi.
Kad se vec udje u ISR, par komandi vise-manje ne pravi neku bitnu razliku.
Cak pojedini MCU imaju interno specifican hardware za baratanje sa njima (QE modul, npr STM32F3 i F4 uglavnom imaju), predvidjeni za vrlo brze signale koji rade nezavisno od procesora i posle se samo periodnicno po potrebi cita njihovo stanje.
---
Sto se tice C i C++, kod Keil uVision su skoro svi primeri uradjeni u C++, koriste se objekti i strukture (variable) i ako se to ne razume, to je ogroman hendikep za programera!
Naravno, moze i bez C++ ali onda mora da se poznaje detaljno HW i odprilike se tako onda stize na Asemblerski nivo jer mora da se poznaju svi registri i sta/koji rade.
---
Dalje, sta ovde nije jasno?
Ovo je C jezik, koriste se nizovi i osnovne logicke operacije (shift, and, or)?!
Ako ovo nije jasno, hmm, taj programer je u velikom problemu ...
/* returns change in encoder state (-1,0,1) */
int8_t read_encoder()
{
static int8_t enc_states[] = {0,-1,1,0,1,0,0,-1,-1,0,0,1,0,1,-1,0};
static uint8_t old_AB = 0;
/**/
old_AB <<= 2; //remember previous state
old_AB |= ( ENC_PORT & 0x03 ); //add current state
return ( enc_states[( old_AB & 0x0f )]);
}
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator