¸¶ÇÏÀüÀÚ±â¼ú¿¬±¸¼Ò LOGO

Á¦Ç°°Ë»ö °í°´¼¾ÅÍ053-604-2355
±â¼úÀÚ·á½Ç

Home > ±â¼úÀÚ·á½Ç ±â¼úÀÚ·á½Ç

Á¦ ¸ñ 10. PC¿ÍÀÇ Æз¯·¼ Åë½Å Á¢¼Ó
÷ºÎÆÄÀÏ


PC¿ÍÀÇ Æз¯·¼ Åë½Å Á¢¼Ó ¡¡

¡¼PC¿Í Á¢¼Ó¡½

PIC¿Í PC¸¦ Á¢¼ÓÇØ Åë½ÅÀ» ÇÒ ¼ö ÀÖ°Ô µÇ¸é, ¿©·¯°¡Áö
ÀÀ¿ë¹üÀ§°¡ »ý°¢µÇ¾î Áñ°Å¿òµµ ¹èÁõÇÕ´Ï´Ù.
¿©±â¿¡¼­´Â, PC¿Í ÇÁ¸°ÅÍ ÀÎÅÍÆäÀ̽º¿¡ ÀÇÇØ Á¢¼ÓÇÏ´Â ¹æ¹ý
(À»)¸¦ ¼³¸íÇÕ´Ï´Ù.
ÀÌ ¼Û¼ö½Å¿¡´ÂÇڵ彦ÀÌÅ© Åë½Å ¹æ½ÄÀ̶ó°í ÇÏ´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù¸¸,
¿©±â¿¡¼­´Â Á» ´õ °£´ÜÇÑ ¹æ¹ýÀ» »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù.

¡¼ÇÁ¸°ÅÍ ÀÎÅÍÆäÀ̽º Á¢¼Ó¡½

PCÀÇ ÇÁ¸°ÅÍ ÀÎÅÍÆäÀ̽º´Â, DOS/V±âÀÇ °æ¿ì, Æз¯·¼
ÀÇ ½Ö¹æÇâ Åë½ÅÀ» ÇÒ ¼ö ÀÖ°Ô µÇ¾î ÀÖ½À´Ï´Ù. (ÃÖ±ÙÀÇ PC98xxNXµµ)
°Å±â¼­, ÀÌ ÇÁ¸°ÅÍ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇØ 8ºñÆ® Æз¯·¼·Î PIC
(¿Í)°ú ½Ö¹æÇâ Åë½ÅÀ» ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.


¿ì¼± PCÃøÀÇ ÇÁ¸°ÅÍ ÀÎÅÍÆäÀ̽ºÀÇ »ó¼¼ÇÑ °Í¿¡ ´ëÇÏ¿©´Â, ´Ù¸¥
Çڵ彦ÀÌÅ©ÀÇ ÇÁ¸°ÅÍ ÀÎÅÍÆäÀ̽º¿¡ »ó¼¼°¡ ÀÖÀ¸¹Ç·Î ±× ÂÊÀ»
ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
¿©±â¼­ ÁÖÀÇ°¡ ÇÊ¿äÇÑ (ÀÏ)°ÍÀº, STROBE¿Í BUSYÀÇ ³í¸® ¹ÝÀü¿¡ °üÇÑ
ÀÏ·Î,

¡¡¡¡PCÃøÀº STROBE´Â Á¤·Ð¸®·Î Ãâ·ÂµÇ¾î BUSY´Â ºÎ³í¸®
¡¡¡¡±×¸®°í ÀԷµÇÁö¸¸, PICÃøÀÇ ½ÅÈ£´Â ¸ðµÎ Á¤·Ð¸®·Î ±×´ë·Î
¡¡¡¡ÀÔÃâ·ÂµÈ´Ù.

±×·¸´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù.

µû¶ó¼­, ¹Ø±×¸²°ú °°ÀÌ PIC¿Í PC¸¦ Á¢¼ÓÇßÀ» ¶§¿¡´Â, ÀÌ ³í¸®ÀÇ
Á¤ºÎ¸¦ ÀǽÄÇÏ°í »ý°¢ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.


