|
라스코니 님이 쓰신 글 :
: 어떤 MCU를 쓰시는 지는 모르겠지만 다 동일하리라 봅니다.
:
: MCU는 자신의 시리얼 port 에 들어오는 데이터를 인터럽트로 받아들이게 됩니다. PC 라면 주로 RS232를 사용하게 될테니 MAX232(오래되서 가물가물하네요) 같은 칩이 신호를 변환해서 MCU의 시리얼 port 로 넣어주도록 되어 있을 겁니다.
:
: 시리얼 포트에 들어오는 것은 그때마다 인터럽트가 발생하게 되고 그 인터럽트를 처리할 함수가 시리얼 포트에 들어온 8 비트 데이터를 가지게 됩니다. 이 값은 ASCII 값이고 이 값으로 해당 문자열로 비교하면 되죠.
:
: MCU 가 들어온 값을 's' 으로 판단하면 알맞는 데이터를 시리얼 포트를 통해 내보내 주면 됩니다. 그 데이터를 PC에서 받아서 뿌려주면 되죠(이건 C++ Builder로).
:
: 현재 MCU의 스타트업 코드가 되어있고, 현재 main() 함수가 MCU에서 실행가능하면 나머지는 진짜 간단해요.
:
: 이전에 80196 을 가지고 ctasking 을 사용해서 한 적이 있는데 소스는 공개할 수 없고(^^;),,, 하지만 아마 인터넷에 검색하시면 많이 나올 겁니다. 단 대략적인 방법은 위와 같아요.
일단 MCU가 뭔지 모르겠지만 8051 이라고 치면
보레이트 타이머값 설정
시리얼 인터럽트를 허가
타이머 인터럽트 지정
초기화부분
SP=0x74;
P3=0x07; //bf;
P0=0xff;
P1=0xff;
EA=0;
SCON=0x50;
PCON=0x80; // 19200
TMOD|=0x22; //0x20;
PS=1;
TH1=TL1=0xFA; // 19200
TH0=0x48;;
TR1=1;
ET0=1; // ADD
TF0=1; // AA
TR0=1;
EX0=1;
IT0=1;
EA=1;
static void interrupt_4_trx0(void) interrupt 4 /* 0023H : Serial_0 */
{
unsigned char c;
if(RI)
{ RI = 0;
c = SBUF;
P1=c;
if (c==0x30) //
}
if(TI)
{ TI = 0;
SBUF=0x31;
}
}
요런식으로 하시면 되겠네요 다른 프로세서도 거의 비슷합니다
|