½Ã¸®¾ó Åë½ÅÁ¦¾î ¹æ¹ý

1. ½Ã¸®¾ó Åë½ÅÀ̶õ?

"½Ã¸®¾ó Åë½Å"À̶õ ÀϹÝÀûÀ¸·Î ÄÄÇ»ÅÍ ±â±â¸¦ Á¢¼ÓÇÏ´Â ¹æ¹ýÀÇ Çϳª·Î, Á¢¼ÓÇÏ´Â ¼±ÀÇ ¼ö¸¦ »è°¨Çϰí, ¶ÇÇÑ ¿ø°Å¸®±îÁö ½ÅÈ£¸¦ º¸³¾ ¼ö ÀÖµµ·Ï ÇÑ ¹æ½ÄÀ» ¸»ÇÑ´Ù. À̶§ ½ÅÈ£°¡ 1ºñÆ®¸¶´Ù ½Ã¸®¾ó(Á÷·Ä)·Î º¸³»Áö±â ¶§¹®¿¡ ½Ã¸®¾ó Åë½ÅÀ̶ó ºÎ¸¥´Ù.


2. ÆÛ½º³ÎÄÄÇ»ÅÍ¿ÍÀÇ Á¢¼Ó

¿©±â¼­´Â Åë½Å Á¢¼Ó »ó´ë¹æÀ» ÆÛ½º³ÎÄÄÇ»ÅÍ·Î ÇÑ´Ù. ±×·¯³ª, ÀÌ ½Ã¸®¾ó Åë½ÅÀÇ Á¢¼ÓÀº Ç¥ÁØÈ­µÇ¾î ÀÖÀ¸¸ç, "RS-232C"¶ó ºÎ¸£°í Àִµ¥, ´ëºÎºÐÀÇ ÆÛ½º³ÎÄÄÇ»Åͳª ¸ðµ©ÀÌ ÀÌ ±Ô°Ý¿¡ µû¸£°í Àֱ⠶§¹®¿¡ °°Àº ¹æ¹ýÀ¸·Î Á¢¼ÓÇÒ ¼ö ÀÖ´Ù.
ÀÌ Á¢¼Ó¿¡´Â "25ÇÉ DSUB Ä¿³ØÅÍ"³ª "9ÇÉ ¹Ì´Ï DSUB Ä¿³ØÅÍ"¶ó ºÎ¸£´Â Ä¿³ØÅͰ¡ ÀϹÝÀûÀ¸·Î »ç¿ëµÇ°í ÀÖÀ¸¹Ç·Î, ±×°ÍÀ» ÀüÁ¦·Î ¼³¸íÇÑ´Ù.
Ä¿³ØÅÍÀÇ ÇÉ ¹øÈ£¿Í ½ÅÈ£ ¹× °£ÀÌÀûÀÎ »ç¿ë¹ýÀº ¾Æ·¡ Ç¥¿Í °°´Ù.

¹Ì´ÏDSUB
Ä¿³ØÅÍ

25ÇÉ
DSUB

½ÅÈ£ ¸íĪ

°£´ÜÇÑ »ç¿ë¹ý

1

8

CD(Data Carrier Detect)

ÀÔ·Â, »ç¿ëÇÏÁö ¾Ê´Â´Ù

2

3

RD(Receive Data)

ÀÔ·Â, »ó´ë¹æ TD¿¡ Á¢¼Ó

3

2

TD(Transmit Data)

Ãâ·Â, »ó´ë¹æ RD¿¡ Á¢¼Ó

4

20

DTR(Data Terminal Ready)

Ãâ·Â, »ç¿ëÇÏÁö ¾Ê´Â´Ù

5

7

SG(Signal Ground)

±×¶ó¿îµå, »ó´ë¹æ SG¿¡ Á¢¼Ó

6

6

DSR(Data Set Ready)

ÀÔ·Â, »ç¿ëÇÏÁö ¾Ê´Â´Ù

7

4

RTS(Request to Send)

Ãâ·Â, »ó´ë¹æ CTS¿Í Á¢¼Ó

8

5

CTS(Clear to Send)

ÀÔ·Â, »ó´ë¹æ RTS¿Í Á¢¼Ó

9

22

RI(Ring Indicate)

ÀÔ·Â, »ç¿ëÇÏÁö ¾Ê´Â´Ù

 

3. ½Ã¸®¾ó Åë½Å Á¦¾î ÇÁ·Î±×·¥ÀÇ ±¸¼º

