목차
[10.1] USART0 송신 실험
<소스>
<소스 설명>
[10.2] USART0 송수신 실험
<소스>
<소스 설명>
[10.3] 인터럽트를 사용한 USART0 송수신 실험
<소스>
<소스 설명>
[10.4] 컴파일러에서 제공하는 라이브러리 함수를 이용한 USART 송신 실험
<소스>
<소스 설명>
<소스>
<소스 설명>
[10.2] USART0 송수신 실험
<소스>
<소스 설명>
[10.3] 인터럽트를 사용한 USART0 송수신 실험
<소스>
<소스 설명>
[10.4] 컴파일러에서 제공하는 라이브러리 함수를 이용한 USART 송신 실험
<소스>
<소스 설명>
본문내용
송된 문자열을 확인 할 수 있다. (DataBit = 8 bit, StopBit = 1, Parity = None)
<소스>
#include
#include
flash char fstr[10] = "Hello!! ";
void main(void)
{
char string1[] = "Atmel RISC Microprocessor ";
char string2[] = "AVR ATmega128";
char *pStr;
char flash *pFstr;
// USART 최기화
UCSR0A = 0x0;
UCSR0B = 0b00011000;// 송수신 인에이블 TXEN = 1, RXEN=1
UCSR0C = 0b10000110;// 비동기 데이터 8비트 모드
UBRR0H = 0; // X-TAL = 16MHz 일때, BAUD = 9600
UBRR0L = 103;
// putsf() 함수
pFstr = fstr;
putsf(pFstr);
// puts() 함수
puts(string1);
// putchar() 함수
pStr = string2;
while(*pStr) putchar(*pStr++);
// printf() 함수
printf("Evaluation Board Test");
// getchar() 함수
while(1) putchar(getchar());
}
<소스 설명>
먼저 USART통신을 하기 위한 레지스터 설정을 살펴보면 UCSR0A 레지스터를 0x00으로 설정함으로써, USART를 초기화 시켰습니다. 다음 UCSR0B 레지스터를 보시면 bit3,4가 1로 셋이 되어있는데, bit3은 TXENn(Transmitter Enable, 송신기 인에이블)로 비트가 1이면 송신기가 인에이블 되어 송신 가능 상태가 되며, TxDn핀이 범용 I/O포트가 아니라 송신 단자로 동작하게 됩니다. bit4는 RXENn(Receiver Enable, 수신기 인에이블)로 비트가 1이면 수신기가 인에이블 되어 수신 가능 상태가 되며, RxDn핀이 범용 I/O포트가 아니라 수신 단자로 동작하게 됩니다. UCSR0C레지스터를 보시면 bit1,2,7이 1로 셋이 되어 있는데, bit1,2는 UCSZn1, UCSZn0(Character Size, 전송 데이터 비트 수 설정)로 이 두 비트는 UCSRnB레지스터의 UCSZn2와 함께 전송 데이터의 비트 수(한 번에 보내고자 하는 비트 수)를 설정합니다.
UCSZn2
UCSZn1
UCSZn0
데이터 비트 수
0
1
1
8비트
putsf(char flash * str) 함수는 커서가 위치한 곳에서 FLASH의 문자열을 출력합니다. puts(char * str) 함수는 커서가 위치한 지점에 SRAM의 문자열을 출력합니다. 단, 문자열을 먼저 선언하여야 합니다. putchar(char c)는 커서가 위치한 지점에 문자를 출력합니다. printf()는 C언어에서 그렇듯이 문자열과 그 이외의 모든 것을 출력할 수 있는 함수입니다. getchar()는 입력받은 문자 값을 말합니다.
<소스>
#include
#include
flash char fstr[10] = "Hello!! ";
void main(void)
{
char string1[] = "Atmel RISC Microprocessor ";
char string2[] = "AVR ATmega128";
char *pStr;
char flash *pFstr;
// USART 최기화
UCSR0A = 0x0;
UCSR0B = 0b00011000;// 송수신 인에이블 TXEN = 1, RXEN=1
UCSR0C = 0b10000110;// 비동기 데이터 8비트 모드
UBRR0H = 0; // X-TAL = 16MHz 일때, BAUD = 9600
UBRR0L = 103;
// putsf() 함수
pFstr = fstr;
putsf(pFstr);
// puts() 함수
puts(string1);
// putchar() 함수
pStr = string2;
while(*pStr) putchar(*pStr++);
// printf() 함수
printf("Evaluation Board Test");
// getchar() 함수
while(1) putchar(getchar());
}
<소스 설명>
먼저 USART통신을 하기 위한 레지스터 설정을 살펴보면 UCSR0A 레지스터를 0x00으로 설정함으로써, USART를 초기화 시켰습니다. 다음 UCSR0B 레지스터를 보시면 bit3,4가 1로 셋이 되어있는데, bit3은 TXENn(Transmitter Enable, 송신기 인에이블)로 비트가 1이면 송신기가 인에이블 되어 송신 가능 상태가 되며, TxDn핀이 범용 I/O포트가 아니라 송신 단자로 동작하게 됩니다. bit4는 RXENn(Receiver Enable, 수신기 인에이블)로 비트가 1이면 수신기가 인에이블 되어 수신 가능 상태가 되며, RxDn핀이 범용 I/O포트가 아니라 수신 단자로 동작하게 됩니다. UCSR0C레지스터를 보시면 bit1,2,7이 1로 셋이 되어 있는데, bit1,2는 UCSZn1, UCSZn0(Character Size, 전송 데이터 비트 수 설정)로 이 두 비트는 UCSRnB레지스터의 UCSZn2와 함께 전송 데이터의 비트 수(한 번에 보내고자 하는 비트 수)를 설정합니다.
UCSZn2
UCSZn1
UCSZn0
데이터 비트 수
0
1
1
8비트
putsf(char flash * str) 함수는 커서가 위치한 곳에서 FLASH의 문자열을 출력합니다. puts(char * str) 함수는 커서가 위치한 지점에 SRAM의 문자열을 출력합니다. 단, 문자열을 먼저 선언하여야 합니다. putchar(char c)는 커서가 위치한 지점에 문자를 출력합니다. printf()는 C언어에서 그렇듯이 문자열과 그 이외의 모든 것을 출력할 수 있는 함수입니다. getchar()는 입력받은 문자 값을 말합니다.
추천자료
하드웨어 구조
『Forbes지가 선정한 미국을 만든 비즈니스 영웅 20』
컨트롤러의 동향과 미래
전자시계
[AVR][졸업작품]디지털가습기 , HS1100 , LCD [ATMEGA8515]
mpc860과 pic를 통해 원거리 원격으로 모터제어를 실시함(자동과수동모드로제어)
PIC의 개념과 이를 이용한 LED포트 설계 및 인터럽트 구성
임베디드 중 CISC와 RISC에 대하여
조도측정기
컴퓨터의 이해 문제풀이 레포트
컴퓨터 공학과의 진보적 입장
인텔 계열 cpu의 발전사
[인텔][Intel][인텔 역사][인텔 의의][인텔 P2P사업][인텔 펜티엄][인텔 전략]인텔(Intel)의 ...
[반도체 기업][기업][한국][삼성][SK하이닉스][미국][인텔][AMD]한국 반도체 기업 삼성(Samsu...