이 영역을 누르면 첫 페이지로 이동
#include < ResetDy.com > 블로그의 첫 페이지로 이동

#include < ResetDy.com >

페이지 맨 위로 올라가기

#include < ResetDy.com >

USART 통신 기본

  • 2012.03.09 00:52
  • MicroProcessor/AVR
반응형

USART 통신 실험
연결은 아주 성공적이였음...
컴퓨터에서 송신을 주고
보드는 수신을 받음
 

 

 



///////////////////////////////////////////////////////////////////////////////////////////

#include <avr/io.h>

void delay_us(unsigned int us_time) // 시간 지연 함수(마이크로 초)
{
unsigned int time;
for(time = 0; time < us_time; time++)
{
asm volatile("PUSH R0");
asm volatile("POP R0");
}
}

void delay_ms(unsigned int ms_time) // 시간 지연 함수(밀리 초)
{
unsigned int time;
for(time = 0; time < ms_time; time++)
delay_us(1000);
}

void PORT_init(void) // 포트 초기화 함수
{
DDRC = 0xff;
DDRB = 0xff;
DDRD = 0xff;

PORTC = 0x00;
PORTB = 0x00;
PORTD = 0x00;
}

void USART_init(unsigned int baud) // USART 초기화 함수
{
UBRRH = (unsigned char)(baud>>8); // 전송 속도 구하는 공식
UBRRL = (unsigned char)baud; // UBRR = Fosc/16BUAD - 1
UCSRA = 0x00;
UCSRB = (1<<RXEN) | (1<<TXEN);
UCSRC = (1<<URSEL) | (3<<UCSZ0);
}

void USART_Transmit(unsigned char data) // USART 송신 설정 함수
{
while( !( UCSRA & (1<<UDRE)) ); // UCSRA & UDRE set 1 이 아닐때 반복
UDR = data; // UDR 송신 버퍼에 data를 기록
}

unsigned char USART_Receive(void) // USART 수신 설정 함수
{
while( !(UCSRA & (1<<RXC)) ); // UCSRA & RXC set 1 이 아닐때 반복
return UDR; // UDR 값을 돌려줌
}

void send_msg(char *msg) // MSG 전송 함수
{
while(*msg) USART_Transmit(*(msg++)); // 매개변수를 USART 송심함수로 넘겨
} // UDR에 저장하고 출력

void send_ID(void) // 기본 ID 출력함수
{
USART_Transmit('m');
USART_Transmit('e');
USART_Transmit('g');
USART_Transmit('a');
USART_Transmit('8');
USART_Transmit('>');
}

void print_head(void) // 초기 화면 출력 함수
{
USART_Transmit(10);
USART_Transmit(13);
send_msg("Welcome to ATmega8");
USART_Transmit(10);
USART_Transmit(13);
send_msg("This Communication Program is coded by D.Y");
USART_Transmit(10);
USART_Transmit(13);
send_msg("Created at 2011.08.07");
USART_Transmit(10);
USART_Transmit(13);
send_ID();
}

int main(void) // 메인함수 시작
{
unsigned char q=0;
USART_init(51); // UBRR = (8000000/16*9600) - 1 = 52 - 1 = 51
PORT_init(); // PORT 초기화
print_head(); // 초기 헤드 출력

while(1)
{
q = USART_Receive(); // q 에 UDR를 저장
if(q==13) // q에 Carriage return 값 0D가 들어가면
{
USART_Transmit(10); // Line feed (줄바꿈)
USART_Transmit(13); // Carriage return (커서 맨 앞으로)
send_ID(); // mega8> 전송
}
else // 아닐경우
USART_Transmit(q); // USART_Transmit 에 q를 보냄

delay_ms(10);
}

return 0;
}
반응형

'MicroProcessor > AVR' 카테고리의 다른 글

[AVR] Step1. 개발환경 구축하기 (AVR Studio 4.19)  (0) 2017.03.12
cmd에서 avrdude를 이용하여 퓨즈비트 쓰기  (0) 2012.05.23
USBasp - avrdude 명령어  (0) 2012.05.22
외부 인터럽트실험2  (0) 2012.03.09
폴링방식과 인터럽트 방식의 차이점  (0) 2012.03.09
1분 카운터 & LED switching  (0) 2012.03.09
ATmega8 OSCCAL 레지스터 사용하기  (0) 2012.03.09

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 외부 인터럽트실험2

    외부 인터럽트실험2

    2012.03.09
  • 폴링방식과 인터럽트 방식의 차이점

    폴링방식과 인터럽트 방식의 차이점

    2012.03.09
  • 1분 카운터 & LED switching

    1분 카운터 & LED switching

    2012.03.09
  • ATmega8 OSCCAL 레지스터 사용하기

    ATmega8 OSCCAL 레지스터 사용하기

    2012.03.09
다른 글 더 둘러보기

정보

#include < ResetDy.com > 블로그의 첫 페이지로 이동

#include < ResetDy.com >

  • #include < ResetDy.com >의 첫 페이지로 이동

검색

메뉴

  • Home
  • Tag
  • Guest Book
  • Write
  • Admin

카테고리

  • 분류 전체보기 (129)
    • VR (3)
    • 내 이야기 (37)
    • Trade (13)
      • 주린이 HTS (0)
      • 주린이 일기 (2)
      • 주린이 공부 (0)
      • 주린이 매매일지 (11)
    • Hardware (2)
      • Tip (1)
      • Schematic (1)
    • Programming (24)
      • C++ (1)
      • C# (5)
      • Python (9)
      • Android (9)
    • MicroProcessor (17)
      • AVR (8)
      • STM32 (6)
      • RaspberryPi (1)
      • Smart Car (2)
    • Computer (23)
      • Tip (6)
      • Linux (5)
      • MacOS (11)
    • Car D.I.Y (10)
      • XMAX300 (1)
      • All New Carnival (5)
      • SM3 (4)

공지사항

블로그 구독하기

  • 구독하기
  • RSS 피드

정보

ResetDy의 #include < ResetDy.com >

#include < ResetDy.com >

ResetDy

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © ResetDy. Designed by Fraccino.

티스토리툴바