로그인 | 회원가입 | 주문 조회
참고자료 printf, scanf를 UART0,1양쪽에사용하기
글쓴이 N.T.C 등록일 2008-02-19 조회 6,720
아래의 함수들은 시리얼포트 초기화하실 때,
RX complete interrupt,
TX complete interrupt,
Data register Empty interrupt 등을 절대 사용하면 안됩니다.
 
아래 함수를 필요에 따라서 바꿔 사용하시면, printf 함수로 시리얼 포트 0번 1번 모두에 출력이 가능하고, scanf 함수로 시리얼 포트 0번 1번 모두에 입력이 가능해 지면서, 막강한 printf 함수와 scanf 함수를 사용하여 입력 출력하실 수 있습니다.

본 함수를 잘 바꾸시면, 텍스트 LCD나 그래픽 LCD에도 printf scanf 함수 사용이 가능해 집니다.
참고하세요.

이 함수를 추가 하신후, printf 함수로 출력하시면 UDR0로 출력이 가능합니다.

int putchar(char c) {
      while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
      UDR0 = c;
      return c;
}

이 함수를 추가 하신후, printf 함수로 출력하시면 UDR1로 출력이 가능합니다.

int putchar(char c) {
     while (((UCSR1A>>UDRE1)&0x01) == 0) ; // UDRE, data register empty
     UDR1 = c;
     return c;
}

이 함수를 추가 하신후, scanf 함수로 입력받으시면 시리얼 0번포트에서 입력을 받을 수 있습니다.

char getchar(void) {
    while ((UCSR0A & 0x80) == 0);
    return UDR0;
}

이 함수를 추가 하신후, scanf 함수로 입력받으시면 시리얼 1번포트에서 입력을 받을 수 있습니다.

char getchar(void) {
    while ((UCSR1A & 0x80) == 0);
    return UDR1;
}
다음글 외부인터럽트 테스트
이전글 시리얼로 서보모터 제어하기