ŸÀ̸ÓÀÇ »ç¿ë¹ý

 

1. ÀÎÅ͹ú ŸÀ̸ӷΠ»ç¿ëÇÑ´Ù

ÀÏÁ¤½Ã°£ °£°ÝÀ¸·Î ŸÀ̸ӷκÎÅÍ ÀÎÅÍ·´Æ®¸¦ ¹Þ¾Æ ó¸®ÇÏ´Â °æ¿ì´Â ÀǿܷΠ¸¹ÀÌ ÀÖ´Ù.
±×·¡¼­ ÀÌ ÀÏÁ¤ °£°ÝÀ¸·Î ÀÎÅÍ·´Æ®¸¦ ³Ö´Â À̸¥¹Ù interval timer·Î µ¿ÀÛ½ÃŰ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.

(1) Ä«¿îÅÍÀÇ ¼³Á¤°ªÀ» ±¸ÇÏ´Â ¹æ¹ý
PIC16 ½Ã¸®ÁîÀÇ Å¸À̸Ó(TMR0)´Â CPU ĨÀÇ Å¬·ÏÀ» Åä´ë·Î ÇÏ¿© Ä«¿îÆ®Çϵµ·Ï µÇ¾î ÀÖ´Ù.
µû¶ó¼­ ¾î¶² ÀÎÅ͹ú ½Ã°£À» ³»±â À§ÇÑ Ä«¿îÅͰªÀ» ¾Æ·¡¿Í °°ÀÌ ÇÏ¿© ±¸ÇÑ´Ù.

(ÀÎÅ͹ú½Ã°£)/(CPU Ŭ·Ï¡¿4)

[¿¹] CPUÀÇ ¼öÁ¤¹ßÁøÀÚ°¡ 10MHzÀÏ ¶§¿¡ 20msÀÇ ÀÎÅ͹ú·Î Çϱâ À§Çؼ­´Â,
     20ms¡¿1000/0.1us¡¿4=50000

(2) ÇÁ¸®½ºÄÉÀÏ·¯¿ÍÀÇ °ü°è
TMR0¿¡´Â 8ºñÆ®ÀÇ prescaler°¡ Á¢¼ÓµÇ¾î ÀÖ´Ù.
µû¶ó¼­ 8ºñÆ®+8ºñÆ®·Î ÇÕ°è 16ºñÆ®·Î 65,535±îÁöÀÇ Ä«¿îÆ®¸¦ ÇÒ ¼ö ÀÖ´Ù.
ÇÁ¸®½ºÄÉÀÏ·¯¸¦ µ¿ÀÛ½ÃŰ´Â ¹æ¹ýÀº 2, 4, 8, 16, 32, 64, 128, 256 Ä«¿îÆ®ÀÇ 8Á¾·ù·Î µÇ¾î ÀÖ´Ù.
µû¶ó¼­ Ä«¿îÅÍÀÇ ¼³Á¤ ¹æ¹ýÀº ¾Æ·¡¿Í °°ÀÌ ±¸ÇÑ´Ù.

TMR0ÀÇ Ä«¿îÆ®°ª=ÇÊ¿äÇÑ Ä«¿îÆ®°ª/ÇÁ¸®½ºÄÉÀÏ·¯ ¼³Á¤°ª

[¿¹] À§ÀÇ ¿¹¿¡¼­ 20msÀÇ Å¸À̸ӷΠÇϱâ À§Çؼ­´Â,
        50000/256=¾à195(16ÁøÀ¸·Î C3H)·Î µÈ´Ù.

µû¶ó¼­ Ä«¿îÅÍÀÇ ¼³Á¤°ªÀº °á±¹ ¾Æ·¡¿Í °°ÀÌ µÈ´Ù.
ÇÁ¸®½ºÄÉÀÏ·¯¡æ256 Ä«¿îÆ®

 ±× À̿ܿ¡¼­´Â TMR0ÀÌ ¿À¹öÇ÷ÎÇÑ´Ù.
