|
-> 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;
: }
|