PICÀÇ ÇÁ·Î±×·¥ ¸Þ¸ð¸® ±¸Á¶

[ÇÁ·Î±×·¥ ¸Þ¸ð¸®¶õ]

ÇÁ·Î±×·¥ ¸Þ¸ð¸®´Â PICÀÇ ±â´ÉÀ» ½ÇÇöÇϱâ À§ÇÑ ÇÁ·Î±×·¥ ±× ÀÚü¸¦
ÀúÀåÇÏ´Â ¸Þ¸ð¸®·Î, ROM(Read Only Memory)·Î µÇ¾î ÀÖ´Ù.
ÀÌ ¸Þ¸ð¸®¿¡ ½á³ÖÀ» ¶§´Â "PIC ¶óÀÌÅÍ"°¡ »ç¿ëµÈ´Ù.


[ÇÁ·Î±×·¥ ¸Þ¸ð¸®ÀÇ ±¸Á¶]

ƯÈ÷ ÇÁ·Î±×·¥ ¸Þ¸ð¸®ÀÇ ±¸Á¶¿¡ ´ëÇÏ¿© ÀÚ¼¼È÷ »ìÆì º¸±â·Î ÇÑ´Ù.
ÇÁ·Î±×·¥ ¸Þ¸ð¸®ÀÇ ¸ÊÀº ¾Æ·§ ±×¸²°ú °°ÀÌ µÇ¾î ÀÖÀ¸¸ç,
ÇÁ·Î±×·¥ Ä«¿îÅÍ(PC)°¡ 13ºñÆ®ÀÇ ±æÀÌÀ̹ǷÎ,
ÃÖ´ë 8K¹ÙÀÌÆ®ÀÇ ¸Þ¸ð¸® °ø°£À» Á÷Á¢ Ãë±ÞÇÒ ¼ö ÀÖ´Ù.



[¾îµå·¹½ºÀÇ ¹®Á¦¿Í ÇØ°á¹ý]

Àüü 8K¹ÙÀÌÆ®³ª µÇ´Â °ø°£À» ÁغñÇÒ ¼ö´Â ÀÖÁö¸¸,
À­ ±×¸²ÀÇ ÇÏÃø¿¡ ³ªÅ¸³½ ¹Ù¿Í °°ÀÌ GOTO³ª CALL µîÀÇ ¸í·ÉÀ¸·Î
¾îµå·¹½ºÇÒ ¼ö ÀÖ´Â °ø°£Àº ¸í·ÉÀÇ ¾îµå·¹½º ¸®ÅÍ·²ºÎ°¡
11ºñÆ®¹Û¿¡ ¾øÀ¸¹Ç·Î 2K¹ÙÀÌÆ®ÀÇ ¹üÀ§¹Û¿¡ ÇÒ ¼ö ¾ø´Ù.
ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ, "PAGE"¶ó°í ÇÏ´Â °³³äÀÌ »ý°Ü³µ´Ù.
ÀÌ PAGE¶õ ¾Æ·§ ±×¸²¿¡ ³ªÅ¸³½ ¹Ù¿Í °°Àº µ¿ÀÛÀ» ÇÑ´Ù.
Áï, 8K¹ÙÀÌÆ®¸¦ 2K¹ÙÀÌÆ® ´ÜÀ§ÀÇ "PAGE"¶ó°í ÇÏ´Â 4°³ÀÇ ´ÜÀ§·Î ³ª´©¾îÁö°í,
±×¸®°í "PCLATH" ·¹Áö½ºÅ͸¦ Ãß°¡ÇÏ¿© ¼³Ä¡, PCÀÇ »óÀ§ ºñÆ®·Î Ãß°¡Çϰí,
¸í·ÉÀÇ ¾îµå·¹½º ¸®ÅÍ·² 11ºñÆ®¿¡ ÀÌ PCLATH¸¦ ´õÇÏ¿© ÇÕ°Ô 13ºñÆ®ÀÇ ¾îµå·¹½º ±æÀÌ·Î Çϰí ÀÖ´Ù.
ÀÌ·¸°Ô ÇØ¼­ GOTO ¸í·ÉÀ̳ª CALL ¸í·Éµµ Á÷Á¢ 8K¹ÙÀÌÆ®ÀÇ ¸Þ¸ð¸® °ø°£À» Ãë±ÞÇÒ ¼ö ÀÖ°Ô µÈ´Ù.

ÀÌ 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    ;page1À» ÁöÁ¤
                CALL       SUB_P1       ;¼­ºê·çƾÀ¸·Î
                     ---------
                     ---------
                ORG         0x900          ;page1
SUB_1            ---------              ;page¿¡ ÀÖ´Â Åë»óÀÇ
                      ---------              ;¼­ºê·çƾ
                       RETURN


[¾ø´Â ¸Þ¸ð¸®¸¦ ¾×¼¼½ºÇß´Ù¸é?]

8k¹ÙÀÌÆ®ÀÇ ¸Þ¸ð¸® °ø°£ÀÌ ÀÖÁö¸¸, ½ÇÁ¦·Î ¹°¸®ÀûÀ¸·Î´Â
PICÀÇ ½Ã¸®Áî¿¡¼­ ½ÇÀåµÇ¾î ÀÖ´Â ¿ë·®Àº 0.5K¹ÙÀÌÆ®ºÎÅÍ
8K¹ÙÀÌÆ®±îÁö ´Ù¸£°Ô µÇ¾î ÀÖ´Ù.

±×·¡¼­ ¸¸ÀÏ, ½ÇÁ¦·Î´Â ½ÇÀåµÇ¾î ÀÖÁö ¾ÊÀº ¸Þ¸ð¸®¸¦
¾×¼¼½ºÇß´Ù¸é ¾î¶»°Ô µÉ±î?

°á°ú´Â ÇÁ·Î±×·¥ Ä«¿îÅÍÀÇ »óÀ§ ºñÆ®´Â ¹«½ÃµÇ°í,
½ÇÀåµÇ¾î ÀÖ´Â ¾îµå·¹½º°¡ ¾×¼¼½ºµÈ´Ù.
¿¹¸¦ µé¸é Çϱâ¿Í °°ÀÌ ¾ø´Â °ø°£ÀÇ ¾îµå·¹½º »óÀ§´Â 0À¸·Î µÇ¸ç,
½ÇÀåµÇ¾î ÀÖ´Â °ø°£ÀÌ ¾×¼¼½ºµÈ´Ù.

   ½ÇÀå ¸Þ¸ð¸®     ¾×¼¼½º ¾îµå·¹½º     ½ÇÁ¦ÀÇ ¾×¼¼½º
    2K¹ÙÀÌÆ®         0000~07FF             0000~07FF
                          0800~0FFF             0000~07FF
                          1000~17FF             0000~07FF


      ´ÙÀ½ ÆäÀÌÁö·Î                ¸ñÂ÷ ÆäÀÌÁö·Î