TMR0¡æÄ«¿îÅÍ´Â ¾÷Ä«¿îÅÍÀ̱⠶§¹®¿¡ FFH-C3H=3CH¿¡¼­ 3C°¡ ¼³Á¤°ªÀ¸·Î µÈ´Ù.

(3) Ä«¿îÅÍÀÇ ¼³Á¤
½ÇÁ¦·Î Ä«¿îÅÍ¿¡ ¼³Á¤°ªÀ» Ãâ·ÂÇϱâ À§Çؼ­´Â ¾Æ·¡¿Í °°ÀÌ ÇÑ´Ù.

 

    ·ÇÁ¸®½ºÄÉÀÏ·¯ÀÇ ¼³Á¤
         BSF       STATUS,RP0     ;ÆäÀÌÁö1·Î Àüȯ
         MOVLW     087H           ;256 Ä«¿îÆ® ¸ðµå°ª
         MOVWF     OPTION_REG     ;¸ðµå ¼³Á¤ Ãâ·Â
         BCF       STATUS,RP0     ;ÆäÀÌÁö0À¸·Î Àüȯ
    ·TMR0À¸·Î Ãâ·Â
         MOVLW     03CH           ;Ä«¿îÆ®°ª ·Îµå
         MOVWF     TMR0           ;TMR0À¸·Î Ãâ·Â

 

(4) ÀÎÅ͹ú ŸÀ̸ӷμ­ÀÇ µ¿ÀÛ
interval timer·Î µ¿ÀÛ½Ã۱â À§Çؼ­´Â ŸÀ̸ÓÀÇ Ä«¿îÆ®¾÷¿¡ ÀÇÇØ ÀÎÅÍ·´Æ®·Î µé¾î ¿ÔÀ» ¶§¿¡ ÀçÂ÷ ŸÀ̸Ӹ¦ ¼³Á¤Çϰí, °è¼Ó ´ÙÀ½ µ¿ÀÛÀ» Çϵµ·Ï ÇÑ´Ù.
 

             ¸ÞÀÎ·çÆ¾              ÀÎÅÍ·´Æ® ó¸® ·çƾ
                ¡é                        ¡é
      ÇÁ¸®½ºÄÉÀÏ·¯ ¼³Á¤       Å¸ÀÌ¸Ó ÀÎÅÍ·´Æ® Ç÷¡±× Ŭ¸®¾î
                ¡é                        ¡é
      TMR0¿¡ Ä«¿îÆ® ¼³Á¤       TMR0¿¡ Ä«¿îÆ®°ª Àç¼³Á¤
                ¡é                        ¡é
      ÀÎÅÍ·´Æ® Çã°¡             -----(´Ù¸¥ ó¸®)
     ¡æ¡æ¡æ¡æ¡æ ¡é                        ¡é
    ¡èÀÎÅÍ·´Æ® ´ë±â ·çÇÁ                RETFIE
     |______    ¡é

 