¡¼½ÅÈ£¿Í ŸÀ̹֡½

»ó±â Á¢¼Ó¿¡¼­ÀÇ ½ÅÈ£ÀÇ Å¸À̹ÖÀº ¹Ø±×¸²°ú °°ÀÌ ÇÕ´Ï´Ù.
PC·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ¼Û½ÅÇÒ °æ¿ì¿¡´Â, 8ºñÆ® µ¥ÀÌÅ͸¦ ¿ì¼± Ãâ·Â
ÇÏ°í ³ª¼­, STROBE ½ÅÈ£¸¦ ¡¸1¡¹À¸·Î ÇÕ´Ï´Ù.
±×¸®°í, PIC Ãø¿¡¼­ÀÇ BUSY ½ÅÈ£(PICÀÇ STROBE Ãâ·Â)¸¦ ±â´Ù·Á, BUSY
ÇÏÁö¸¸ ¿ø·¡·Î µ¹¾Æ¿À¸é(ÀÚ) STOROBEµµ ¡¸0¡¹¿¡ µÇµ¹·Á ¿Ï·áÇØ, ´ÙÀ½ÀÇ µ¥ÀÌÅÍ·Î ¿Å°Ü
.




PC°¡ ¼ö½ÅÇÒ °æ¿ì¿¡´Â, PIC·ÎºÎÅÍÀÇ BUSY ½ÅÈ£(PICÀÇ STROBE
Ãâ·Â)À» ¸ÕÀú ±â´Ù¸³´Ï´Ù.
±×¸®°í, BUSY¸¦ ¹Þ¾ÆµéÀ̸é(ÀÚ), STROBE¸¦ ¡¸1¡¹À¸·Î ÇÏ°í ³ª¼­ µ¥ÀÌÅ͸¦ ÀÔ·Â
ÇØ, °è¼ÓµÇ¾î STROBE¸¦ ¡¸0¡¹¿¡ µÇµ¹¸³´Ï´Ù. ±×¸®°í PIC Ãø¿¡¼­ÀÇ BUSY°¡ ¹ÙÅÁÀ¸·Î
µ¹¾Æ¿Â °ÍÀ» È®ÀÎÇØ ¿Ï·áÀÔ´Ï´Ù.


¡¼PCÃø ÇÁ·Î±×·¥¡½

PCÃøÀÇ Æз¯·¼ ÀÔÃâ·ÂÀÇ ÇÁ·Î±×·¥Àº Á÷Á¢ ÀÔÃâ·Â ¸í·ÉÀ» ½ÇÇà
Çϱâ À§ÇÑ(ÇØ), Visual C++¸¦ »ç¿ëÇØ Dynamic Link Library(DLL) Çü½ÄÀ¸·Î ÇÕ´Ï´Ù.
ÀÌ DLL ÇÁ·Î±×·¥ÀÇ ÀÍ´Â ¹æ¹ýÀÇ ÀÚ¼¼ÇÑ °ÍÀº, ¡¸DLL ÇÁ·Î±×·¥À» ¸¸µå´Â ¹æ¹ý¡¹
ÀÇ ÆäÀÌÁö¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

ÇÁ·Î±×·¥Àº »ó±â ŸÀÓ Â÷Æ®¸¦ ±×´ë·Î Ç÷οì·Î ÇÑ ÇüÅ°¡ µÇ¾î
ÀÖ½À´Ï´Ù.


/*************************************************
*¡¡Parallel Interface Drive Program.
*¡¡This Driver includes below function by Dynamic Link
*¡¡Library(DLL) Program.
*¡¡1.¡¡RecvD¡¡ Input one Byte data by handshake protocol
*¡¡2.¡¡SendD¡¡ Output one Byte data by handshake protocol
***************************************************/

#define DllExport _declspec(dllexport)¡¡¡¡¡¡¡¡//DLL ¼±¾ð
#define NOERR 0
#define BUSY -1

