Включить память данных PIC 18F4550 - PullRequest
2 голосов
/ 20 апреля 2011

Я использую PIC18F4550 из микрочипа с компилятором c: по умолчанию используется «память программ», но теперь я хочу использовать «память данных», потому что она дает мне больше функциональности, может, просто скажу мне, как я могу к этому на языке программы C.

Это код:

#pragma code
/******************************************************************************/

void main (void)
{   

    TRISD = 0x00;               // PORTD  als uitgang
    TRISB = 0b00110000;         // RB4 en RB5 als ingang
    TRISA = 0x00;               // RA output

    RCONbits.IPEN = 0;          // prioriteit uit
    INTCONbits.GIE = 1;         // enable interrupt
    INTCONbits.RBIE = 1;        // interrupt portB aan

    while(1)
    {   
        _asm sleep _endasm  
    }
}

#pragma interrupt ISR
void ISR (void)
{
    int rood[] = {0,0,1,0,1,0,1,0,1,0,1,1,1,0,0,0,0,1,1,0,1,0,1,0,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,1,0,0,0,1,1,1,1,0,1,1,};

    if (INTCONbits.RBIF==1)
    {
        if(PORTBbits.RB5==0)        // S3 ingedrukt ?
        {
            int i = 0;
            int b;
            do {
                LATAbits.LATA2 = rood[i];
                LATDbits.LATD1 ^= 1;
                b = 0;
                do {
                    b++;
                }while(b <= 1500);

                i++;
            }while(rood[i] <= 50);

            //LATDbits.LATD1 ^= 1;      // D2 togglen

        }

    }   
    INTCONbits.RBIF = 0;
}

1 Ответ

2 голосов
/ 20 апреля 2011

Таблицы данных для этого устройства, по-видимому, указывают на то, что Память данных является статической памятью, и что оттуда нет пути передачи данных к логике декодирования инструкций, т.е. память данных не может использоваться для хранения программного кода для выполнения. Если это было вашей целью, вам не повезло.

С точки зрения выделения энергозависимой памяти, поскольку в памяти программы, похоже, нет никакой оперативной памяти, я предполагаю, что компилятор C автоматически выделит все переменные и т. Д. Из памяти данных.

Это оставляет только выбор между EEPROM «data» и «программной» флэш-памятью для хранения энергонезависимых (или полулетучих) данных. Там вам, возможно, придется покопаться в документации - это может быть сделано с помощью прагм компилятора или файла карты компоновщика, или может случиться так, что доступ должен обрабатываться косвенно и явно через регистры.

...