(5) ½ÇÁ¦ ÄÚµù ¿¹
»ó±âÀÇ È帧¿¡ ÀÇÇØ ½ÇÁ¦·Î ÄÚµùÇÑ ¿¹¸¦ ´ÙÀ½¿¡ ³ªÅ¸³½´Ù.
CPU´Â 10MHzÀ̰í, ÀÎÅ͹úÀº 20msÀÇ ¿¹ÀÌ´Ù.
 

              LIST          P=PIC16F84   ;CPUÀÇ ÁöÁ¤
                INCLUDE  "P16F84.INC"    ;Á¤¼ö ·¹ÀÌºí ÆÄÀÏ
              ORG           0            ;RESETÀÇ ÀÔ±¸
              GOTO       MAIN            ;¸ÞÀÎ·çÆ¾À¸·Î
              ORG           4     ; ÀÎÅÍ·´Æ®ÀÇ ÀÔ±¸
              GOTO       INTR     ;ÀÎÅÍ·´Æ® ó¸® ·çƾÀ¸·Î
    MAIN
              BSF     STATUS,RP0  ;ÆäÀÌÁö1·Î Àüȯ
              MOVLW   087H        ;256 Ä«¿îÆ® ¸ðµå ÁöÁ¤
              MOVWF   OPTION_REG  ;ÇÁ¸®¼Â Ä«¿îÅÍ¿¡ Ãâ·Â
              BCF     STATUS,RP0  ;ÆäÀÌÁö0À¸·Î Àüȯ
              MOVLW   03CH        ;Ä«¿îÆ®°ª ·Îµå
              MOVWF   TMR0        ;TMR0À¸·Î Ãâ·Â
              BSF     INTCON,T0IE ;ŸÀÌ¸Ó ÀÎÅÍ·´Æ® Çã°¡
              BSF     INTCON,GIE  ;Àüü ÀÎÅÍ·´Æ® Çã°¡
    IDLE
              NOP
              (´Ù¸¥ ó¸®)
              GOTO    IDLE        ;ÀÎÅÍ·´Æ® ´ë±â ·çÇÁ
              INTR
              BCF     INTCON,T0I  ;ÀÎÅÍ·´Æ® Ç÷¡±× Ŭ¸®¾î
              MOVLW   03CH        ;Ä«¿îÆ®°ª ·Îµå
              MOVWF   TMR0        ;TMR0¿¡ Ãâ·Â(´Ù¸¥ ó¸®)
              RETFIE              ;ÀÎÅÍ·´Æ® Çã°¡ ¸®ÅÏ

     

´ÙÀ½Àº ŸÀ̸ÓÀÇ »ç¿ë¹ý ±× µÎ ¹øÂ°ÀÌ´Ù.

 


2. Ä«¿îÅÍ·Î »ç¿ëÇÑ´Ù

PICÀÇ Å¸À̸Ӵ ÀÔ·ÂÀ¸·Î ³»ºÎ Ŭ·Ï ½ÅÈ£ À̿ܿ¡, ¿ÜºÎ·ÎºÎÅÍÀÇ ÆÞ½º½ÅÈ£¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
±× ÀÔ·Â ÇÉÀÌ RA4(T0CKI)ÀÌ´Ù. À̰ÍÀ» ÀÌ¿ëÇÏ¸é ¿ÜºÎ ½ÅÈ£ÀÇ Ä«¿îÆ®¸¦ ÇÒ ¼ö ÀÖ¾î, Àοø¼ö Ä«¿îÅͳª Á֯ļö Ä«¿îÅÍ µîÀ» ¸¸µé ¼ö ÀÖ´Ù.
¿©±â¼­´Â ¿ì¼±, ½¬¿î ¿¹·Î Àοø¼ö³ª À̺¥Æ®ÀÇ Ä«¿îÅ͸¦ ¸¸µå´Â ¹æ¹ý°ú, ºñ±³Àû ¾î·Æ´Ù°í ÇÏ´Â Á֯ļö Ä«¿îÅÍ·Î µ¿ÀÛ½ÃŰ´Â ¹æ¹ýÀ» ¼Ò°³ÇÑ´Ù.

 

3. PICÀÇ Ä«¿îÅÍÀÇ ³»ºÎ ±¸¼º

½ÇÁ¦ PICÀÇ ³»ºÎ Ä«¿îÅÍ ±¸¼ºÀº ¾Æ·§ ±×¸²°ú °°ÀÌ µÇ¾î ÀÖ´Ù.
¿©±â¼­ RTE, RTS, PSA¶ó´Â ½ÅÈ£´Â ³»ºÎÀÇ ÀüȯÁ¦¾î½ÅÈ£·Î, OPTION ·¹Áö½ºÅÍ·Î ÁöÁ¤ÇÑ´Ù. Çѹø ÁöÁ¤ÇÏ¸é ±×´ë·Î Àü¿øÀÌ OFFµÉ ¶§±îÁö, Áï RESETÀÌ °É¸± ¶§±îÁö´Â À¯ÁöµÈ´Ù.



