⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spisakbitova.h

📁 pc paralel port programming
💻 H
字号:
// SpisakBitova.h: interface for the CSpisakBitova class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SPISAKBITOVA_H__1D1DCB70_6FBE_4348_AF24_954060C74758__INCLUDED_)
#define AFX_SPISAKBITOVA_H__1D1DCB70_6FBE_4348_AF24_954060C74758__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#pragma warning( disable : 4786 )
#include <vector>

class CSpisakBitova  
{
public:
	CSpisakBitova();
	virtual ~CSpisakBitova();

    // Funkcija dodaje opis bita u spisak.
    // Opis sadrzi sledece podatke :
    //  - 'bitMaska' sadrzi jedinicu na mestu gde treba da se nalazi bit
    //    u masci zajednickoj za sve registre porta
    //  - 'pozicija' sadrzi jedinicu na mestu gde se nalazi bit u registru
    //    (0 za bit najmanje tezine, ...7 za bit najvece tezine registra)
    //  - 'pinInvertovan' definise da li je signal na pinu koji odgovara bitu
    //    invertovan (kad je u registru 0, na pinu je +5V)
    // Razlika izmedju 'bitMaska' i 'pozicija' je sto se maska odnosi na sve
    // registre(npr. LPT ima 3 registra => maska ima ukupno 24 bita), 
    // a pozicija se odnosi na samostalan registar (8 bitova).
    void Dodaj(int bitMaska, int pozicija, bool pinInvertovan);

    // Vraca masku za izdvajanje svih bitova u spisku ('konkatenira' sve bit maske)
    int FormirajMaskuZaSveBitove(void);

    // Vraca poziciju bita u registru za bit sa datom maskom
    int PozicijaBita(int bitMaska);

    // Vraca true ako je pin hardverski invertovan(kada je u registru 0, na pinu je 1 tj. 5V).
    // Ako nije invertovan, vraca false.
    bool PinInvertovan(int bitMaska);

    // Od zadate maske formira novu masku koja odgovara bitu sa najnizom pozicijom.
    // Uzima u obzir samo bitove cija se maska sadrzi u zadatoj masci.
    // Ako nijedan bit spiska nema masku koja se sadrzi u zadatoj masci, vraca 0.
    int IzdvojiMaskuZaBitSaNajnizomPozicijom(int bitMaska);

    // Funkcija invertuje bitove za koje se koristi inverzna logika
    void InvertujPinoveSaInverznomLogikom(int& sadrzaj);

    // Funkcija koju treba pozvati u konstruktoru svakog registra(CONTROL,STATUS,...)
    void PostaviParametre(int pomeraj);

private:
    // definicija podataka o bitu
    struct CBitDef {
        CBitDef()
            : bitMaska(0), pozicija(0), pinInvertovan(false)
        {}

        CBitDef(int maska, int poz, bool invertovan)
            : bitMaska(maska), pozicija(poz), pinInvertovan(invertovan)
        {}

        int bitMaska; // definise polozaj bita u masci zajednickoj za sve registre
        int pozicija; // definise polozaj bita u registru (0 za bit najmanje tezine, ...)
        bool pinInvertovan; // definise da li je signal na pinu koji odgovara bitu
                            // invertovan (kad je u registru 0, na pinu je +5V)
    };

    // sve bit maske zajedno
    int maskaZaSveBitove_m;

private:
    //////////////////////////////////////////////////////////////////////
    // Pomocne funkcije
    //////////////////////////////////////////////////////////////////////

    // Vraca definiciju bita sa datom bit maskom (preko OUT parametra 'bitDef').
    // Ako ne nadje bit sa datom maskom u spisku vraca false.
    bool DajBitDef(int bitMaska, CBitDef& bitDef);

private:
    // spisak maski za pojedine bitove
    typedef std::vector<CBitDef> tSpisakBitova;
    tSpisakBitova spisakBitova_m;

};

#endif // !defined(AFX_SPISAKBITOVA_H__1D1DCB70_6FBE_4348_AF24_954060C74758__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -