|
감사합니다 많은 도움이 되었습니다.
근데 왜status & DATA_READY는 연산을 해야하는지요/
그리고 같은 류의 예제를 많이 보았는데 꼬옥 0x7F가 있더라구요.
무슨 의미가 있는 건 아닌지요?
초자가 함 해볼려니 힘겹네요.
김진호.불사새 님이 쓰신 글 :
: -> if (status & DATA_READY)//이 부분 해석좀 부탁드립니다.
: 상태를 읽어와서 데이타가 준비 되었는지(READY인지)에 해당하는 비트가 1이면
:
: -> if ((out = bioscom(2, 0, COM2) & 0x7F) != 0)//이부분두요 ox7F는 무엇이고 또 "0"의 의미는 무엇이고?등등 상세하게 부탁드립니다.
:
: 통신 포트에서 한 바이트를 읽어와서 0x7f(이진수로 B0111111)로 AND연산 합니다. 그 읽은 값을 out에 넣고
: out값이 0이 아니면(문자가 들어 왔으면) 그 아래 코드 실행입니다.
:
: 0x7f는 안하셔도 될듯합니다.(헬프 예제에 그리 나와 있더라두요)
:
: 초자탈출기 님이 쓰신 글 :
: : 안녕하십니까
: :
: : 코드해석 좀 부탁드립니다.
: : 달랑 물어보는 건 아니구요 .보다보다 지쳐서 도움 청합니다.
: : 하기의 코드중 분석 부탁드립니다.
: : #define COM2 1
: : #define DATA_READY 0x0100
: : #define TRUE 1
: : #define FALSE 0
: :
: : #define SETTINGS ( 0xe3 | 0x00 | 0x00 | 0x00)
: :
: : int main(void)
: : {
: : int in, out, status, DONE = FALSE;
: :
: : bioscom(0, SETTINGS, COM2);
: : cprintf("... BIOSCOM [ESC] to exit ...\n");
: : while (!DONE)
: : {
: : status = bioscom(3, 0, COM2);
: : if (status & DATA_READY)//이 부분 해석좀 부탁드립니다.
: : if ((out = bioscom(2, 0, COM2) & 0x7F) != 0)//이부분두요 ox7F는 무엇이고 또 "0"의 의미는 무엇이고?등등 상세하게 부탁드립니다.
: :
: : putch(out);
: : if (kbhit())
: : {
: : if ((in = getch()) == '\x1B')
: : DONE = TRUE;
: : bioscom(1, in, COM2);
: : }
: : }
: : return 0;
: : }
|