//Input Function by Handshake Protocol (RecvD)
DllExport short _stdcall RecvD(unsigned short port)
{unsigned databyte; unsigned state_busy;
¡¡¡¡while(state_busy ! =0) {¡¡¡¡¡¡¡¡¡¡ //STROBE ´ë±â
¡¡¡¡¡¡¡¡state_busy = _inp(port+1) & 0x80;
¡¡¡¡}
¡¡¡¡
¡¡¡¡_outp(port+2, 0x21);¡¡¡¡¡¡¡¡¡¡¡¡¡¡ //Busy Ãâ·Â, ÀÔ·Â ¸ðµå
¡¡¡¡databyte = _inp(port);¡¡¡¡¡¡¡¡¡¡¡¡//µ¥ÀÌÅÍ ÀÔ·Â(Dumy)
¡¡¡¡databyte = _inp(port);¡¡¡¡¡¡¡¡¡¡¡¡//µ¥ÀÌÅÍ ÀÔ·Â
¡¡¡¡_outp(port+2, 0);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//Busy ÇØÁ¦, Ãâ·Â ¸ðµå
¡¡¡¡¡¡
¡¡¡¡while(state_busy ==0) {¡¡¡¡¡¡¡¡¡¡ //STROBE reset ´ë±â
¡¡¡¡¡¡¡¡state_busy = _inp(port+1) & 0x80;
¡¡¡¡}
¡¡¡¡return databyte;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//ÀÔ·Â µ¥ÀÌÅÍ ¹Ýȯ
}


//Output Function by HandShake Protocol (SendD)
DllExport short _stdcall SendD(unsigned short port, unsigned short databyte)
{unsigned state_busy; unsigned i;
¡¡¡¡for (i=0;i<1000;i++) {¡¡¡¡¡¡¡¡¡¡¡¡//·¹À̵ð ´ë±â
¡¡¡¡¡¡¡¡state_busy = _inp(port+1) & 0x80;
¡¡¡¡¡¡¡¡if (state_busy ! = 0){
¡¡¡¡¡¡¡¡¡¡¡¡break;
¡¡¡¡¡¡¡¡}
¡¡¡¡}
¡¡¡¡if (state_busy == 0){¡¡¡¡¡¡¡¡¡¡¡¡ //ŸÀÓ ¾Æ¿ô ¿¡·¯
¡¡¡¡¡¡¡¡return(BUSY);
¡¡¡¡}
¡¡¡¡_outp(port, databyte);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//µ¥ÀÌÅÍ Ãâ·Â
¡¡¡¡_outp(port+2, 1);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//½ºÆ®·Îºê Ãâ·Â
¡¡¡¡while(state_busy ! = 0) {¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//Busy ´ë±â
¡¡¡¡¡¡¡¡state_busy = _inp(port+1) & 0x80;
¡¡¡¡}
¡¡¡¡while(state_busy ==0) {¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ //Busy ÇØÁ¦ ´ë±â
¡¡¡¡¡¡¡¡state_busy = _inp(port+1) & 0x80;
¡¡¡¡}
¡¡¡¡_outp(port+2, 0);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//½ºÆ®·Îºê ÇØÁ¦
¡¡¡¡return(NOERR);
}




¡¼PICÃø ÇÁ·Î±×·¥¡½

ÀÌ PC¿Í Á¢¼ÓÇØ Åë½ÅÇϱâ À§ÇÑ PICÃøÀÇ ÇÁ·Î±×·¥µµ, »ó±â
ÀÇ Ç÷ÎÂ÷Æ®(flow chart) ÀΠäÀÇ È帧ÀÌ µÇ°í ÀÖ½À´Ï´Ù.
¼Û½Å°ú ¼ö½Å¿¡ ¾Ë ¼ö ÀÖ°í ÀÖ½À´Ï´Ù¸¸, ±âº»ÀûÀÎ (ÀÏ)°ÍÀº, ¸ðµÎ PCÃøÀÌ
ÁÖµµ±ÇÀ» °®°í ÀÖ´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù.
Áï, PCÃøÀ¸·ÎºÎÅÍ, Ä¿¸àµå¸¦ ¼ö½ÅÇÏ°í ³ª¼­ ¹Û¿¡, PICÃøÀ¸·ÎºÎÅÍ´Â
µ¥ÀÌÅ͸¦ ¼Û½ÅÇÒ ¼ö°¡ ¾ø´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù.

