INtime Tech

INtime Top


S10-4. IOÇÔ¼ö


 

INtime ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎÀÇ I/OÀÔÃâ·Â ÇÔ¼ö

1. ÇÔ¼öÀÇ Á¾·ù

ÀÌÇÏÀÇ ÇÔ¼ö°¡ I/OÀÇ ÀÔÃâ·Â¿ëÀ¸·Î ÁغñµÇ¾î ÀÖ½À´Ï´Ù.ÀÌ·¯ÇÑ ÇÔ¼ö´Â Á÷Á¢ CPU ¸í·É in, out¸¦ ¹ßÇàÇÏ´Â ¸ÅÅ©·Î·Î¼­ Á¦°øµÇ°í ÀÖ½À´Ï´Ù.

  • £ÛÅë»óÀÇ I/OÇÔ¼ö£Ý
  8bit 16bit 32bit
ÀÔ·Â inbyte inhword inword
Ãâ·Â outbyte outhword outword
  • £ÛI/Oºí·Ï Àü¼Û ÇÔ¼ö£Ý

 

8bit

16bit

32bit

ÀÔ·Â

blockinbyte

blockinhword blockinword
Ãâ·Â blockoutbyte blockouthword blockoutword

2. Çì´õ ÆÄÀÏ·ÎÀÇ ÇÔ¼ö ¼±¾ð

ÇÔ¼ö´Â,<rt.h> (³»ºÎÀûÀ¸·Î´Â i86.h, i186.h, i386.h) ÆÄÀÏ¿¡ ÀÌÇÏ¿Í °°Àº ŸÀÔÀ¸·Î ¼±¾ðµÇ°í ÀÖ½À´Ï´Ù.

 unsigned char inbyte(unsigned short  port);
 unsigned short inhword(unsigned short port);
 unsigned long inword(unsigned short port);
 void outbyte (unsigned short port, unsigned char value);
 void outhword (unsigned short port, unsigned short value);
 void outword (unsigned short port, unsigned long value);
 void blockinbyte (unsigned short port, unsigned char *destination, unsigned int count);
 void blockinhword(unsigned short port, unsigned short *destination, unsigned int count);
 void blockinword (unsigned short port, unsigned long *destination, unsigned int count);
 void blockoutbyte(unsigned short port, unsigned char const *source, unsigned int count);
 void blockouthword(unsigned short port, unsigned short const *source, unsigned int count);
 void blockoutword(unsigned short port, unsigned long const *source, unsigned int count);

3. ÇÔ¼öÀÇ È£Ã⿹

I/O¿¡ ´ëÇÑ ÇÔ¼öÀÇ È£Ãâ¿¡ ´ëÇÏ°í ¿¹¸¦ »ç¿ëÇØ ÀÌÇÏ¿¡ ¼³¸íÇÕ´Ï´Ù.

¨ç I/O¹øÁö 1234 h¿¡¼­ 8ºñÆ® µ¥ÀÌŸ¸¦ »Ì¾Æ Æ÷ÇÔ 5678 h¹øÁö¿¡ ¼öÁß¿¡ ³ÖÀº µ¥ÀÌÅ͸¦ Ãâ·ÂÇÑ´Ù.

  BYTE   in_data8;
 
 in_data8 = inbyte( 0x1234 );
 outbyte( 0x5678, in_data8 );

¨è I/O¹øÁö 1234 h¿¡¼­ 16ºñÆ® µ¥ÀÌŸ¸¦ »Ì¾Æ Æ÷ÇÔ 5678 h¹øÁö¿¡ ¼öÁß¿¡ ³ÖÀº µ¥ÀÌÅ͸¦ Ãâ·ÂÇÑ´Ù.

  WORD   in_data16;
 
 in_data16 = inhword( 0x1234 );
 outhword( 0x5678, in_data16 );

¨é I/O¹øÁö 1234 h¿¡¼­ 32ºñÆ® µ¥ÀÌŸ¸¦ »Ì¾Æ Æ÷ÇÔ 5678 h¹øÁö¿¡ ¼öÁß¿¡ ³ÖÀº µ¥ÀÌÅ͸¦ Ãâ·ÂÇÑ´Ù.

  DWORD  in_data32;
 
 in_data16 = inword( 0x1234 );
 outword( 0x5678, in_data32 );

¨ê I/O¹øÁö 1234 h·ÎºÎÅÍ ¿¬¼ÓÇØ 100¹ÙÀÌÆ® ¼öÁß¿¡ ³Ö¾î, 5678 h¹øÁö¿¡ ¼öÁß¿¡ ³ÖÀº µ¥ÀÌÅ͸¦ 100¹ÙÀÌÆ® Ãâ·ÂÇÑ´Ù.

  BYTE   in_buf8[100];
 
 blockinbyte( 0x1234, in_buf8, 100 );
 blockoutbyte( 0x5678, in_buf8, 100 );

¨ë I/O¹øÁö 1234 h·ÎºÎÅÍ ¿¬¼ÓÇØ 100 ÇÏÇÁ ¿öµå ÃëÇØ ºÁ, 5678 h¹øÁö¿¡ ¼öÁß¿¡ ³ÖÀº µ¥ÀÌÅ͸¦ 100 ÇÏÇÁ ¿öµå Ãâ·ÂÇÑ´Ù.

  WORD   in_buf16[100];
 
 blockinhword( 0x1234, in_buf16, 100 );
 blockouthword( 0x5678, in_buf16, 100 );

¨ì I/O¹øÁö 1234 h·ÎºÎÅÍ ¿¬¼ÓÇØ 100 ¿öµå ¼öÁß¿¡ ³Ö¾î, 5678 h¹øÁö¿¡ ¼öÁß¿¡ ³ÖÀº µ¥ÀÌÅ͸¦ 100 ¿öµå Ãâ·ÂÇÑ´Ù.

  DWORD  in_buf32[100];
 
 blockinword( 0x1234, in_buf32, 100 );
 blockoutword( 0x5678, in_buf32, 100 );
  • º¸Ãæ
     BYTE£º   ºÎÈ£ ¾øÀ½ 8ºñÆ®(unsigned char)ÀÇ º°¸í Á¤ÀÇ
    WORD£º   ºÎÈ£ ¾øÀ½ 16ºñÆ®(unsigned short)ÀÇ º°¸í Á¤ÀÇ
    DWORD£º  ºÎÈ£ ¾øÀ½ 32ºñÆ®(unsigned long)ÀÇ º°¸í Á¤ÀÇ 

 

 

HOME | INtime