¿©±â¼­ ¼Ò°³ÇÏ´Â Åë½Å¿ë ÇÁ·Î±×·¥Àº ŸÀÌ¸Ó ÀÎÅÍ·´Æ®¸¦ »ç¿ëÇϰí ÀÖ´Ù. ÀÌ ÀÎÅÍ·´Æ®¸¦ »ç¿ëÇÔÀ¸·Î½á °¢ ºñÆ®ÀÇ ½ÅÈ£¸¦ ±â´Ù¸®°í ÀÖ´Â µ¿¾È, ÄÄÇ»ÅÍ¿¡´Â ´Ù¸¥ ÀÛ¾÷À» ½Ãų ¼ö ÀÖ´Ù. µû¶ó¼­, Åë½ÅÀ» Çϸ鼭 ´Ù¸¥ ÀÏÀ» ÇÏ·Á´Â °æ¿ì, ¿¹¸¦ µé¸é Ç¥½Ã¸¦ Çϰųª ¸ðÅ͸¦ µ¿ÀÛ½ÃŰ´Â ÀÏÀÌ °¡´ÉÇØÁø´Ù.
Àüü´Â 3°³ÀÇ ÇÁ·Î±×·¥ ¸ðµâ°ú ÇϳªÀÇ º¯¼ö Á¤ÀÇ ºÎºÐÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù.

    (1) º¯¼ö Á¤ÀÇ ºÎºÐ
    Åë½Å ÇÁ·Î±×·¥¿¡¼­ »ç¿ëÇÏ´Â º¯¼ö³ª Á¤¼ö¸¦ Á¤ÀÇÇϰí ÀÖ´Ù. ¿©±â¼­ Áß¿äÇÑ °ÍÀº Åë½Å¼Óµµ¸¦ º¯°æÇϱâ À§ÇÑ ÆÄ¶ó¹ÌÅÍÀÌ´Ù. ¼Óµµ¸¦ ¹Ù²Ù±â À§Çؼ­´Â 2°³ÀÇ ÆÄ¶ó¹ÌÅÍÀÇ °ªÀ» º¯°æÇÏ°í ¾î¼ÀºíÇÏ¿© °íÄ£´Ù.

    (2) ÀÎÅÍ·´Æ® ó¸® ¸ðµâ(INTERRUPT)
    À̰ÍÀº ÀÎÅÍ·´Æ®°¡ µé¾î¿ÔÀ» ¶§, ±×¶§ÀÇ ·¹Áö½ºÅ͸¦ º¸Á¸ÇÑ ÈÄ, °¢ Ç÷¡±×¸¦ º¸°í ¾î¶² »óÅÂÀÇ ÀÎÅÍ·´Æ®ÀÎÁö¸¦ ÆÇÁ¤Çϰí ÇÊ¿äÇÑ Ã³¸®·Î Á¡ÇÁÇÑ´Ù. ¶ÇÇÑ °¢ 󸮰¡ Á¾·áµÈ ÈÄ ÀÎÅÍ·´Æ®°¡ µé¾î°£ °÷À¸·Î µ¹¾Æ°¡±â À§ÇØ º¸Á¸ÇØ µÐ ·¹Áö½ºÅ͸¦ ¿ø·¡´ë·Î µÇµ¹·Á ¸®ÅÏÇÑ´Ù.

    (3) ¼Û½Å ÇÁ·Î±×·¥ ¸ðµâ(PUTCHAR)
    ¼Û½ÅÀº ºñ±³Àû ´Ü¼øÇϸç, ¼Û½Å ¿ä±¸°¡ ÀÖÀ¸¸é ¿ì¼± start bitÀ» Ãâ·ÂÇÏ¿© ÀÏÁ¤½Ã°£ÀÇ Å¸À̸Ӹ¦ ½ºÅ¸Æ®½ÃŲ´Ù. ŸÀ̸ÓÀÇ ÀÎÅÍ·´Æ®°¡ µé¾î¿ÔÀ¸¸é ¼øÂ÷ µ¥ÀÌÅ͸¦ 1ºñÆ®¾¿ ½ÃÇÁÆ®Çϸ鼭 Ãâ·ÂÇÑ´Ù.
    ¸¶Áö¸·À¸·Î stop bit¸¦ ¼Û½ÅÇÏ¿© ¿Ï·áÇÑ´Ù.

    (4) ¼ö½Å ÇÁ·Î±×·¥ ¸ðµâ(GETCHAR)
    ¼ö½Å ó¸®ÀÇ ºÎºÐ¿¡¼­, ¿ì¼± ½ºÅ¸Æ® ÆÞ½º¸¦ ¼ö½ÅÇÒ ¼ö ÀÖµµ·Ï ŸÀ̸Ӹ¦ Ǯī¿îÆ®¿¡¼­ Çϳª ÀûÀº »óÅ·Π¼³Á¤ÇØ µÐ´Ù.
    ±×·¡¼­ ½ºÅ¸Æ® ºñÆ®¿¡ ÀÇÇØ +1 Ä«¿îÆ®Çϸé ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇϰí, ½ºÅ¸Æ® ºñÆ®ÀÇ °ËÃâÀ» ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ´ÙÀ½Àº ÀÏÁ¤½Ã°£¸¶´Ù ŸÀÌ¸Ó ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇϵµ·Ï ÇÏ¿© ±× ¶§¸¶´Ù µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÑ´Ù.
    À̰ÍÀ» ±×¸²À¸·Î ³ªÅ¸³»¸é ¾Æ·§ ±×¸²°ú °°ÀÌ µÈ´Ù.