¿©±â¼­ °¢ Àǹ̸¦ ¼³¸íÇÑ´Ù.

    ·RTS: ÀÔ·Â Àüȯ
    Ä«¿îÅÍ¿¡ÀÇ ÀԷ½ÅÈ£¸¦ ³»ºÎ Ŭ·Ï·Î ÇÒ °ÍÀÎÁö, ¿ÜºÎ ½ÅÈ£·Î ÇÒ °ÍÀÎÁö¸¦ ÁöÁ¤Çϴµ¥, Ä«¿îÅÍ·Î »ç¿ëÇÒ ¶§¿¡´Â ¿ÜºÎ·Î ÇÑ´Ù.

    ·RTE: ¿¡Áö Àüȯ
    ÀԷ½ÅÈ£ÀÇ »ó½ÂÀÎÁö Çϰ­ÀÎÁö, ¾î´À ¿¡Áö¿¡¼­ Ä«¿îÆ®¾÷ÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. ½ÅÈ£°¡ µé¾î°¬À» ¶§¿¡ count upÇϹǷΠ»ó½Â ¿¡Áö·Î ÇØµÐ´Ù.

    ·PSA: ÇÁ¸®½ºÄÉÀÏ·¯ Àüȯ
    ÇÁ¸®½ºÄÉÀÏ·¯ Ä«¿îÅ͸¦ »ç¿ëÇÒ °ÍÀÎÁö »ç¿ëÇÏÁö ¾ÊÀ» °ÍÀÎÁö¸¦ ÁöÁ¤ÇÑ´Ù. ÇÁ¸®½ºÄÉÀÏ·¯´Â Ä«¿îÅÍ TMR0ÀÇ ¾Õ´Ü¿¡ ºÙ´Â Ä«¿îÅÍ·Î, °í¼ÓÀ¸·Î µ¿ÀÛÇÒ ¼ö ÀÖ´Ù.
    ±× ´ë½Å, ÇÁ¸®½ºÄÉÀÏ·¯´Â ÇÁ·Î±×·¥À¸·Î Àо ¼ö ¾øÀ¸¹Ç·Î °³°³ÀÇ Ä«¿îÆ® Ç¥½Ã´Â ÇÒ ¼ö ¾ø°Ô µÈ´Ù.
    Áï, ÇÁ¸®½ºÄÉÀÏ·¯¸¦ 8Ä«¿îÆ® µ¿ÀÛÀ¸·Î ÁöÁ¤Çϸé 8Ä«¿îÆ® ´ÜÀ§·Î¹Û¿¡ Ç¥ÇöÇÒ ¼ö ¾ø´Ù´Â °ÍÀÌ´Ù. ÇÁ¸®½ºÄÉÀÏ·¯´Â 8ºñÆ® Ä«¿îÅÍ·Î µÇ¾î Àֱ⠶§¹®¿¡ ÃÖ´ë 256 Ä«¿îÆ®ÀÇ ÇÁ¸®½ºÄÉÀÏÀÌ °¡´ÉÇÏ´Ù.
    ÇÁ¸®½ºÄÉÀÏÀÇ µ¿ÀÛ ÁöÁ¤Àº OPTIN ·¹Áö½ºÅÍÀÇ PS0, 1, 2ÀÇ 3ºñÆ®·Î ÇÑ´Ù. 2, 4, 8, 16, 32, 64, 128, 256ÀÇ 8°èÅëÀÇ ÇÁ¸®½ºÄÉÀϰªÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

    ·TMR0: Ä«¿îÅÍ º»Ã¼
    ³»ºÎ Ä«¿îÅÍ º»Ã¼·Î, 8ºñÆ®ÀÇ Ä«¿îÅÍÀÌ´Ù. µû¶ó¼­ À̰͸¸À̸é 256 Ä«¿îÆ®°¡ ÃÖ´ë°ªÀ¸·Î µÈ´Ù.
    ÇÁ¸®½ºÄÉÀÏ·¯ÀÇ ÃÖ´ë¿¡ ¸ÂÃß¾î 16ºñÆ® Áï, 65,535 Ä«¿îÆ®°¡ ÃÖ´ë°ªÀ¸·Î µÈ´Ù.
    Ä«¿îÅÍ¿¡ÀÇ Á¶°Ç ¼³Á¤ µîÀ» ÇßÀ» ¶§¿¡´Â Ç×»ó TMR0Àº zero clearµÈ´Ù. ¶ÇÇÑ Ä«¿îÅͰ¡ ¿À¹öÇ÷ÎÇßÀ» ¶§¿¡´Â overflow flag·Î INTCON ·¹Áö½ºÅͳ»ÀÇ T0IF ºñÆ®°¡ "1"·Î µÈ´Ù.
    ¶ÇÇÑ ÀÎÅÍ·´Æ®¸¦ Çã°¡Çϰí ÀÖÀ¸¸é ÀÌ ½ÃÁ¡¿¡¼­ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÑ´Ù.
    ÀÌ T0IF ºñÆ®´Â ÇÁ·Î±×·¥À¸·Î CLEAR ÇÒ ¶§±îÁö "1" ±×´ë·Î À¯ÁöÇÑ´Ù.
    µû¶ó¼­, ¿À¹öÇ÷Π󸮷ΠÀ̰ÍÀ» 0 CLEARÇÏÁö ¾ÊÀ¸¸é ´ÙÀ½ overflowÀ» ¾Ë ¼ö ¾ø°Ô µÈ´Ù.

 

 

