PIC »ç¿ë¹ýÀÇ ¿ä·É

1. Çϵå¿þ¾î¿¡ °üÇÑ °Í

ÁÖÀÇ 1: µ¿ÀÛÀº ÇÏ°í ÀÖ´Â °Í °°Áö¸¸ ºÒ¾ÈÁ¤ÇÏ°í, ¼Õ¿¡ ´êÀ¸¸é ¸ØÃ߰ųª µ¿ÀÛÇÑ´Ù
MCLR ´ÜÀÚÀÇ pull-upÀ» Àؾî¹ö¸° °æ¿ìÀÌ´Ù. MCLRÀº ÀúÇ×À¸·Î Ç®¾÷ÇÏÁö ¾Ê¾Æµµ µ¿ÀÛÇÏ´Â °æ¿ìµµ ÀÖÁö¸¸, ¿ø·¡ ´ÙÀÌ¿Àµå·Î Vss¿¡ Ŭ·¥ÇÁµÇ¾î ÀÖÀ¸¹Ç·Î Ç®¾÷(5K¡­20K¥Ø)ÀÌ ÇʼöÀÌ´Ù.

ÁÖÀÇ 2: RA4 ÇÉÀº ÀÔ·ÂÀ¸·Î »ç¿ëÇÏ´Â °æ¿ì¿¡µµ Ç®¾÷ÀÌ ÇÊ¿äÇÏ´Ù.
RA4´Â Schmitt ¹öÆÛ·Î ¹Þ´Â ³»ºÎȸ·Î·Î µÇ¾î Àֱ⠶§¹®¿¡ ¾ð¶æ º¸±â¿¡ ÀԷ½ÿ¡´Â ±×´ë·Î Á¢¼ÓÇصµ µÉ °Í °°Áö¸¸, ½Ç¼ö·Î, ¹Ýµå½Ã Ç®¾÷À» ÇÏÁö ¾ÊÀ¸¸é Ç×»ó L·¹º§¿¡¼­ÀÇ ÀÔ·ÂÀ¸·Î µÇ°í ¸¸´Ù(5K¡­20K¥Ø).

ÁÖÀÇ 3: PORTB¸¦ ÀԷ¿¡ »ç¿ëÇÒ ¶§¿¡´Â ³»ºÎ Ç®¾÷À» ONÀ¸·Î ÇÑ´Ù.
³»ºÎ Ç®¾÷À» ONÀ¸·Î Çϱâ À§Çؼ­´Â OPTION ·¹Áö½ºÅÍÀÇ Bit 7¿¡ "0"¸¦ ¼¼Æ®ÇÑ´Ù. ÁöÁ¤Àº 8 Æ÷Æ®ºÐ ÀÏ°ýÀÌ´Ù.
±×·¯³ª Ãâ·ÂÀ¸·Î ÁöÁ¤ÇÑ Æ÷Æ®´Â ÀÚµ¿ÀûÀ¸·Î ³»ºÎ Ç®¾÷Àº OFF·Î µÇ±â ¶§¹®¿¡ ÁöÀåÀÌ ¾ø´Ù.

ÁÖÀÇ 4: PORT A, BÀÇ °¢ Æ÷Æ® ÀÔ·Â/Ãâ·ÂÀÇ ÁöÁ¤Àº ·¹Áö½ºÅÍ TRIS A, B·Î ÁöÁ¤ÇÑ´Ù.
"0"¿¡¼­ Ãâ·Â, "1"¿¡¼­ ÀÔ·Â.
ÁÖÀÇ 3, 4¸¦ ½ÇÁ¦·Î ÇÁ·Î±×·¥À¸·Î ½ÇÇàÇÏ·Á¸é Çϱâ¿Í °°ÀÌ ÇÑ´Ù.

        BSF    STATUS,RP0                     ;ÆäÀÌÁö 1À» ÁöÁ¤
        CLRF   TRISA                               ;PortA´Â ¸ðµÎ Ãâ·Â
        MOVLW  0F0H                              ;PortBÀÇ »óÀ§´Â ÀÔ·Â
        MOVWF  TRISB                            ;ÇÏÀ§´Â Ãâ·Â
        BCF    OPTION_REG,NOT_RBPU  ;PORTB Ç®¾÷ ON
        BCF    STATUS,RP0                     ;ÆäÀÌÁö 0À¸·Î µ¹¾Æ°£´Ù