¿©±â¼­ ¾à°£ ¿¬±¸µÇ¾î ÀÖ´Â °ÍÀº ¿ì¼± ½ºÅ¸Æ® ºñÆ®ÀÇ ÀÎÅÍ·´Æ®°¡ µé¾î¿Ô´Ù¸é, È®ÀÎÇϱâ À§ÇØ 10¥ìs ±â´Ù¸° ´ÙÀ½, ´Ù½Ã Çѹø ÀÔ·ÂÀ» Àоîµé¿© º¸°í, °°Àº ½ÅÈ£¿´´Ù¸é ½ºÅ¸Æ® ºñÆ®·Î °£ÁÖÇÑ´Ù.
´Ù¸£¸é ³ëÀÌÁî·Î ÀÎÅÍ·´Æ®°¡ µé¾î¿Â °ÍÀ¸·Î °£ÁÖÇÏ¿© ¹«½ÃÇϰí, ´ÙÀ½ ½ºÅ¸Æ® ºñÆ®ÀÇ ÀÎÅÍ·´Æ®¸¦ ±â´Ù¸°´Ù.
È®½ÇÈ÷ ½ºÅ¸Æ® ºñÆ®¸¦ ¹Þ¾Æµé¿´´Ù¸é ´ÙÀ½ÀÇ Å¸À̸Ӵ 1.5ºñÆ®ºÐÀÇ ½Ã°£À¸·Î ½ºÅ¸Æ®ÇÑ´Ù.
±×¸®°í time upÀÇ ÀÎÅÍ·´Æ®°¡ µé¾î¿À¸é µ¥ÀÌÅÍ·Î ÀÔ·ÂÀ» ÀоîµéÀδÙ. À̰ÍÀ¸·Î Ʋ¸²¾øÀÌ È®½ÇÇÑ µ¥ÀÌÅ͸¦ ÀоîµéÀÌ°Ô µÈ´Ù. ÀÌÇÏ, 1ºñÆ®ºÐ ½Ã°£ÀÇ Å¸À̸ӷΠ°è¼ÓÇÑ´Ù.

 

 

 

4. º¯¼ö, Á¤¼öÀÇ Á¤ÀÇ

(1) Åë½Å¼Óµµ¿ë ÆÄ¶ó¹ÌÅÍ
Åë½Å¼Óµµ¸¦ °¡º¯À¸·Î Çϱâ À§ÇØ 2°³ÀÇ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇϰí ÀÖ´Ù. ±× °ªÀ» ±¸ÇÏ´Â ¹æ¹ýÀº ¾Æ·¡¿Í °°ÀÌ ÇÑ´Ù.
¿ì¼±, Åë½Å¼Óµµ·ÎºÎÅÍ 1ºñÆ®ÀÇ ÆÞ½ºÆøÀ» ±¸ÇÑ´Ù. ´ÙÀ½¿¡ ¸¶ÀÌÅ©·ÎÄÄÇ»ÅÍÀÇ Å¬·ÏÀ¸·Î ±×°ÍÀ» ³ª´©¾î Ä«¿îÅÍÀÇ °ªÀ» ±¸ÇÑ´Ù(1Ä«¿îÆ®´Â 4Ŭ·ÏºÐ). ±×¸®°í ±× Ä«¿îÆ®°ªÀ» ½ÇÇöÇÏ´Â prescaler¿Í TMR0ÀÇ °ªÀ» ±¸ÇÑ´Ù.
¾Æ·¡ Ç¥´Â ½ÇÁ¦ÀÇ ¿¹À̸ç, Ŭ·ÏÀº 10MHzÀÇ °æ¿ìÀÌ´Ù.


BaudRate

PulseWidth

Counter

prescale

TMR0(BITTMR)

width

300bps

3333.33usec

8333

64(5)

130(7E)

3328usec

1200

833.33

2083

16(3)

130(7E)

832

2400

416.67

1041

8(2)

128(80)

409

4800

208.33

521

4(1)

124(84)

198

9600

104.17

260

2(0)

122(86)

99

 

