/* ƯÁ¤ º¸·¹ÀÌÆ®¸¦ ±âÀÔÇÒ ¼ö ÀÖ°í(9600, 19200, 57600,,,115200) COMÀ» ¼±ÅÃÇÒ ¼ö ÀÖ°í º¸³»°Å³ª ¹Þ´Â ¸ðµå¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Â Åë½Å ÇÁ·Î±×·¥ÀÔ´Ï´Ù. º¼·£µå¾¾¿¡¼­ ±×´ë·Î ÄÄÆÄÀÏÇϰí 'h' (or 'H')¸¦ ÀÔ·ÂÇϸé ÀÚ¼¼ÇÑ µµ¿ò¸»À» º¼ ¼ö ÀÖÁÒ. ¸¶ÀÌÅ©·Î ÄÜÆ®·Ñ·¯¸¦ ÀÌ¿ëÇÑ º¸µå³ª ·Îº¿ Åë½Å ÇÁ·Î±×·¥¿¡ À¯¿ëÇÕ´Ï´Ù. */ #include #include #include #include #include #define TAB 0x09 #define ESC 0x1b #define ENTER 0x0d #define COM1 0x3F8 #define COM2 0X2F8 #define COM3 0X3E8 #define COM4 0X2E8 #define COM1_INT_VECT 0X0C #define COM2_INT_VECT 0X0B #define MASKON13 0XEF #define MASKON24 0XF7 #define MASKOFF13 0X10 #define MASKOFF24 0X08 #define FREQ 1843200L #define PICMASK 0X21 #define PICEIO 0X20 #define file_size F000 typedef unsigned char byte; typedef unsigned int word; byte *data; word file_size = 0; word COM,COM_INT_VECT,MASKON,MASKOFF; void interrupt (*old_int)(); void Init_Serial(unsigned long Default) { char old_lcr; unsigned int divisor; unsigned char high,low; divisor = (unsigned int)(FREQ/(16L*Default)); high = (unsigned char)(divisor >> 8); low = (unsigned char) divisor; old_lcr = inportb(COM+3); outportb(COM+3,old_lcr|0X80); outportb(COM,low); outportb(COM+1,high); old_lcr = inportb(COM+3); outportb(COM+3,old_lcr&0X7F); } void interrupt port_interrupt() { byte in_ch; in_ch = inportb(COM); if(in_ch) data[file_size++] = in_ch; outportb(PICEIO,0X20); /* transmit signal that terminated EIO int OF PIC*/ } void Init_Com(void) { unsigned char old_msr,old_imr; old_int = getvect(COM_INT_VECT); setvect(COM_INT_VECT,port_interrupt); outportb(COM+4,0X0B); outportb(COM+1,0X01); old_msr = inportb(COM+6); outportb(COM+6,old_msr | 0X30); old_imr = inportb(PICMASK); outportb(PICMASK,old_imr & MASKON); delay(300); inportb(COM); inportb(COM); } void Close_Com(void) { unsigned char old_imr; outportb(COM+1,0X00); old_imr = inportb(PICMASK); outportb(PICMASK,old_imr | MASKOFF); setvect(COM_INT_VECT,old_int); free(data); } void Send_Byte(unsigned char ch) { while( !(inportb(COM+5)&0X20) ); // while(!(inportb(COM+5)&0X40)); //6th bit(TSR:Transfer Shift Register) outportb(COM,ch); //when TSR is empty, 6th bit is set. } void Receive_Byte() { word i; char select1; while (!kbhit()) { for (i=0; i