我正在使用带有c编译器的微芯片PIC18F4550:默认情况下使用'程序存储器',但现在我想使用'数据存储',因为它给了我更大的功能,可以enyone告诉我怎么能用程序语言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;
}
答案 0 :(得分:2)
此设备的数据表似乎表明数据存储器是静态RAM,并且没有从那里到指令解码逻辑的数据路径,即数据存储器不能用于存储程序代码以供执行。如果这是你的目标,那你就不走运了。
在分配易失性存储方面,由于程序存储器似乎不包含任何RAM,我猜测C编译器会自动从数据RAM中分配所有变量等。
只留下“数据”EEPROM和“程序”闪存之间的选择,用于存储非易失性(或半易失性)数据。在那里你可能需要深入研究文档 - 它可能是由编译器编译指示或链接器映射文件完成的,或者可能是访问必须通过寄存器间接和显式处理。