¿©±â¼­ 4800, 9600bpsÀÇ °æ¿ì¿¡´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇà½Ã°£¿¡ ÀÇÇÑ Áö¿¬ºÐÀ» °øÁ¦ÇÑ °ªÀ¸·Î µÇ¾î ÀÖ´Ù(¾à 6¥ìsºÐ).
¶ÇÇÑ »ó±â prescaleÀÇ °ýÈ£¼ÓÀÇ °ªÀÌ ÇÁ¸®½ºÄÉÀÏ·¯ ¼³Á¤¿ëÀÇ °ªÀ¸·Î µÇ¸ç, À̰ÍÀ» BAUDRATEÀÇ °ªÀ¸·Î ¼³Á¤ÇÑ´Ù.

ÇÁ·Î±×·¥ ¸®½ºÆ®»óÀº ¾Æ·¡¿Í °°ÀÌ µÇ¾î ÀÖ´Ù.

 


 

;
;BAUDRATE: boud rate 300 to 9600 at 10MHz clock.
;  5=300bps  3=1200bps  2=2400bps  1=4800bps  0=9600bps
;
BAUDRATE  SET    0        ;¿©±â¿¡ ÇÁ¸®½ºÄÉÀÏ·¯°ªÀ» ÁöÁ¤ÇÑ´Ù
BITTMR       SET    086H   ;TMR0¿¡ ¼³Á¤ÇÏ´Â °ªÀ¸·Î À§ÀÇ Ç¥¿¡ ³ªÅ¸³½ °ªÀ» ÁöÁ¤ÇÑ´Ù
BITTMR1     SET    050H    ;½ºÅ¸Æ® ºñÆ®ÀÏ ¶§ÀÇ ¾à 1.5ºñÆ®ºÐÀÇ °ª

 

 

(2) ±âŸ º¯¼ö
±âŸ ¹ü¿ëÀ¸·Î »ç¿ëÇÏ´Â º¯¼ö¿Í, Ç÷¡±×·ù´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù.


 

;*************************************
; Define constant module
;*************************************
#DEFINE     TXBUSY      RESULT,0     ;sending
#DEFINE     RXBUSY      RESULT,2     ;receiving
#DEFINE     RECV          RESULT,3     ;receive end
#DEFINE     ERROR        RESULT,4     ;error bit

;**** Define Variables *****
RESULT      EQU           0CH              ;current status
WREG         EQU           0DH              ;wreg save area
SREG          EQU           0EH              ;status reg save area
BITCNT       EQU           0FH               ;send bit counter
EXTRA        EQU           10H               ;stop bit flag
TXREG        EQU           11H              ;send data buffer
RXREG       EQU           12H               ;receive data buffer
CNT2          EQU           13H               ;counter for delay


5. ÀÎÅÍ·´Æ® ó¸® ÇÁ·Î±×·¥

ÀÎÅÍ·´Æ®°¡ µé¾î°¬À» ¶§¿¡ ¿ì¼± ½ÇÇàÇϴ ó¸®ÀÌ´Ù. ¿©±â¼­´Â ·¹Áö½ºÅÍÀÇ ´ëÇÇ, º¹±¸¿Í °¢Á¾ Ç÷¡±×¸¦ º¸°í ¾î¶² ÀÎÅÍ·´Æ®ÀÎÁö¸¦ ÆÇÁ¤ÇÏ¿© °¢°¢ÀÇ Ã³¸®·Î ºÐ±âÇÑ´Ù.
ÀÌ Ã³¸®ÀÇ ¸®½ºÆ®´Â ´ÙÀ½°ú °°´Ù.

 

;****************************************
; Interrupt process module
;****************************************
INTERRUPT                                     ;4¹øÁö¿¡¼­ ¿©±â·Î Á¡ÇÁÇÑ´Ù
                 BTFSS      INTCON,T0IF   ;TMR0ÀÇ ÀÎÅÍ·´Æ®ÀÎÁö È®ÀÎ
RETFIE                                            ;´Ù¸£¸é ¾Æ¹« Àϵµ ÇÏÁö ¾Ê°í ¸®ÅÏÇÑ´Ù
BCF           INTCON,T0IF                   ;TMR0ÀÇ ÀÎÅÍ·´Æ® Ç÷¡±× Ŭ¸®¾î

;**** W register & status register¸¦ ´ëÇÇ
                 MOVWF    WREG             ;W reg¸¦ ´ëÇÇ
                 SWAPF     STATUS,W       ;status¸¦ wreg¿¡ À̵¿
                 MOVWF    SREG              ;status¸¦ ´ëÇÇ
                 BTFSC      TXBUSY          ;¼Û½ÅÁßÀΰ¡?
                 GOTO       TXNEXT          ;¼Û½ÅÁßÀ̶ó¸é ´ÙÀ½ ºñÆ® ¼Û½ÅÀ¸·Î
                 BTFSC      RXBUSY          ;¼ö½ÅÁßÀΰ¡?
                 GOTO       RXNEXT          ;¼ö½ÅÁßÀ̶ó¸é ´ÙÀ½ ºñÆ® ¼ö½ÅÀ¸·Î
                 GOTO       STARTBIT         ;½ºÅ¸Æ® ºñÆ® ÀÎÅÍ·´Æ® 󸮷Î

