[ KJIST ] in KIDS 글 쓴 이(By): cch (않가르쳐줘�) 날 짜 (Date): 1996년07월15일(월) 23시45분51초 KDT 제 목(Title): [re] 도와 주세용..... 으하하하.... 찾았다..... 제가 학부때 마이크로프로세서 보드와 통신하는 프로그램 짜려고 찾다가 구한 겁니다.. 저도 비슷한 경험을 했죠... 책에 나와 있는거 그대로 컴파일해서 실행해도 않되죠... 여러개 해봤는데... 쓰레기 값만 나오고 보래이트가 않 맞는지.. 하여간 .. 이건되요... 이상한 글짜는 코맨튼데... 한글타입이 서로 않맞나봐요... 수고하세요.... #include <stdio.h> #include <conio.h> #include <dos.h> #include <bios.h> #include "hghlib.h" /* 한글 라이브러리 화일 */ #define TRUE -1 #define FALSE 0 #define COM1 0 #define COM21 #define BUFLEN 0x4000 #define DATA 0x3f8/* com2 : 0x2f..*/ #define IER 0x3f9 #define IIR 0x3fa #define MCR 0x3fc #define MSR 0x3fe #define LSR0x3fd #define LCR 0x3fb #define ONMSK 0xe7 /* Turn IRQ4/IRQ3 On*/ #define OFFMSK 0x18 /* Turn IRQ4/IRQ3 Off*/ #define PICMSK 0x21/* 8259 mask register*/ #define PICEOI 0x20 /* 8259 EOI instr.*/ #define IRQ4 0x0c #define IRQ3 0x0b #define DATA7 0x02 /* Data is 7 bit*/ #define DATA8 0x03 /* Data is 8 bit */ #define STOP1 0x00/* Stop Bit is one */ #define NOPA0x00/* No Parity */ #define ODDP0x08 #define EVEVP0x18 #define B12000x80/* Baud rate */ #define B2400 0xa0 #define B4800 0xc0 #define B9600 0xe0 unsigned charibuffer[BUFLEN]; unsigned intifront=0,irear=0; void interrupt (*oldvect)(...); void interrupt intsr(...) { irear %= BUFLEN; ibuffer[irear++]=inportb(DATA); outportb(PICEOI,0x20); } int rsready() { return((ifront != irear)? TRUE:FALSE); } char rsin() { ifront %= BUFLEN; return(ibuffer[ifront++]); } void rsout(char ch) { do{/*...*/}while(!(inportb(LSR) & 0x20)); outportb(DATA,ch); } void init_port() { oldvect=getvect(IRQ4); setvect(IRQ4,intsr); bioscom(0,DATA8|STOP1|NOPA|B9600,COM1); outportb(MCR,0x0b); outportb(IER,0x01); outportb(PICMSK,(inportb(PICMSK)&(ONMSK))); } void close_port() { /*outportb(MCR,0);*/ outportb(IER,0); outportb(PICMSK,(inportb(PICMSK)|OFFMSK)); setvect(IRQ4,oldvect); } /****************************************************/ /* */ /* MAIN PROGRAM */ /* */ /****************************************************/ extern void commain() { unsigned char ch, in; init_port(); while(1){ if(rsready()) { putch(rsin()); //if ((in = rsin()) != NULL) hgEngPutch(hgGetOutX(), hgGetOutY(), in); } if(kbhit()){ //ch=hgGetCh(); ch=getch(); if (ch) rsout(ch); else if(getch()==45) break; /*ALT-X then exit.......*/ } } close_port(); } 와.... 이거 되게 않 올라가네.... 배우고 말거야... 화일로 올리는 법.... |