4. Ä«¿îÅÍÀÇ ¼º´É

PICÀÇ ³»ºÎ Ä«¿îÅÍ µ¿ÀÛÀÌ ¾î´À Á¤µµ °í¼ÓÀ¸·Î µ¿ÀÛÇϴ°¡´Â ±Ô°ÝÇ¥¿¡¼­ ¾Æ·¡¿Í °°ÀÌ µÈ´Ù. ÀüÁ¦´Â Ŭ·ÏÀ» 10MHz·Î ÇÑ´Ù.
°á·ÐºÎÅÍ ¸»Çϸé ÇÁ¸®½ºÄÉÀÏ·¯°¡ ¾øÀ» ¶§´Â ÃÖ´ë 2.3MHz, ÇÁ¸®½ºÄÉÀÏ·¯°¡ ºÎÂøµÇ¾úÀ» ¶§´Â ÃÖ´ë 18MHz·Î µÈ´Ù.

    TMR0 Ä«¿îÅÍ º»Ã¼: ÃÖ¼Ò ÆÞ½ºÆø=(Ŭ·Ï»çÀÌŬ)+20ns=420ns ÁÖ±â=2.38MHz
    ÇÁ¸®½ºÄÉÀÏ·¯ º»Ã¼ : ÃÖ¼Ò ÆÞ½ºÆø=50ns(Àü¿ø 5V)=20MHz
    ÇÁ¸®½ºÄÉÀÏ·¯¿Í TMR0ÀÇ Á¶ÇÕÀÏ ¤¨:
    ÃÖ¼Ò ÆÞ½ºÆø=((Ŭ·Ï»çÀÌŬ)+40ns)/(ÇÁ¸®½ºÄÉÀÏ·¯°ª)
    ÇÁ¸®½ºÄÉÀÏ·¯°ªº°·Î °è»êÇϸé,

    =440/2=220nsec=4.54MHz
    =440/4=110nsec=9.09MHz
    =440/8=55nsec=18.1MHz(Ãִ뵿ÀÛ°ª)
    =440/16=27.5nsec=36.3MHZ>20MHz