ÁÖÀÇ 5: EEPROMÀÇ rewirte ȸ¼ö ¼ö¸í.
ÇÁ·Î±×·¥ ¿¡¸®¾î´Â ÃÖÀú 100ȸ, µ¥ÀÌÅÍ ¿¡¸®¾î´Â ÃÖÀú 10¸¸È¸ º¸ÁõÀÌ´Ù. ±×·¯³ª µ¥ÀÌÅÍ ¿¡¸®¾î¸¦ Åë»óÀûÀÎ ÇÁ·Î±×·¥ º¯¼ö ¿µ¿ªÀ¸·Î »ç¿ëÇϸé 10¸¸È¸´Â ¹Ù·Î ´Ù »ç¿ëÇØ ¹ö¸®¹Ç·Î, Ưº°È÷ Àü¿ø Â÷´ÜÈÄ ´ÙÀ½ ¹ø ±âµ¿½Ã¿¡ ±× µ¥ÀÌÅ͸¦ ÀÌ¿ëÇÏ·Á°í ÇÏ´Â ¸ñÀûÀ¸·Î »ç¿ëÇÏ´Â °ÍÀÌ ¿ø·¡ÀÇ »ç¿ë¹ýÀÌ´Ù.


ÁÖÀÇ 6: ROM ½á³Ö±â½Ã¿¡´Â ConfigÀÇ ½á³Ö±âµµ ÀØÁö¸»°í
ÇÁ·Î±×·¥À» ROM ¶óÀÌÅÍ·Î PIC¿¡ ½á³ÖÀ» ¶§, ConfigÀÇ ·¹Áö½ºÅ͵µ ÀØÁö¸»°í ½á³ÖÁö ¾ÊÀ¸¸é ¼öÁ¤ ¹ßÁøÀÚ°¡ Á¤»óÀ¸·Î ¹ßÁøÇÏÁö ¾Ê´Â µîÀÇ ºÒ¾ÈÁ¤ÇÑ »óÅ·ΠµÇ°í ¸¸´Ù.

 

2.¼ÒÇÁÆ®¿þ¾î¿¡ °üÇÑ °Í

      OPTION_REG  EQU   H'0081'        H'0001
      TRISA             EQU    H'0085'        H'0005
      TRISB             EQU    H'0086'  ¡æ   H'0006
      EECON1          EQU    H'0088'        H'0008
      EECON2          EQU    H'0089'        H'0009


ÁÖÀÇ 4: ÀÎÅÍ·´Æ® 󸮿¡¼­ Ç÷¡±×ÀÇ ´ëÇǸ¦ ÀØÁö¸» °Í.
ÀÎÅÍ·´Æ® 󸮿¡ µé¾î°£ °÷¿¡¼­ Ç÷¡±×¸¦ ´ëÇÇÇØ µÎÁö ¾ÊÀ¸¸é ÀÎÅÍ·´Æ®ÇÒ ¶§¸¶´Ù °á°ú°¡ º¯ÇÑ´Ù°í ÇÏ´Â ºÒ¾ÈÁ¤ÇÑ Çö»óÀ¸·Î ³ªÅ¸³­´Ù.
Ç÷¡±×ÀÇ ´ëÇÇ¿¡ ´ëÇÑ ±¸Ã¼Àû ÇÁ·Î±×·¡¹Ö ¹æ¹ýÀº Çϱâ¿Í °°´Ù.

INT_ROUTINE
        movwf      WORK_REG        ;W·¹Áö½ºÅÍÀÇ ´ëÇÇ
        swapf      STATUS,W
        movwf      WORK_STATE     ;½ºÅ×ÀÌÅͽº ·¹Áö½ºÅÍÀÇ ´ëÇÇ
            ¡¥¡¥¡¥
            ¡¥¡¥¡¥(ÀÎÅÍ·´Æ®¿¡ °üÇÑ Ã³¸®)
            ¡¥¡¥¡¥
        swapf      WORK_STATE,W
        movwf      STATUS              ;½ºÅ×ÀÌÅͽº ·¹Áö½ºÅÍÀÇ º¹±Í
        swapf      WORK_REG
        swapf      WORK_REG,W     ;W·¹Áö½ºÅÍÀÇ º¹±Í
        retfie                                   ;ÀÎÅÍ·´Æ® ó¸® ¿Ï·á ¸®ÅÏ


