AVR Bit Magic: Rozdiel medzi revíziami
Z SensorWiki
Riadok 1: | Riadok 1: | ||
− | |||
V assembleri existuje pre manipuláciu s bitmi dostatok inštrukcií. V prvom cvičení sme napríklad na test stlačenia | V assembleri existuje pre manipuláciu s bitmi dostatok inštrukcií. V prvom cvičení sme napríklad na test stlačenia | ||
tlačidla mohli použiť inštrukciu | tlačidla mohli použiť inštrukciu | ||
− | sbis | + | sbis PIND,3 ; sbis = Skip if Bit Is Set, preskoc ak je PIND.3 nastaveny (=1) |
V jazyku C ale typ bit neexistuje (hoci niektoré kompilátory takýto typ zaviedli), preto môžeme pracovať len s bajtmi, a musíme si nejako vypomôcť. Pri rozumnom zápise však kompilátor rozpozná, že chceme pracovať s bitom a preloží našu konštrukciu správne. | V jazyku C ale typ bit neexistuje (hoci niektoré kompilátory takýto typ zaviedli), preto môžeme pracovať len s bajtmi, a musíme si nejako vypomôcť. Pri rozumnom zápise však kompilátor rozpozná, že chceme pracovať s bitom a preloží našu konštrukciu správne. | ||
+ | |||
+ | Ak chceme testovať stav jedného bitu v bajte, musíme ostatné zakryť, zamaskovať. To sa robí tzv. maskou: | ||
[[Obrázok:MMP_Cvicenie2_Input.png|center]] | [[Obrázok:MMP_Cvicenie2_Input.png|center]] | ||
+ | |||
+ | Príslušná konštrukcia v C potom bude | ||
+ | if ( PIND & 0x04) ... | ||
Verzia zo dňa a času 06:22, 1. október 2010
V assembleri existuje pre manipuláciu s bitmi dostatok inštrukcií. V prvom cvičení sme napríklad na test stlačenia tlačidla mohli použiť inštrukciu
sbis PIND,3 ; sbis = Skip if Bit Is Set, preskoc ak je PIND.3 nastaveny (=1)
V jazyku C ale typ bit neexistuje (hoci niektoré kompilátory takýto typ zaviedli), preto môžeme pracovať len s bajtmi, a musíme si nejako vypomôcť. Pri rozumnom zápise však kompilátor rozpozná, že chceme pracovať s bitom a preloží našu konštrukciu správne.
Ak chceme testovať stav jedného bitu v bajte, musíme ostatné zakryť, zamaskovať. To sa robí tzv. maskou:
Príslušná konštrukcia v C potom bude
if ( PIND & 0x04) ...