;**** register¸¦ º¹±Í½ÃÄÑ ÀÎÅÍ·´Æ®°¡ µé¾î°£ Àå¼Ò·Î µ¹¾Æ°£´Ù
RESTORE   SWAPF     SREG,W           ;status ²¨³¿
                 MOVWF    STATUS            ;status º¹±Í
                 SWAPF     WREG,F            ;wreg ²¨³¿
                 SWAPF     WREG,W           ;wreg º¹±Í
                 RETFIE                             ;´ÙÀ½ ÀÎÅÍ·´Æ® Çã°¡ ¸®ÅÏ


6. ¼Û½Å ó¸® ÇÁ·Î±×·¥

¼Û½ÅÀº ŸÀ̸ӷΠÀÏÁ¤½Ã°£¸¶´Ù ÀÎÅÍ·´Æ®¸¦ ³»°í, ±× ¶§¸¶´Ù ¼Û½Å µ¥ÀÌÅÍÀÇ ºñÆ®¸¦ ¼øÂ÷ ¼ÛÃâÇÑ´Ù. ¼ÛÃâÇÏ´Â °÷Àº Ç×»ó RA3ÀÇ Æ÷Æ®ÀÌ´Ù.
¾Æ·¡ ¸®½ºÆ®·Î ¼³¸íÇÑ´Ù.

  1. ¿ì¼±, ¼Û½Å ¿ä±¸°¡ CALLµÇ¸é PUTCHAR 󸮷ΠTXBUSY Ç÷¡±×¸¦ ¼¼Æ®ÇÏ¿© ¼Û½ÅÁßÀ¸·Î Çϸç, °è¼ÓÇØ¼­ ½ºÅ¸Æ® ºñÆ®¸¦ ¼Û½ÅÇÏ¿© ŸÀ̸Ӹ¦ 1ºñÆ®ºÐÀÇ ½Ã°£¿¡ ¼¼Æ®ÇÑ ´ÙÀ½, ½ºÅ¸Æ®½ÃŰ°í³ª¼­ ÀÎÅÍ·´Æ® ´ë±â·Î ÇÑ´Ù(TXSTART).
  2. ŸÀ̸Ӱ¡ count upÇÏ¿© ³¢¾îµé¸é TXNEXT 󸮷ΠºÐ±âÇÏ¿© µ¥ÀÌÅÍÀÇ ¼Û½ÅÀ» 1ºñÆ®¸¶´Ù ÇÑ´Ù. ±× ºñÆ®¸¶´Ù ŸÀ̸Ӹ¦ ¼¼Æ®ÇÏ¿© ÀÎÅÍ·´Æ®¸¦ ±â´Ù¸°´Ù.
  3. ÃÖÈÄÀÇ µ¥ÀÌÅÍ ¼Û½ÅÈÄ¿¡´Â stop bitÀÇ ¼Û½Å(STOPBIT)À¸·Î ºÐ±âÇÏ¿© 1ºñÆ®ºÐÀÇ ½ºÅéºñÆ®¸¦ Ãâ·ÂÇÑ´Ù.
  4. ´ÙÀ½ ÀÎÅÍ·´Æ®·Î ¸ðµÎ Á¾·áÇϰí DONE·Î ºÐ±âÇÏ¿© ÀÎÅÍ·´Æ®¸¦ ±ÝÁö·Î Çϰí Á¾·áÇÑ´Ù.

;************************************
; Transmission process module
;************************************
;¼Û½Å °³½Ã ó¸®
PUTCHAR
               BSF          TXBUSY               ;¼Û½ÅÁß Ç÷¡±×¸¦ ¼¼Æ®
               MOVLW    8                          ;¼Û½Å µ¥ÀÌÅÍ ºñÆ®¼ö¸¦ 8·Î Çϰí
               MOVWF    BITCNT                 ;ºñÆ® Ä«¿îÅÍ¿¡ ¼¼Æ®
               MOVLW    1                          ;½ºÅéºñÆ®¼ö¸¦ 1·Î Çϰí
               MOVWF    EXTRA                  ;Ä«¿îÅÍ¿¡ ¼¼Æ®
               CALL        TXSTART              ;½ºÅ¸Æ® ºñÆ® ¼Û½Å
               BCF          INTCON,T0IF         ;ÀÎÅÍ·´Æ® Ç÷¡±× Ŭ¸®¾î
               BSF          INTCON,T0IE         ;ŸÀÌ¸Ó ÀÎÅÍ·´Æ® Çã°¡
               RETFIE
