#include<avr/io.h>
#define CPU_CLOCK 16000000 //MCU의 속도
#define BAUD_RATE 19200 //동신시 이용할속도?
#define BAUD_RATE_L (CPU_CLOCK / (16l * BAUD_RATE)) -1
#define BAUD_RATE_H ((CPU_CLOCK / (16l * BAUD_RATE)) -1) >> 8
/* 통신속도의 결과 값을 입력하기 위해 상위 비트로 구분
161은 16+L이며, 연산시 값이 너무 커져 OVERFLOW가 발생하므로
32비트연산을 위해 16에 Long을 의미하는 l을 붙인다.*/
void uart_send_byte(unsigned char byte) //1비트전송 함수
{
while (!(UCSR1A & (1 << UDRE))); //전송 버퍼가 빌때 까지 기다린다.
UDR1 = byte; //문자 1개를 전송한다.
}
int main(void)
{
unsigned char buf[] = "Hello DK128!"; //전송할 문자열
unsigned int i;
UBRR1L = (unsigned char)BAUD_RATE_L;
UBRR1H = (unsigned char)BAUD_RATE_H;
//no parity, 1 stop bit, 8bit 설정
UCSR1C = (0 << UPM1) | (0 <<UPM0) | (0 <<USBS) |
(1 << UCSZ1) | (1 << UCSZ0);
//rx/tx interrupt 설정 , 8bit 설정
UCSR1B = (1 << TXEN) | (1 << RXEN) | (0<< UCSZ2);
for(i=0;i < sizeof(buf);i++)//문자단위로 전체 문자열 전송
{
uart_send_byte(buf[i]);//문자 1개를 직렬포트로전송
}
return 1;//종료
}
'임베디드' 카테고리의 다른 글
AVR실습 윈도우 기반의 직렬통신(Read) (0) | 2009.07.14 |
---|---|
AVR실습 윈도우 기반의 직렬통신(Write) (0) | 2009.07.14 |
AVR실습 외부 EEPROM쓰기 (0) | 2009.07.08 |
AVR 실습 내부 EEPROM 쓰기 (0) | 2009.07.07 |
AVR실습//내부 EEPROM 쓰기 (0) | 2009.07.06 |
댓글