//---------USART 레지스트리 설정
#define UDR1 (*(volatile unsigned char *)0x9C)
#define UCSR1A (*(volatile unsigned char *)0x9B)
#define UCSR1B (*(volatile unsigned char *)0x9A)
#define UCSR1C (*(volatile unsigned char *)0x9D)
#define UBRR1L (*(volatile unsigned char *)0x99)
#define UBRR1H (*(volatile unsigned char *)0x98)
//--------- 통신 값 설정
#define CPU_CLOCK 16000000
#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
//--------- 레지스트리 비트값(UCSR1C)
#define UPM1 5
#define UPM0 4
#define USBS 3
#define UCSZ1 2
#define UCSZ0 1
//--------- 레지스트리 비트값(UCSR1B)
#define TXEN 3
#define RXEN 4
#define UCSZ2 2
//--------- 레지스트리 비트값(UCSR1A)
#define UDRE 5
void uart_send(unsigned char st)
{
while(!(UCSR1A & (1<<UDRE)));
UDR1 = st;
}
int main(void)
{
unsigned char buf[] = "Hello DK128!";
unsigned int i;
UBRR1L = (unsigned char)BAUD_RATE_L;
UBRR1H = (unsigned char)BAUD_RATE_H;
UCSR1C = (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0);
UCSR1B = (1<<TXEN) | (1<<RXEN) | (0<<UCSZ2);
for(i=0;i<sizeof(buf);i++)
{
uart_send(buf[i]);
}
return 0;
}
'About 프로그래밍!!! > ATmega128' 카테고리의 다른 글
[ATmega128] 아트메가랑 PC랑 통신하기2 (0) | 2010.07.20 |
---|---|
[ATmega128] 아트메가랑 PC랑 통신하기1 (0) | 2010.07.20 |
[ATmega128] 복습 (0) | 2010.07.20 |
[ATmega128] PC내에서 통신하기.(양방향) (0) | 2010.07.19 |
[ATmega128] PC내에서 통신하기.(단방향) (0) | 2010.07.19 |