(1) Æ÷Åä ÃʱâÈ­
¡¡¡¡¿ì¼±Àº Æ÷ÅäÀÇ ÀÔÃâ·ÂÀÇ ¼³Á¤ÀÔ´Ï´Ù.

;**************************************
; Æ÷Åä ÃʱâÈ­ ºÎºÐ
;¡¡ PORT A¡¡RA3¡¡:STROBE output
;¡¡¡¡¡¡¡¡¡¡ RA4¡¡:BUSY input
;¡¡ PORT B¡¡all input/output changable
;**************************************
INITA
¡¡¡¡¡¡¡¡BSF¡¡¡¡ STATUS, RP0¡¡¡¡¡¡;Set Page 1
¡¡¡¡¡¡¡¡MOVLW¡¡ 017H¡¡¡¡¡¡¡¡¡¡¡¡;Set PortA to receive mode
¡¡¡¡¡¡¡¡MOVWF¡¡ TRISA
¡¡¡¡¡¡¡¡MOVLW¡¡ 0FFH
¡¡¡¡¡¡¡¡MOVWF¡¡ TRISB¡¡¡¡¡¡¡¡¡¡ ;Set Portb to all input
¡¡¡¡¡¡¡¡BCF¡¡¡¡ STATUS, RP0¡¡¡¡¡¡;Set Page 0
¡¡¡¡ÀÌÈÄ¿¡ÀÇ Ã³¸®¿¡


(2) ¼ö½Å ÇÁ·Î±×·¥
¡¡¡¡PC Ãø¿¡¼­ÀÇ Ä¿¸àµåÀÇ ¼ö½Å ºÎºÐ¿¡¼­, ÀÌ Ä¿¸àµå¸¦ ¼ö½Å
¡¡¡¡ÇÏ°í ³ª¼­ ´ÙÀ½ÀÇ Ã³¸®·Î ¿Å°Ü, ¼Û½ÅÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.


;********************************
;¡¡¼ö½Å ½áºê·çƾ ÇÁ·Î±×·¥
;¡¡µ¥ÀÌÅÍ´Â CMND¿¡ °Ý³³µÇ¾î µ¹¾Æ¿Â´Ù
;********************************
RCVSUB
¡¡¡¡¡¡¡¡BSF¡¡¡¡ STATUS, RP0¡¡¡¡¡¡;Set Page 1
¡¡¡¡¡¡¡¡MOVLW¡¡ 0FFH¡¡¡¡¡¡¡¡¡¡¡¡;get FF
¡¡¡¡¡¡¡¡MOVWF¡¡ TRISB¡¡¡¡¡¡¡¡¡¡ ;Set Portb to all input
¡¡¡¡¡¡¡¡BCF¡¡¡¡ STATUS, RP0¡¡¡¡¡¡;Set Page 0
¡¡¡¡¡¡¡¡BCF¡¡¡¡ PORTA, 3¡¡¡¡¡¡¡¡ ;reset STROB
;***** BUSY ´ë±â¡¡****
RCVLP
¡¡¡¡¡¡¡¡BTFSC¡¡ PORTA, 4¡¡¡¡¡¡¡¡ ;RA4 BUSY input
¡¡¡¡¡¡¡¡GOTO¡¡¡¡RCVLP
¡¡¡¡¡¡¡¡BTFSC¡¡ PORTA, 4¡¡¡¡¡¡¡¡ ;È®ÀÎÀ» À§ÇØ ÀçÀÔ·Â
¡¡¡¡¡¡¡¡GOTO¡¡¡¡RCVLP
¡¡¡¡¡¡¡¡BSF¡¡¡¡ PORTA, 3¡¡¡¡¡¡¡¡ ;set STROB as BUSY on
¡¡¡¡¡¡¡¡MOVF¡¡¡¡PORTB, W¡¡¡¡¡¡¡¡ ;get command data
¡¡¡¡¡¡¡¡MOVWF¡¡ CMND¡¡¡¡¡¡¡¡¡¡¡¡;COMMAND save
¡¡¡¡¡¡¡¡NOP¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ;ÆÞ½ºÆøÀÇ È®º¸¿ë
¡¡¡¡¡¡¡¡NOP
¡¡¡¡¡¡¡¡BCF¡¡¡¡ PORTA, 3¡¡¡¡¡¡¡¡ ;reset STROB as BUSY off
¡¡¡¡¡¡¡¡RETURN


