2011-04-20 3 views
2

마이크로 칩의 PIC18F4550을 C 컴파일러와 함께 사용하고 있습니다 : 기본적으로 '프로그램 메모리'가 사용되었지만 이제는 더 많은 기능을 제공하기 때문에 '데이터 메모리'를 사용하고 싶습니다. , 얼마나 프로그램 언어 C.데이터 메모리를 활성화하십시오 PIC 18F4550

에서와 내가 할 수 말해 enyone 수있는 코드 :

#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; 
} 

답변

2

이 장치에 대한 데이터 시트는 데이터 메모리는 정적 램임을 표시하는 것, 그리고 그곳으로부터 지시 디코드 로직까지의 데이터 경로가 없다는 것, 즉, 데이터 메모리는 실행을 위해 프로그램 코드를 저장하는데 사용될 수 없다는 것을 의미한다. 그것이 당신의 목표라면, 당신은 운이 없네.

휘발성 저장 공간을 할당하는 측면에서 프로그램 메모리에 RAM이 포함되어 있지 않기 때문에 C 컴파일러가 데이터 램의 모든 변수 등을 자동으로 할당한다는 것입니다.

비 휘발성 (또는 반 휘발성) 데이터를 저장하기 위해 "데이터"EEPROM과 "프로그램"플래시 중 하나만 선택할 수 있습니다. 여기서 문서를 파헤쳐 야 할 수도 있습니다. 컴파일러 pragma 나 링커 맵 파일을 사용하여 수행 할 수도 있고 레지스터를 통해 간접적으로 명시 적으로 액세스해야 할 수도 있습니다.

+0

답장을 보내 주셔서 감사합니다. – user717262