;**** ½ºÅ¸Æ® ºñÆ® ¼Û½Åó¸® ****
TXSTART
               CLRF        TMR0                    ;ŸÀÌ¸Ó ¼¼Æ®
               BSF          STATUS,RP0          ;page 1
               CLRWDT
               MOVLW     BAUDRATE            ;ÇÁ¸®½ºÄÉÀÏ·¯ ¼¼Æ®
               MOVWF     OPTION_REG
               BCF           STATUS,RP0         ;page 0
               BCF           PORTA,3               ;½ºÅ¸Æ® ºñÆ® ¼¼Æ®
               MOVLW     BITTMR                 ;ŸÀ̸Ӱª ²¨³¿
               MOVWF     TMR0                    ;ŸÀÌ¸Ó ½ºÅ¸Æ®
               RETURN
;****** µ¥ÀÌÅÍ ºñÆ®ÀÇ ¼Û½Åó¸® *****
TXNEXT
               MOVLW      BITTMR                 ;ŸÀÌ¸Ó Àç ½ºÅ¸Æ®
               MOVWF      TMR0
               MOVF         BITCNT                 ;Àüü ºñÆ® Á¾·áÀΰ¡?
               BTFSC        STATUS,Z
               GOTO         STOPBIT               ;Á¾·á½Ã ½ºÅéºñÆ® ¼Û½ÅÀ¸·Î
NEXTTXBIT
               DECF          BITCNT,F              ;ºñÆ® Ä«¿îÅÍ-1
               BSF            STATUS,C             ;µ¥ÀÌÅÍ ºñÆ®¸¦ ½ÃÇÁÆ®
               RRF            TXREG                  ;
               BTFSS        STATUS,C             ;µ¥ÀÌÅÍ ºñÆ®ÀÇ 0, 1¿¡ ÀÇÇØ
                                                             ;RA3¿¡ 0, 1À» Ãâ·Â
               BCF            PORTA,3               ;0 out
               BTFSC        STATUS,C
               BSF            PORTA,3                ;1 out
               GOTO         RESTORE               ;return
;**** ½ºÅéºñÆ® ¼Û½Åó¸® ****
STOPBIT
               MOVF         EXTRA,W                ;½ºÅéºñÆ® ¼Û½ÅÀÌ ³¡³µ´Â°¡?
               BTFSC        STATUS,Z               ;
               GOTO         DONE                     ;¼Û½Å³¡ Á¾·á·Î
               DECF          EXTRA,F                 ;½ºÅéºñÆ® Ä«¿îÅÍ-1
               BSF            PORTA,3                 ;½ºÅéºñÆ® Ãâ·Â
               GOTO         RESTORE                ;return
;*** Àüü µ¥ÀÌÅÍ ¼Û½Å¿Ï·á, Á¾·áó¸® ****
DONE
               BCF            INTCON,T0IE            ;ŸÀÌ¸Ó ÀÎÅÍ·´Æ® ±ÝÁö
               BCF            TXBUSY                  ;¼Û½ÅÁß Ç÷¡±× Ŭ¸®¾î
               GOTO         RESTORE                ;return

 

 

 7. ¼ö½Å ó¸® ÇÁ·Î±×·¥

