【问题标题】:Enable data memory PIC 18F4550启用数据存储器 PIC 18F4550
【发布时间】:2011-04-20 19:06:20
【问题描述】:

我将 microchip 的 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;
}

【问题讨论】:

    标签: microcontroller microchip


    【解决方案1】:

    该器件的数据表似乎表明数据存储器是静态 RAM,并且没有从那里到指令解码逻辑的数据路径,即,数据存储器不能用于存储程序代码以供执行。如果那是你的目标,那你就不走运了。

    在分配易失性存储方面,由于程序内存似乎不包括任何 RAM,我的猜测是 C 编译器会自动从数据 ram 分配所有变量等。

    只剩下“数据”EEPROM 和“程序”闪存之间的选择,用于存储非易失性(或半易失性)数据。在那里您可能需要深入研究文档 - 这可能是通过编译器编译指示或链接器映射文件完成的,也可能是必须通过寄存器间接和显式处理访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      相关资源
      最近更新 更多