마하전자기술연구소 LOGO

제품검색 고객센터053-604-2355
기술자료실

Home > 기술자료실 기술자료실

제 목 2) 프로그람메모리
첨부파일


PIC의 프로그램메모리 구조

【프로그람메모리란? 】

프로그람메모리는 PIC의 기능을 실현하기 위한 프로그램
그것을 격납하는 메모리로, ROM(Read Only Memory)와
되어 있습니다.
이 메모리에의 기입에는, 「PIC 라이터」가 사용됩니다.


【프로그람메모리의 구조】

특히 프로그람메모리의 구조에 대해 자세하게 봐 갑니다.
프로그람메모리의 맵은 밑그림과 같이 되어 있어 프로그
램 카운터(PC)가 13비트의 길이가 있으므로, 최대 8 K
아르바이트의 메모리 공간을 직접 취급할 수가 있습니다.



【주소의 문제와 해결법】

전부 8 k아르바이트의 공간을 준비 되어는 있습니다만, 윗 그림
의 아래 쪽에 나타내는 것처럼, GOTO나 CALL등의 명령으로 주소 성과
공간은, 명령의 주소 리터럴부가 11비트 밖에 없기 때문에
2 K아르바이트의 범위 밖에 할 수 없습니다.
이 문제를 해결하기 위해(때문에), 「PAGE」라고 하는 개념이 태어났습니다.
이 PAGE와는 밑그림에 나타내는 것 같은 기능을 합니다.
즉, 8 K아르바이트를 2 K아르바이트 단위의 「PAGE」라고 불리는 4개의
단위로 나누어 한층 더 「PCLATH」레지스터를 추가해 마련해 PC의
상위 비트로서 추가해, 명령의 주소 리터럴 11비트에,
이 PCLATH를 더해 합계 13비트의 주소장으로 하고 있습니다.
이것으로 GOTO 명령도, CALL 명령도 직접 8 k아르바이트의 메모리 공간
(을)를 취급할 수가 있는 것처럼 됩니다.

이 PCLATH의 기능을 밑그림으로 자세하게 가리키고 있습니다.
  (PCLATH=Program Counter Latch High)

(1) ADDWF  PCL등의 명령때

하위 8비트의 PCL분은
연산 결과가 로드 되어
상위 5비트분은 PCLATH
(으)로부터 로드 되어 13비트
의 주소장으로 한다.

(2) GOTO, CALL 명령때

하위 11비트분은
명령의 리터럴이
사용되어 상위 2비트
분은, PCLATH가
사용되어 13비트
의 주소로서
실행된다.






(3) RETURN, RETFIE, RETLW 명령때

스탁크메모리보다 13비트
하지만 직접 되돌려진다.
따라서 이 명령때에는
PCLATH는 불요.



【프로그래밍 테크닉】

전메모리 공간을 대상으로 했을 때의 프로그래밍의 방법을
설명합니다.

(1) 다른 PAGE의 써브루틴을 CALL 하는 방법
  현재의 PAGE로부터 다른 PAGE에 있는 써브루틴을 사용하는 경우
  에는 아래와 같은님이 코딩 합니다.

        MOVLW   HIGH (SUB_1)   ;써브루틴의
                    상위 주소
     MOVWF  PCLATH  ;상위를 PCLATH에
     CALL   SUB_1  ;써브루틴에
     ---------
     ---------
       
SUB_1   ---------     ;별page에 있는 통상의
     ---------     ;써브루틴
     RETURN

(2) 직접 PCLATH를 설정하는 방법
  PCLATH는 SFR로서 액세스 할 수 있습니다. 거기서 PCLATH
  (을)를 직접 설정해, 그 후 CALL나 GOTO 명령을 실행합니다.
  이 때,PCLATH를 설정해도 그것이 유효하게 되는 것은
  다음의 명령의 실행시라고 하는 것이 포인트입니다.

  또 RETURN 명령때는 모두 스택으로부터 돌아오므로
  PCLATH의 설정은 필요 없습니다.

     ORG   0x500
     BSF   PCLATH, 3  ;page 1을 지정
     CALL   SUB_P1  ;써브루틴에
     ---------
     ---------
     ORG   0x900   ;page1  
SUB_1   ---------     ;별page에 있는 통상의
     ---------     ;써브루틴
     RETURN

【없는 메모리를 액세스 하면(자)? 】

8 k아르바이트의 메모리 공간이 있습니다만, 실제로 물리적으로는
PIC의 시리즈에 의해 실장되고 있는 용량은 0. 5 k아르바이트
(으)로부터 8 k아르바이트까지 차이가 납니다.
거기서, 만약, 실제로는 실장되어 있지 않은 메모리를 액세스
하면 어떻게 되는 것일까요?

결과는, 프로그램 카운터의 상위 비트는 무시되어
실장되고 있는 주소가 액세스 됩니다.
예를 들면 아래와 같이 없는 공간의 주소 상위는 0으로 여겨지고
실장되고 있는 공간이 액세스 됩니다.

 실장 메모리아크세스아드레스 실제의 액세스
 2 k아르바이트    0000~07FF     0000~07FF
          0800~0FFF     0000~07FF
          1000~17FF     0000~07FF

목록보기

www.1chip.com, www.1chip.co.kr
www.micom114.com
자료실바로가기

대구광역시 북구 산격2동 1629 산업용재관 10동 13호 (2층) / Tel. 053-604-2355 / Fax. 053-383-2354 / E-mail. maha@paran.com