¼ö½ÅÀº ¾à°£ ó¸® ³»¿ëÀÌ º¹ÀâÇÏÁö¸¸, È帧Àº ´Ü¼øÇÏ´Ù.

  1. ¸ÕÀú ¼ö½Å ¿ä±¸°¡ ÀÖÀ¸¸é GETCHAR·Î ½ºÅ¸Æ® ºñÆ®ÀÇ ¼ö½ÅÁغñ 󸮸¦ ½ÇÇàÇÑ´Ù. À̰Ϳ¡´Â ŸÀ̸Ӹ¦ Ǯī¿îÆ® Çϳª ¹Ù·Î Àü¿¡ ÀÎÅÍ·´Æ® ´ë±â·Î ÇÑ´Ù.
  2. ½ºÅ¸Æ® ºñÆ® ÀԷ¿¡ ÀÇÇØ ŸÀ̸ÓÀÇ ÀÎÅÍ·´Æ®°¡ µé¾î°¡¸é STARTBIT·Î ºÐ±âÇÏ¿© 10¥ìs ±â´Ù¸° ÈÄ, ´Ù½Ã Çѹø µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÏ¿© ½ºÅ¸Æ® ºñÆ®ÀÓÀ» È®ÀÎÇÑ´Ù.
    ¸¸ÀÏ ±×·¸Áö ¾Ê¾Ò´Ù¸é ³ëÀÌÁî¿¡ ÀÇÇÑ ¿À·ù ÀÎÅÍ·´Æ®·Î °£ÁÖÇÏ°í ¾Æ¹«°Íµµ ÇÏÁö ¾ÊÀ¸¸ç, ´ÙÀ½ ½ºÅ¸Æ® ºñÆ® ´ë±â·Î ÇÏ°í ¸®ÅÏÇÑ´Ù(NOISE). È®½ÇÈ÷ ½ºÅ¸Æ® ºñÆ®¿´´Ù¸é ¼ö½ÅÁß Ç÷¡±×(RXBUSY)¸¦ ¼¼Æ®Çϰí, ŸÀ̸ӿ¡ 1.5ºñÆ®ÆøºÐÀÇ Å¸À̸ӰªÀ» ¼¼Æ®Çϸç ÀÎÅÍ·´Æ® ´ë±â·Î ÇÑ´Ù.
  3. ´ÙÀ½ºÎÅÍÀÇ ÀÎÅÍ·´Æ®´Â µ¥ÀÌÅÍ ºñÆ®·Î¼­ µ¥ÀÌÅÍ ¼ö½Å(RXNEXT)À¸·Î ºÐ±âÇÑ´Ù.
    ¿©±â¼­´Â 1ºñÆ®ºÐ ÆøÀÇ ½Ã°£¿¡ ŸÀ̸Ӹ¦ ¸®ÅÏÇÏ°í ¼øÂ÷ µ¥ÀÌÅÍ ºñÆ®ÀÇ ¼ö½ÅÀ¸·Î RXREG¿¡ ÀúÀåÇØ °£´Ù(NEXTRXBIT). ÃÖÈÄÀÇ µ¥ÀÌÅÍ ºñÆ®ÀÇ ´ÙÀ½Àº stop bitÀÇ ¼ö½ÅÀÏ °ÍÀ̹ǷΠ±×°ÍÀ» È®ÀÎÇÑ´Ù. ¸¸ÀÏ ½ºÅéºñÆ®°¡ ¾Æ´Ï¸é ¿À·ù·Î ERROR Ç÷¡±×¸¦ ¼¼Æ®Çϰí Á¾·áÇÑ´Ù. Á¾·á½Ã¿¡´Â ¼ö½ÅÁß Ç÷¡±×(RXBUY)¸¦ Ŭ¸®¾îÇÑ´Ù. ¶ÇÇÑ Á¤»óÀ¸·Î µ¥ÀÌÅ͸¦ ¼ö½ÅÇÒ ¼ö ÀÖ¾úÀ» ¶§¿¡´Â µ¥ÀÌÅÍ ¼ö½Å Ç÷¡±×(RECV)¸¦ ¼¼Æ®ÇÑ´Ù.

  1.  

     

;*************************************
; Receiving process module
;*************************************
GETCHAR
              BSF             RECV                ;µ¥ÀÌÅÍ ¼ö½Å Ç÷¡±× Ŭ¸®¾î
              MOVLW       9                       ;µ¥ÀÌÅÍ ºñÆ®¼ö¸¦ 8·ÎÇϰí
              MOVWF       BITCNT              ;ºñÆ® Ä«¿îÅÍ¿¡ ¼¼Æ®
              CLRF           RXREG              ;µ¥ÀÌÅÍ ¹öÆÛ Ŭ¸®¾î
              BCF             ERROR              ;¿¡·¯ Ç÷¡±× Ŭ¸®¾î
;**** ½ºÅ¸Æ® ºñÆ® ¼ö½Å Áغñó¸® ****
              CLRF           TMR0                 ;ŸÀ̸Ӹ¦ Ãʱ⠼¼Æ®
              BSF             STATUS,RP0       ;page 1
              CLRWDT                               ;clear WDT
              MOVLW       038H                   ;watchdog timer ¸ðµå
              MOVWF       OPTION_REG      ;·Î prescaler¸¦ 1·Î ¼¼Æ®
              BCF             STATUS,RP0       ;page 0
              MOVLW       OFFH                  ;ŸÀ̸Ӹ¦ FF·Î ¼¼Æ®
              MOVWF       TMR0                  ;ŸÀÌ¸Ó ½ºÅ¸Æ®
              BCF             INTCON,T0IF        ;ŸÀÌ¸Ó ÀÎÅÍ·´Æ® Ç÷¡±× Ŭ¸®¾î
              BSF             INTCON,T0IE        ;ŸÀÌ¸Ó ÀÎÅÍ·´Æ® Çã°¡
              RETFIE                                   ;ÀÎÅÍ·´Æ® ´ë±â·Î

