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ÀÇ ·¹Áö½ºÅ͵µ ÀØÁö¸»°í ½á³ÖÁö ¾ÊÀ¸¸é ¼öÁ¤ ¹ßÁøÀÚ°¡ Á¤»óÀ¸·Î ¹ßÁøÇÏÁö ¾Ê´Â µîÀÇ ºÒ¾ÈÁ¤ÇÑ »óÅ·ΠµÇ°í ¸¸´Ù.
ÁÖÀÇ 1: Á¤¼ö°¨»ê ¸í·É "SUBLW k"Àº "k-w->w"¸¦ ½ÇÇàÇÑ´Ù.
Z80 µîÀÇ ¾î¼Àºí·¯¿Í ¹Ý´ëÀ̹ǷΠÁÖÀÇÇØ¾ß ÇÑ´Ù.
Âü°í·Î "SUBWF f, d"´Â "f-w->d"¸¦ ½ÇÇàÇÑ´Ù.
±×¸®°í °á°úÀÇ C Ç÷¡±×´Â "0"ÀÏ ¶§ ¸¶À̳ʽºÀ̰í "1"ÀÏ ¶§ Ç÷¯½º·Î, Åë»ó À̰͵µ ¹Ý´ëÀ̹ǷΠÁÖÀÇÇØ¾ß
ÇÑ´Ù.
ÁÖÀÇ 2: "MOVF f, d"´Â Z Ç÷¡±×¿¡ ¿µÇâÇÑ´Ù.
Z Ç÷¡±×¸¦ ºÐ±â ÆÇÁ¤¿¡ »ç¿ëÇÒ ¶§¿¡´Â ¾öÁßÇÑ ÁÖÀǰ¡ ÇÊ¿äÇÏ´Ù.
¹Ý´ë·Î d¸¦ "1"·Î Çϸé f ·¹Áö½ºÅÍÀÇ Á¦·Î Å×½ºÆ®¸¦ ÇÒ ¼ö ÀÖ¾î Æí¸®ÇÏ´Ù.
ÁÖÀÇ 3: TRIS³ª OPTION ·¹Áö½ºÅÍÀÇ ÁöÁ¤½Ã ¾î¼Àºí·¯ÀÇ WARNING ¸Þ½ÃÁö°¡ ³ª¿ÀÁö
¾Êµµ·Ï ÇÏ·Á¸é.
¾î¼Àºí·¯·Î IMPORTÇϴ ǥÁØ ¶óÀ̺귯¸®(P16c84.inc)ÀÇ ÀϺθ¦ Çϱâ¿Í °°ÀÌ ´Ù½Ã¾´´Ù.
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ºñÆ®¹Û¿¡ ¾îµå·¹½º¿¡ ¹Ý¿µµÇÁö ¾Ê´Â´Ù.