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

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


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

¹Ì´Ï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. ½Ã¸®¾ó Åë½Å Á¦¾î ÇÁ·Î±×·¥ÀÇ ±¸¼º


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

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

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

;
;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. ÀÎÅÍ·´Æ® ó¸® ÇÁ·Î±×·¥


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

  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)¸¦ ¼¼Æ®ÇÑ´Ù.

     

    ;*************************************
    ; 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

     


    ´ÙÀ½ È­¸é         ¸ñÂ÷ È­¸é