;**** ½ºÅ¸Æ® ºñÆ® ÀÎÅÍ·´Æ® ó¸® ****
STARTBIT
              CLRWDT                                 ;
              CALL           TIME10                 ;10¥ìs ´ë±â
              BTFSC         PORTA,4              ;Àç Àб⠽ºÅ¸Æ® ºñÆ®Àΰ¡?
              GOTO          NOISE                  ;´Ù¸¦ ¶§
              BSF             RXBUSY               ;¼ö½ÅÁß Ç÷¡±× ON
;µ¥ÀÌÅÍ ¼ö½ÅÁغñ
              CLRF           TMR0                    ;ŸÀÌ¸Ó ÀçÂ÷ ¼¼Æ®
              BSF             STATUS,RP0         ;page 1
              MOVLW       BAUDRATE            ;ÇÁ¸®½ºÄÉÀÏ·¯ ¼¼Æ®
              MOVWF       OPTION_REG
              BCF             STATUS,RP0          ;page 0
              MOVLW       BITTMR1                ;1.5ºñÆ®ÆøÀÇ ½Ã°£À¸·Î ¼¼Æ®
              MOVWF       TMR0                     ;ŸÀÌ¸Ó ½ºÅ¸Æ®
              GOTO          RESTORE               ;return
;*** ½ºÅ¸Æ® ºñÆ®°¡ ¾Æ´Ò ¶§ÀÇ Ã³¸® ****
NOISE
              MOVLW       OFFH                     ;ŸÀÌ¸Ó ÀçÂ÷ ¼¼Æ®
              MOVWF       TMR0
              GOTO          RESTORE               ;return
;**** µ¥ÀÌÅÍ ºñÆ® ¼ö½Åó¸® ****
RXNEXT
              BSF             STATUS,RP0            ;page 1
              CLRWDT                                     ;ŸÀÌ¸Ó ÀçÂ÷ ¼¼Æ®
              MOVLW        BAUDRATE
              MOVWF        OPTION_REG
              BCF              STATUS, RP0          ;page 0
              MOVLW        BITTMR                   ;1ºñÆ®ÆøÀÇ ½Ã°£À¸·Î ¼¼Æ®
              MOVWF        TMR0                      ;ŸÀÌ¸Ó ÀçÂ÷ ½ºÅ¸Æ®
              DECFSZ        BITCNT,F                ;ºñÆ® Ä«¿îÅÍ-1, Á¾·áÀΰ¡?
              GOTO           NEXTRXBIT             ;´ÙÀ½ µ¥ÀÌÅÍ ¼ö½ÅÀ¸·Î
;*** ½ºÅéºñÆ® ¼ö½Åó¸® ***
              BTFSS           PORTA,4                ;µ¥ÀÌÅÍ ÀÔ·ÂÇÏ°í ½ºÅéºñÆ® È®ÀÎ?
              BSF               ERROR                   ;½ºÅéºñÆ®°¡ ¾Æ´Ò ¶§ ¿¡·¯
              BCF               INTCON,T0IE           ;ÀÎÅÍ·´Æ® ±ÝÁö
              BCF               RXBUSY                 ;¼ö½ÅÁß Ç÷¡±× ¸®¼Â
              BCF               RECV                     ;µ¥ÀÌÅÍ ¼ö½Å Ç÷¡±× ¼¼Æ®
;
;**** ÀÎÅÍ·´Æ® º´·Ä󸮸¦ ½ÇÇàÇÒ ¶§´Â ¿©±â¿¡ ¼ö½Å ¿Ï·á½ÃÀÇ Ã³¸®¸¦ ***
;       Ãß°¡Çϰí, ó¸® ½ÇÇàÈÄ ÀÎÅÍ·´Æ® 󸮷Πµ¹¾Æ°£´Ù.
;             CALL             RECEIVEPROCESS
              GOTO            RESTORE

;**** µ¥ÀÌÅÍ ºñÆ® ¼ö½Åó¸® ***
NEXTRXBIT
              BCF               STATUS,C               ;µ¥ÀÌÅÍÀÇ 0, 1¿¡ ÀÇÇØ RXREG
              BTFSC           PORTA,4                  ;¿¡ 0, 1À» ¼¼Æ®ÇÑ´Ù
              BSF               STATUS,C                ;1 case
              RRF               RXREG,F                  ;set data to RXREG
              GOTO            RESTORE
;***** 10¥ìs Áö¿¬ ŸÀÌ¸Ó *****
TIME10                                                        ;10¥ìs
              MOVLW         7H
              MOVWF         CNT2
T_LP2     DECFSZ         CNT2,F                     ;2+3*7-1=22
              GOTO            T_LP2
              RETURN                                         ;22+1=23


 

[email protected]
copyright : 1998 PROCHIPS TECHNOLOGY INC
Last Updated : 1998. 10. 22