ÁÖÀÇ 5: ÇÁ·Î±×·¥ÁßÀÇ º¯¼ö·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ·¹Áö½ºÅÍ ¿¡¸®¾î´Â ÆäÀÌÁö 0ÀÇ ¾îµå·¹½º $0C¡­$2F±îÁöÀÇ 36¹ÙÀÌÆ®.
¾îµå·¹½º $00¡­$0B±îÁö´Â °¢Á¾ ¼³Á¤¿ëÀÇ ·¹Áö½ºÅÍ·Î È®º¸µÇ¾î Àֱ⠶§¹®¿¡ ¹ü¿ëÀÇ º¯¼ö ¿µ¿ªÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº »ó±â ¹üÀ§¿¡¼­¸¸. º¸ÅëÀº ÇÁ·Î±×·¥ÀÇ ÃÖÃÊ¿¡ º¯¼ö ¿µ¿ªÀ¸·Î Çϱâ¿Í °°ÀÌ Á¤ÀÇÇØ µÐ´Ù.

        WORK1    EQU    $0C    ;WORK1ÀÇ ¾îµå·¹½º Á¤ÀÇ
        WORK2    EQU    $0D    ;WORK2ÀÇ ¾îµå·¹½º Á¤ÀÇ
        ¡¥¡¥¡¥


ÁÖÀÇ 6: EEPROM µ¥ÀÌÅÍ ¸Þ¸ð¸® ¿¡¸®¾î¿¡ÀÇ ¸®µå/¶óÀÌÆ®
PIC16C84¿¡´Â 64¹ÙÀÌÆ®ÀÇ EEPROM µ¥ÀÌÅÍ ¸Þ¸ð¸®°¡ ³»ÀåµÇ¾î ÀÖ´Ù. ¿©±â¿¡ ¾²¿©Áø µ¥ÀÌÅÍ´Â Àü¿øÀÌ OFF·Î µÇ´õ¶óµµ Áö¿öÁö´Â ÀÏÀº ¾ø´Ù.
±×·¯³ª ÁÖÀÇÇÒ ÇÊ¿ä°¡ ÀÖ´Â °ÍÀº read/write¿¡ Ưº°ÇÑ ¼ø¼­°¡ ÇÊ¿äÇÏ´Ù´Â Á¡°ú, ¶óÀÌÆ®¿¡´Â ¾à 10msec·Î ½Ã°£ÀÌ ¸¹ÀÌ °É¸°´Ù´Â Á¡ÀÌ´Ù.
read/writeÀÇ ±¸Ã¼ÀûÀÎ ÄÚµùÀº Çϱâ¿Í °°ÀÌ ÇÑ´Ù.
¼­ºê·çƾ Çü½ÄÀ¸·Î ÇÏ°í Àֱ⠶§¹®¿¡ ±×´ë·Î »ç¿ëÇصµ ÃæºÐÇÏ´Ù.

;*********************************
; Read/Write to EEPROM
;*********************************
RD_EEPROM
        MOVF        E_ADRS,W         ;µ¥ÀÌÅÍ ¿¡¸®¾îÀÇ ¾îµå·¹½º ÁöÁ¤
        MOVWF     EEADR               ;Set address register
        BSF          STATUS,RP0      ;Set to page 1
        BSF          EECON1,RD        ;Start read
        BCF          STATUS,RP0      ;Return to page 0
        MOVF        EEDATA,W         ;W·¹Áö½ºÅÍ¿¡ µ¥ÀÌÅÍ ²¨³»±â
        RETURN
WR_EEPROM
        BCF          STATUS,RP0      ;Set to page 0
        MOVF        E_ADRS,W         ;µ¥ÀÌÅÍ ¿¡¸®¾îÀÇ ¾îµå·¹½º ÁöÁ¤
        MOVWF     EEADR               ;Address set
        MOVF        E_DATA,W         ;½á³Ö´Â µ¥ÀÌÅÍ
        MOVWF     EEDATA             ;Data set
        BSF          STATUS,RP0      ;Set to Page 1
        BSF          EECON1,WREN   ;Set WR Enable
        MOVLW     55H                    ;Write Sequence
        MOVWF     EECON2             ;Start write
        MOVLW     0AAH
        MOVWF     EECON2
        BSF          EECON1,WR        ;Go write