5. À̺¥Æ® Ä«¿îÅÍ·Î ÇÑ´Ù

¸ÕÀú, Ä«¿îÅÍÀÇ µ¿ÀÛ ¸ðµå¸¦ ¼³Á¤Çϱâ À§ÇÑ Ãʱ⼳Á¤ºÎÅÍ ½ÃÀÛÇÑ´Ù.
 

    [Ãʱ⼳Á¤ ·çƾ

    BSF        STATUS,RP0      ;Set page 1
    MOVLW      068H            ;set to no prescale
    MOVWF      OPTION_REG      ;OPTION register set
    BCF        STATUS,RP0      ;Set Page 0
    CLRF       TMR0            ;Clear TMR0


    [OPTION ·¹Áö½ºÅÍÀÇ ¼³Á¤]

    RBPU        0 : PORTBÀÇ PullUp            =¾øÀ½
    INTEDGE     1 : INT ÀÎÅÍ·´Æ® ½ÅÈ£ÀÇ ¿¡Áö  =»ó½Â
    RTS         0 : ÀÔ·ÂÀÇ ¼±Åà               =A4 ÇÉ ÁöÁ¤
    RTE         0 : TMR0ÀÇ Ä«¿îÆ® ¿¡Áö        =»ó½Â
    PSA         1 : ÇÁ¸®½ºÄÉÀÏ·¯ À¯¹«         =¾øÀ½
    PS1~3       0 : prescaler°ª               =ÁöÁ¤ÇÏÁö ¾ÊÀ½

 

´ÙÀ½¿¡ Ä«¿îÅÍ °á°ú¸¦ ÀоîµéÀÌ´Â ¹æ¹ýÀÌ´Ù.
TMR0¸¸À̸é 8ºñÆ® Ä«¿îÅÍÀ̹ǷΠ256 Ä«¿îÆ®°¡ ÃÖ´ë Ä«¿îÆ®¼öÀÌ´Ù. ±×·¯³ª, overflow flag°¡ Àֱ⠶§¹®¿¡ À̰ÍÀ» »ç¿ëÇϸé ÇÁ·Î±×·¥¿¡ ÀÇÇØ ¿À¹öÇ÷ΠÇ÷¡±×¸¦ Ç×»ó °¨½ÃÇÔÀ¸·Î½á Ä«¿îÅÍÀÇ ¹ÙÀÌÆ®¼ö¸¦ ÀÓÀÇ·Î È®ÀåÇÒ ¼ö ÀÖ´Ù.
¾Æ·¡ ¿¹´Â BYTE0, 1ÀÇ 2¹ÙÀÌÆ® Ä«¿îÅÍ·Î µÈ´Ù.
 

    [¿À¹öÇ÷ΠÇ÷¡±×ÀÇ °¨½Ã ·çƾ]

    LOOP   BTFSS   INTCON,T0IF     ;get overflow flag
           GOTO    SKIP            ;goto not overflow
           BCF     INTCON,T0IF     ;reset T0IF
           MOVLW1                  ;count up data
           GOTO    NEXT
    SKIP   NOP                     ;dumy NOP
           NOP
           MOVLW   0               ;not count up data
    NEXT   ADDWF   BYTE1,F         ;BYTE1+T0IF
           MOVF    TMR0,W          ;get TMR0
           MOVWF   BYTE0           ;set to BYTE0
           GOTO    LOOP


6. Á֯ļö Ä«¿îÅÍ·Î ÇÑ´Ù

ÀÏÁ¤½Ã°£(¿¹¸¦ µé¸é 100msec)¸¸ ¿ÜºÎ½ÅÈ£ÀÇ Ä«¿îÆ®¸¦ ÇÒ ¼ö ÀÖ´Ù¸é Á֯ļö Ä«¿îÅÍ·Î µÈ´Ù. µû¶ó¼­, ¿ÜºÎ¿¡ °ÔÀÌÆ® ȸ·Î¸¦ ¼³Ä¡Çϰí, ÀÏÁ¤½Ã°£À» PICÀÇ ¼ÒÇÁÆ®¿þ¾î·Î ¸¸µé¾î ÀÌ °ÔÀÌÆ®ÀÇ °³Æó¸¦ Á¦¾îÇÑ´Ù.
±×·¯³ª, °ï¶õÇÔ Á¡Àº ÀÌ ÀÏÁ¤½Ã°£À» ¸¸µé°í ÀÖ´Â µ¿¾È¿¡µµ Á֯ļö Ä«¿îÆ®´Â µ¿½Ã¿¡ ²÷ÀÓ¾øÀÌ °è¼ÓÇϵµ·Ï ¼ÒÇÁÆ®¿þ¾î¸¦ µ¿ÀÛ½ÃŰÁö ¾ÊÀ¸¸é ¾ÈµÈ´Ù´Â °ÍÀÌ´Ù.

[Ä«¿îÅÍ µ¿ÀÛ ·çƾ]

Ä«¿îÆ® °á°ú¸¦ BYTE1~2ÀÇ 3¹ÙÀÌÆ®·Î ÀúÀåÇÑ´Ù. prescaler ¾øÀ½ÀÇ ¼³Á¤À¸·Î ÀüÇ×ÀÇ Ãʱ⼳Á¤°ú °°Àº ¼³Á¤À¸·Î ÇÑ´Ù. 100msÀÇ ÀÏÁ¤½Ã°£¸¸ Ä«¿îÆ®Çϱâ À§ÇØ °ÔÀÌÆ®°¡ ºñ¾î ÀÖ´Â ½Ã°£À» ÇÁ·Î±×·¥ ½ºÅܼö·Î Á¦¾îÇÑ´Ù. ¿ÜºÎ °ÔÀÌÆ®ÀÇ Á¦¾î´Â PORTBÀÇ RB0À¸·Î Çϰí ÀÖ´Ù.
 

    MESURE   CLRF    TMR0      ;counter reset
             BSF     PORTB,0   ;open GATE
             CLRF    OVRFLW    ;reset overflow flag
             CALL    LOOP      ;(249996+2steps)
             NOP               ;dumy NOP(249999 steps)
             BCF     PORTB,0   ;close GATE(250000 steps)
             MOVF    TMR0,W    ;get TMR0
             MOVWF   BYTE0     ;set to BYTE0
             RETURN

    ;¿À¹öÇ÷Π°¨½Ã, Ä«¿îÆ®¾÷
    ;ÀÏÁ¤½Ã°£ÀÇ È®º¸(100ms)

    LOOP     MOVLW   08DH        ;loop counter 141
             MOVWF   LPCNT1
    MESLP1   MOVLW   088H        ;set counter 136
             MOVWF   LPCNT2      ;set counter
    MESLP2   BTFSS   INTCON,T0IF ;13 steps loop
             GOTO    DUMY1
             BCF     INTCON,T0IF ;reset T0IF
             MOVLW   1           ; count up
             GOTO    NEXT
    DUMY1    NOP                 ;dumy NOP
             NOP                 ;°°Àº ½ºÅܼö·Î Çϱâ À§ÇØ
             MOVLW   0           ;Ä«¿îÆ®¾÷ ¾øÀ½
    NEXT     ADDWF   BYTE1,F     ;BYTE1+T0IF
             RLF     BYTE1,W     ;carry to d0
             ANDLW   1           ;mask
             ADDWF   BYTE2,F     ;BYTE2+Carry
             DECFSZ  LPCNT2,F    ;check loop end
             GOTO    MESLP2      ;loop
             NOP
    MESLP3   DECFSZ  LPCNT1,F    ;(13*LPCNT2+5)*LPCNT1
             GOTO    MESLP1      ;(13*136+5)*141=249993-1
             RETURN              ;+2=249994

 




 

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