启用数据存储器PIC 18F4550

| 我正在使用带有C编译器的单片机的PIC18F4550:默认情况下使用\'程序存储器\',但是现在我想使用\'数据存储器\',因为它为我提供了更多的功能,可以实现只是告诉我如何用程序语言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;
}
    
已邀请:
该设备的数据表似乎表明数据存储器是静态存储器,并且没有从那里到指令解码逻辑的数据路径,即,该数据存储器不能用于存储要执行的程序代码。如果那是您的目标,那么您很不幸。 就分配易失性存储而言,由于程序存储器似乎不包含任何RAM,因此我猜测C编译器将自动分配数据ram中的所有变量等。 这样就只能在“数据” EEPROM和“程序”闪存之间进行选择,以存储非易失性(或半挥发性)数据。在这里,您可能必须阅读文档-可能是通过编译器编译指示或链接器映射文件完成的,或者可能是必须通过寄存器间接且显式地处理访问。     

要回复问题请先登录注册