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

📄 sloghex.h

📁 pc loader for 8051 based microcomputers
💻 H
字号:
// SlogHEX.h: interface for the CSlogHEX class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SLOGHEX_H__629435BC_26D4_4E01_9BBB_D897B4E40CEA__INCLUDED_)
#define AFX_SLOGHEX_H__629435BC_26D4_4E01_9BBB_D897B4E40CEA__INCLUDED_

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

#include "../PL3000/PrgDef.h"

const int MAX_BYTES_SLOG = 600; // maksimalna duzina sloga u bajtovima bi trebala da bude 
                                // 255 * 2 (za data) + 13 (za sve ostalo) = 523

class CSlogHEX  
{
public:
    enum ETip {
        UNDEFINED = 9999,
        DATA = 0,
        END_OF_FILE = 1,
        EXTENDED_SEGMENT = 2,
        EXTENDED_LINEAR = 4
    };

public:
	CSlogHEX();
	virtual ~CSlogHEX();

    // Funkcija za inicijalizaciju sloga podacima ocitanim iz datoteke
    bool Inicijalizuj
        (
        PRG::tBajt duzina,
        PRG::tAdresa adresa,
        ETip tip,
        PRG::tBajt* pPodaci,
        UINT duzinaPodatka,
        PRG::tBajt suma
        );
    bool Inicijalizuj
        (
        PRG::tBajt duzina,
        PRG::tAdresa adresa,
        PRG::tBajt tip,
        PRG::tBajt* pPodaci,
        UINT duzinaPodatka,
        PRG::tBajt suma
        );

    // Funkcija za resetovanje sadrzaja sloga
    void Isprazni(void);

    // Funkcija proverava da li je kontrolna suma u redu
    bool ProveriKontrolnuSumu(void);

    // Funkcija vraca dati bajt podatka i njegovu adresu.
    // Zadaje se redni broj bajta (pocev od 0), a podaci se dobijaju preko OUT parametara.
    // Ukoliko dati bajt ne postoji vraca false.
    bool DajBajt(int redBr, PRG::tBajt& bajt, PRG::tAdresa& adresa);

    // Funkcija vraca true ako se radi o DATA slogu
    bool DataSlog(void);

    // Funkcija vraca duzinu sloga
    PRG::tBajt Duzina(void);

    // Funkcija vraca true ako se radi o 'END OF FILE' slogu
    bool EOFSlog(void);

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

    // Funkcija konvertuje dati bajtu u ID tipa
    ETip BajtUTip(PRG::tBajt bajt);

    // Funkcija sracunava kontrolnu sumu sloga
    PRG::tBajt SracunajSumu(void);

    // Funkcija izdvaja visi i nizi bajt date adrese
    void RasclaniAdresuNaBajtove(PRG::tBajt& adresaHI, PRG::tBajt& adresaLO);

private:
    // podaci koji cine slog HEX fajla
    PRG::tBajt duzina_m;
    PRG::tAdresa adresa_m;
    ETip tip_m;
    PRG::tNizBajtova podaci_m;
    PRG::tBajt kontrolnaSuma_m;
};

#endif // !defined(AFX_SLOGHEX_H__629435BC_26D4_4E01_9BBB_D897B4E40CEA__INCLUDED_)

⌨️ 快捷键说明

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