[W7100 EVM] 예제프로그램 작성 - UART 제어 (printf 를 이용한 디버깅)
8051에서 UART제어를 위한 보레이트 설정 모드는 Mode0~3의 4가지가 있다.
Keil 에서 printf를 사용하기위해서는 putchar()함수를 재 정의해 주어야 한다. serial.c 에 아래 함수들 추가하면 된다.
W7100 UART테스트 예제 코드
* 8051에서 printf 사용시 주의 사항
unsigned char 형 데이터를 출력하면 이상하게 출력된다. (unsigned) int형으로 캐스팅 해 주어야 정상동작한다.
8051에서 UART제어를 위한 보레이트 설정 모드는 Mode0~3의 4가지가 있다.
Keil 에서 printf를 사용하기위해서는 putchar()함수를 재 정의해 주어야 한다. serial.c 에 아래 함수들 추가하면 된다.
char putchar (char c)
{
// Write data into serial-buffer.
SBUF = c;
// Wait till data recording is finished.
while(!TI);
TI = 0;
return c;
}
{
// Write data into serial-buffer.
SBUF = c;
// Wait till data recording is finished.
while(!TI);
TI = 0;
return c;
}
W7100 UART테스트 예제 코드
void main()
{
unsigned int cnt = 0;
SystemInit(); //Initialize iMCU
Led1Init();
Led1On();
Led2Init();
Led2Off();
//시리얼 포트 초기화
U0_Init(BAUD_115200);
U0_PutStr("iMCU Serial Test\r\n");
while(1)
{
switch(DebugGetByte())
{
case '1':
Led1On();
printf("LED1 On %d\r\n", cnt++);
break;
case '0':
Led1Off();
printf("LED1 Off\r\n");
break;
}
}
}
{
unsigned int cnt = 0;
SystemInit(); //Initialize iMCU
Led1Init();
Led1On();
Led2Init();
Led2Off();
//시리얼 포트 초기화
U0_Init(BAUD_115200);
U0_PutStr("iMCU Serial Test\r\n");
while(1)
{
switch(DebugGetByte())
{
case '1':
Led1On();
printf("LED1 On %d\r\n", cnt++);
break;
case '0':
Led1Off();
printf("LED1 Off\r\n");
break;
}
}
}
* 8051에서 printf 사용시 주의 사항
unsigned char 형 데이터를 출력하면 이상하게 출력된다. (unsigned) int형으로 캐스팅 해 주어야 정상동작한다.
반응형