(3) ¼Û½Å ÇÁ·Î±×·¥
¡¡¡¡1¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅ͸¦ PC¿¡ ¼Û½ÅÇϱâ À§ÇÑ ÇÁ·Î±×·¥
¡¡¡¡ÀÔ´Ï´Ù.


;************************************
; 1¹ÙÀÌÆ® ¼Û½Å ½áºê·çƾ ÇÁ·Î±×·¥
; During send mode RA3=STORBE output
; and RA4=BUSY input, PORTB is output
;************************************
SNDSUB
¡¡¡¡¡¡¡¡MOVWF¡¡ TEMP¡¡¡¡¡¡¡¡¡¡¡¡;save send data
¡¡¡¡¡¡¡¡BSF¡¡¡¡ STATUS, RP0¡¡¡¡¡¡;Set Page 1
¡¡¡¡¡¡¡¡CLRF¡¡¡¡TRISB¡¡¡¡¡¡¡¡¡¡ ;Set PORTB to all output
¡¡¡¡¡¡¡¡BCF¡¡¡¡ STATUS, RP0¡¡¡¡¡¡;Set Page 0
;**** check busy¡¡******
CKBSY
¡¡¡¡¡¡¡¡BTFSS¡¡ PORTA, 4¡¡¡¡¡¡¡¡ ;Test BUSY
¡¡¡¡¡¡¡¡GOTO¡¡¡¡CKBSY¡¡¡¡¡¡¡¡¡¡ ;busy case
;***¡¡Send data ***
¡¡¡¡¡¡¡¡MOVF¡¡¡¡TEMP, W¡¡¡¡¡¡¡¡¡¡;get send data
¡¡¡¡¡¡¡¡MOVWF¡¡ PORTB¡¡¡¡¡¡¡¡¡¡ ;data out
¡¡¡¡¡¡¡¡NOP¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ;delay
¡¡¡¡¡¡¡¡BSF¡¡¡¡ PORTA, 3¡¡¡¡¡¡¡¡ ;set STROB
;**** wait PC input ****
WTBSY
¡¡¡¡¡¡¡¡BTFSC¡¡ PORTA, 4¡¡¡¡¡¡¡¡ ;wait BUSY on
¡¡¡¡¡¡¡¡GOTO¡¡¡¡WTBSY

WTRDY
¡¡¡¡¡¡¡¡BTFSS¡¡ PORTA, 4¡¡¡¡¡¡¡¡ ;wait BUSY off
¡¡¡¡¡¡¡¡GOTO¡¡¡¡WTRDY
¡¡¡¡¡¡¡¡BCF¡¡¡¡ PORTA, 3¡¡¡¡¡¡¡¡ ;reset STROB
¡¡¡¡¡¡¡¡RETURN

¸ñ·Ïº¸±â

www.1chip.com, www.1chip.co.kr
www.micom114.com
ÀÚ·á½Ç¹Ù·Î°¡±â

´ë±¸±¤¿ª½Ã ºÏ±¸ »ê°Ý2µ¿ 1629 »ê¾÷¿ëÀç°ü 10µ¿ 13È£ (2Ãþ) / Tel. 053-604-2355 / Fax. 053-383-2354 / E-mail. maha@paran.com