Keil Uvision 3이나 2버전 둘중에서 아무거나 정품버전이나 크랙버전 있으신분
여기 둘중에서 한군데로 보내주시면 감사하겠습니다.^^
그리고 IAR질문하나 올리겠습니다.
IAR에서
#include <iomsc1210y5.h>
void CommInit(void)
{
TMOD = 0x21;
PCON = 0x00;
TH1 = 0xFD; //9600bps
SCON0 = 0x50;
SBUF0 = 0x00;
TR1 = 0x01;
}
void putchar( unsigned char ch )
{
while(!TI);
SBUF0=ch;
TI=0;
}
이렇게했는데 TI오류가나네요
IAR로 통신프로그램 소스나 오류아시는분 알려주세요^^
마이컴은 MSC1210Y5 씁니다.
<에러가 난다>는 표현이 무슨 말인지는 모르겠는데, 위의 소스 코드와 같이 8051의 시리얼 포트를 초기화한 다음, putchar(ch); 함수를 실행하면 그 문자가 송신되지 않습니다. 왜 그럴까요?
보다시피 putchar() 함수는 문자를 송신하기 전에 TI의 상태를 검사합니다. 즉, TI의 값이 1이 되어야 하겠지요. TI의 값이 자동으로 1이 되는 경우는 앞서 보낸 문자의 송신이 완료되는 경우 외에는 없습니다. 그래서 앞서 송신한 문자가 없고 TI의 값이 0이 되어 있는 상태라면 이 값은 절대 1이 되지 않습니다.
그러면, 어떻게 하여야 할까요? 초기화 루틴에서 SCON 레지스터의 TI 비트를 1로 써넣어 주어야 하겠지요. 그래야만 송신하고자 하는 최초의 문자가 putchar() 함수의 while 루프를 지나서 SBUF에 써넣어지게 됩니다. 그 다음부터는 putchar() 함수에 들어 왔을 때 TI 비트의 검사가 타당해지게 됩니다. 보내진 문자가 있으니 그 문자의 송신이 완료되면 자동으로 TI 비트가 1이 되겠지요. 오케이?