WR_LP                                        ;½á³Ö±â È®ÀÎ ´ë±â ·çÇÁ
        BTFSC      EECON1,WR        ;Check Write end
        GOTO       WR_LP
        BCF          STATUS,RP0       ;Return to page 0
        RETURN
        (ÁÖ) E_ADRS¿Í E_DATA´Â º¯¼öÀÌ´Ù.


ÁÖÀÇ 7: ½ºÅÃÀÇ ±íÀÌ´Â 8·¹º§±îÁö.
ÀÌ°ÍÀº CALL ¸í·É°ú ÀÎÅÍ·´Æ®¿¡ ÀÇÇÑ Á¡ÇÁ½Ã¿¡ stack area¿¡ º¹±Í¹øÁö¸¦ º¸Á¸ÇÑ´Ù.
µû¶ó¼­, Á¡ÇÁÇÏ´Â °÷ Áß¿¡¼­ ´Ù½Ã CALL ¸í·ÉÀ» »ç¿ëÇÑ´Ù°í ÇÏ´Â nestingÀº 8·¹º§±îÁö¶ó°í ÇÏ´Â Á¦ÇÑÀÌ ÀÖÀ¸¹Ç·Î ÁÖÀÇ.


ÁÖÀÇ 8: ¹ÙÀ̳ʸ® Äڵ忡¼­ 7¼¼±×¸ÕÆ®·ÎÀÇ º¯È¯
7¼¼±×¸ÕÆ® LED¸¦ Á÷Á¢ PICÀÇ Æ÷Æ®·ÎºÎÅÍ µå¶óÀ̺êÇÏ´Â °æ¿ì¿¡ ³»ºÎ ¿¬»êÀ» binary·Î ½ÇÇàÇÏ¿© °á°ú¸¦ Ãâ·ÂÇÒ ¶§ÀÇ º¯È¯ ¼­ºê·çƾÀÌ´Ù.
º» ¿¹´Â Æ÷Æ® BÀÇ ºñÆ® 1ºÎÅÍ 7¿¡ Ãâ·ÂÇÏ°í ºñÆ® 0Àº »ç¿ëÇÏÁö ¾Ê´Â °ÍÀ¸·Î ÇÏ°í ÀÖ´Ù.
¼­ºê·çƾÀ» ºÎ¸£±â Àü¿¡ W·¹Áö½ºÅÍ¿¡ °ªÀ» ·ÎµåÇØ µÐ´Ù.
º¹±Í¿¡´Â W ·¹Áö½ºÅÍ¿¡ 7¼¼±×¸ÕÆ®¿ëÀÇ Ãâ·Â µ¥ÀÌÅÍ°¡ ³ª¿Â´Ù.
±×¸®°í, µ¥ÀÌÅÍ°¡ 0ÀÌ°í °Ô´Ù°¡ blankingÀÇ ÁöÁ¤ÀÌ ÀÖ´Â °æ¿ì¿¡´Â Àü ºñÆ® OFF, Áï blank¸¦ µ¹·ÁÁÖ°Ô µÈ´Ù.
         _______
        |  PB0  |--- NOT USE
        |  PB1  |--- a
        |    |    |     |    7SEGMENT LED
        |  PB7  |--- g
        |______|

;*************************************************
; Convert Binary to 7SEG Code
; Display PORT B is shifted 1 bit to left,
; then data is shifted 1 bit left
;*************************************************
GET_7SEG
            BTFSS        BLANK,0            ;BLANK flag check
            GOTO         NOTBLNK
            ANDLW        0FH                  ;Mask upper 4bits
            BTFSC        STATUS,Z         ;0 check
            RETLW        0                      ;BLANK return
            BCF            BLANK,0            ;BLANK flag reset
