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

📄 rom.c

📁 this is a source code for usinf sd card with PIC
💻 C
字号:

#define ROM_SIZE 8192 /* Taille totale de la ROM. */

//*************** VARIABLES GLOBALES ***************//

unsigned int rom_address = 0; /* Adresse des donn閑s pour la
                               * prochaine lecture/閏riture. */

//*************** FONCTIONS "PUBLIQUES" ***************//

/* Lit un short dans la ROM. */
unsigned short rom_read_short(unsigned int addr) {

    return flash_read(rom_address + addr);
}

/* Lit un int dans la ROM. */
unsigned int rom_read_int(unsigned int addr) {

    unsigned int temp;
    
    lo(temp) = rom_read_short(addr++);
    hi(temp) = rom_read_short(addr);

    return temp;
}

/* Lit un long dans la ROM. */
unsigned long rom_read_long(unsigned int addr) {

    unsigned long temp;
    
    lo(temp) = rom_read_short(addr++);
    hi(temp) = rom_read_short(addr++);
    higher(temp) = rom_read_short(addr++);
    highest(temp) = rom_read_short(addr);

    return temp;
}

/* Copie le contenu d'un tampon dans la ROM. */
void rom_write(unsigned int addr,
    unsigned short *buffer, unsigned short length) {

    unsigned short i;
    
    /* Commence un mot de 4 octets. */

    addr += rom_address;

    for( i = addr % 4; i > 0; --i)
        flash_write(addr - i, flash_read(addr - i));

    /* Ecrit les donn閑s qui nous int閞essent. */

    for( i = 0; i < length; ++i)
        flash_write(addr + i, buffer[i]);

    /* Termine le mot de 4 octets en cours. */

    addr += length;

    for( i = 0; i < 4 - addr % 4; ++i)
        flash_write(addr + i, flash_read(addr + i));
}

/* Ecrit un short dans la ROM. */
void rom_write_short(unsigned int addr, unsigned short data) {

    rom_write(addr,&data,1);
}

/* Ecrit un int dans la ROM. */
void rom_write_int(unsigned int addr, unsigned int data) {

    rom_write(addr,(unsigned short*)&data,2);
}

/* Ecrit un long dans la ROM. */
void rom_write_long(unsigned int addr, unsigned long data) {

    rom_write(addr,(unsigned short*)&data,4);
}

/* Initialisation de l'adresse des donn閑s. */
void rom_init(unsigned int addr, unsigned int length) {

    rom_address = ROM_SIZE - addr - length - 4;
}

⌨️ 快捷键说明

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