여기에서는 PIC16F690을 예로 들어 설명하겠습니다.(사용이유 20PIN, 저가, NOMAL SPEC.)
000번지에서 7FF번지까지 PAGE0
800번지에서 FFF번지까지 PAGE1
로 구성되어있습니다.
(16F887같이 PAGE가 4개인 CHIP도 있습니다.)
PCLATH, .3을 1로 셋하거나 0으로 해서 페이지 설정을 해야함.
- 프로그램의 길이가 길어서 페이지를 넘어가게 될경우(프로그램 확인)
주소 지정을 해서 번지를 옮겨주어야 합니다. (ORG 0x800)
예)
;-----------------------------------;
; MACRO ;
;-----------------------------------;
;매번 뱅크를 옮길때마다 적어주는 게 번거롭기 때문에 미리 매크로 설정을 해둡니다.
SELBANK0 MACRO
BCF STATUS,RP1
BCF STATUS,RP0
ENDM
SELBANK1 MACRO
BCF STATUS,RP1
BSF STATUS,RP0
ENDM
SELBANK2 MACRO
BSF STATUS,RP1
BCF STATUS,RP0
ENDM
SELBANK3 MACRO
BSF STATUS,RP1
BSF STATUS,RP0
ENDM
SELPAGE1 MACRO
BSF PCLATH,.3
ENDM
SELPAGE0 MACRO
BCF PCLATH,.3
ENDM
;--------------------------------------;
; RESET VECTOR ;
;--------------------------------------;
ORG 0x000;프로그램 시작
GOTO PRG_START;인터럽트가 0x004번지로 기본 설정되어있으므로 그 부분을 넘어가서 프로그램 시작부분
;--------------------------------------;
; INTERRUPT ;
;--------------------------------------;
ORG 0x004;인터럽트가 걸리면 무조건 0x004번지로 이동하므로 여기에서 어떤 인터럽트가 걸렸는지 확인해서 처리해줘야합니다.
;--------------------------------------;
; MEMORY PAGE0 ;
; PROGRAM START ;
;--------------------------------------;
PRG_START
SELBANK0; 매크로 설정한 부분을 불러오기(라이팅될 때는 불러온 부분이 전부 적히기 때문에 용량이 커질 수 있습니다. 편하게 하려고 매크로 설정을 막 하다가는 용량이 문제가 될 수 있습니다. 용도에 따라 CALL문을 적절히 사용해 주세요.)
;--------------------------------------;
; MEMORY PAGE1 ;
;--------------------------------------;
ORG 0x800
END
'초보의 아웅다웅 설계하기 > PIC' 카테고리의 다른 글
6. 동기 엣지 검출하기 (0) | 2010.08.02 |
---|---|
5. TMR 사용하기. (0) | 2010.08.02 |
4. 내부 풀업 사용하기 (0) | 2010.08.02 |
3. PCL을 사용하는 데이터테이블 사용시 주의점. (0) | 2010.08.02 |
2. CALL 문 사용시 주의할 점 (0) | 2010.08.02 |