NOTBLNK
            ANDLW        0FH                  ;Mask upper 4bits
            ADDWF        PCL,F               ;Add to PC reg
            RETLW        B'01111110'      ;Code 0
            RETLW        B'00001100'      ;Code 1
            RETLW        B'10110110'      ;Code 2
            RETLW        B'10011110'      ;Code 3
            RETLW        B'11001100'      ;Code 4
            RETLW        B'11011010'      ;Code 5
            RETLW        B'11111010'      ;Code 6
            RETLW        B'00001110'      ;Code 7
            RETLW        B'11111110'      ;Code 8
            RETLW        B'11001110'      ;Code 9
            RETLW        B'10000000'      ;Code A
            RETLW        B'10000000'      ;Code B
            RETLW        B'10000000'      ;Code C
            RETLW        B'10000000'      ;Code D
            RETLW        B'10000000'      ;Code E
            RETLW        B'10000000'      ;Code F


ÁÖÀÇ 9: BSF, BCF ¸í·É »ç¿ë¹ýÀÇ ÁÖÀÇ
BSF, BCF·Î Æ÷Æ®ÀÇ Ãâ·ÂÀ» ÇÏ´Â °æ¿ì, ¿¹¸¦ µé¸é BSF  POTRB,RB0¶ó´Â ¸í·ÉÀ» ½ÇÇàÇÏ¸é ½ÇÁ¦ µ¿ÀÛÀº Çϱ⠼ø¼­·Î ½ÇÇàµÈ´Ù.
¡¤¿ì¼± Æ÷Æ® BÀÇ Àü ºñÆ®¸¦ CPU¿¡ ÀоîµéÀδÙ
¡¤CPU¿¡¼­ ºñÆ® 0¿¡ 1À» ¼¼Æ®ÇÏ´Â ¿¬»êÀ» ÇÑ´Ù
¡¤¿¬»ê °á°ú¸¦ Æ÷Æ® B¿¡ Ãâ·ÂÇÑ´Ù

Áï Ãâ·ÂÇϱâ Àü¿¡ ÀÔ·ÂÀ» ½ÇÇàÇÑ´Ù. ±×¶§, °¡²û Ãâ·ÂÀü¾ÐÀÌ ³·Àº ºÎÇÏÀÇ °æ¿ì(Æ®·£Áö½ºÅÍÀÇ Á÷Á¢ µå¶óÀ̺ê¿Í °°Àº °æ¿ì)¿¡´Â Ãâ·Â¿¡ High¸¦ Ãâ·ÂÇÏ°í À־ ¾à 0.7V Á¤µµ¹Û¿¡ µÇÁö ¾ÊÀ¸¹Ç·Î ±× Æ÷Æ®¸¦ ÀÔ·ÂÇϸé Low·Î °£ÁÖÇØ ¹ö¸°´Ù.
µû¶ó¼­, ¿¬»ê °á°ú¸¦ Ãâ·ÂÇÒ ¶§¿¡ Low·Î¼­ À缼ƮÇϱ⠶§¹®¿¡ High¸¦ Ãâ·ÂÇÏ°í ÀÖ´ø Á÷Á¢ °ü°è¾ø´Â ºñÆ®°¡ °©ÀÚ±â Low·Î µÇ¾î ¹ö¸°´Ù°í ÇÏ´Â ¿Àµ¿ÀÛÀ¸·Î µÈ´Ù.
ÀÌ°ÍÀ» ÇÇÇϱâ À§Çؼ­´Â MOVWF ¸í·ÉÀ¸·Î Ç×»ó ÀǽÄÇÔ°ú µ¿½Ã¿¡ Ãâ·ÂÇØ ÁÙ ÇÊ¿ä°¡ ÀÖ´Ù.


ÁÖÀÇ 10: °£Á¢ ¾îµå·¹½º ÁöÁ¤ »ç¿ë¹ýÀÇ ÁÖÀÇ
°£Á¢ ¾îµå·¹½º¸¦ »ç¿ëÇÒ ¶§, ¾îµå·¹½º¸¦ ¿¬»êÀ¸·Î ±¸ÇÒ ¶§¿¡´Â ¿¬»ê °á°ú´Â 8ºñÆ®¹Û¿¡ ¾îµå·¹½º¿¡ ¹Ý¿µµÇÁö ¾Ê´Â´Ù.


¸ñÂ÷ È­¸é