#include <avr/io.h>
#include <util/delay.h>
void sendByte(int data);
void readByte(void);
void setup(void);
int main(void)
{
setup();
// 데이타 레지스터에 보낼 데이타를 저장한다.
char txData[] = "Hello World";
int i = 0;
unsigned int recvData = 0;
//UDR0 = "Hello World" (X) // rx, tx 8bit 씩. 한개씩 넣어줘야한다.
for (i = 0; i < 15; ++i)
{
sendByte(txData[i]);
}
while(1)
{
// pc에서 1byte 데이타를 받는다.
// UDR0에 테이타가 수신되었는지 확인한다.
while( (UCSR0A & 0x80) == 0 )// RXCn <- 1된 상태 확인
;
//UDR0에서 데이타를 가져온다.
recvData = UDR0;
// 다시 데이타를 받을 준비를 한다.
UCSR0A != 0x80;
// 받은 데이타를 보낸다.
sendByte( recvData );
}
return 0;
}
void sendByte(int data)
{
while((UCSR0A & 0x20) == 0)
; //UCSR0A = 0x20;
//<- UDREn(xx10 =xx 1로 설정되었는지 본다.즉, UDR0가 비어있는 확인한다.
UDR0 = data;
UCSR0A |= 0x20;
}
void readByte(void)
{
}
void setup(void)
{
DDRE = 0xFD; // rx -> pe0 input 0000 0000
// tx -> p4 1`output 000 0010
UCSR0A = 0x00; // 다 안쓰니까 무시. 0으로.
UCSR0B = 0x18; //<- TXEn 설정 데이타 송신합니다. (xxxx 1xxx)
//<- UCSZn2 데이타 8bit 전송으로 (xxxx x0xx)으로 설정
UCSR0C = 0x06; //<- 비동기 (0xxx xxxx)
// No parity (xx00 xxx)
// 데이타 전송 8bit (xxxx x11x)
// 동기모드일때 설정(xxxx xxx0)
UBRR0H = 0x00; // 7372800 -> 115200( 비동기 일반모드)
UBRR0L = 0x03;
}
'AVR' 카테고리의 다른 글
config (0) | 2015.04.14 |
---|---|
ADConverter (0) | 2015.04.14 |
PDF - AVR MCU (ATmega128) (0) | 2015.04.13 |
interruptClock (0) | 2015.04.13 |
interruptTimer (0) | 2015.04.13 |
interruptStopWatch (0) | 2015.04.13 |
Interrupt (0) | 2015.04.10 |
switch (0) | 2015.04.10 |