스마트 컨트롤러 - ATmega128a를 활용한 데이터 송신
학습목표 - ATmega128a를 활용하여 데이터를 PC로 송신할 수 있다.
void USART0_TX( unsigned char ucData )
{
// Wait for empty transmit buffer
while ( !( UCSR0A & (1<<UDRE)) );
// Put data into buffer, sends the data
UDRE= ucData;
}
Datasheet에 나와 있는 다음의 소스코드를 분석해 보자.
UDREn은 버퍼가 비어 있을 때 1이고, 버퍼가 차 있을 때 0이다.
위의 while문 안의 조건 UCSR0A는 0B00010011이고 1<<UDRE(5)는 0B00010000이다.
즉 버터가 차 있을 때 0을 전송하게 되면 위의 연산의 결과 값은 0이 된다. 여기에 '!'부정이 더해져 1이 되면 루프가 진행된다. 때문에 shift register에 데이터가 전송되지 않는다.
//Polling방식: CPU가 한 가지 명령어를 지속적으로 수행하여 다른 일은 할 수 없는 방식
LCD.c
LCD.h
Main.c
UART.c
UART.h
짜잔 결과값!
반응형
'Busan IT > 스마트 컨트롤러' 카테고리의 다른 글
LCD에 이름 띄우기 도움말, 그림 파일에 대한 기본 이해, 스트림과 데이터의 이동 (0) | 2015.03.30 |
---|---|
ATmega128a를 사용한 LCD 데이터 전송 (0) | 2015.03.27 |
PIC16F917 카운터 업&다운 코딩 (0) | 2015.03.26 |
ATmega를 이용한 시리얼 통신 설정 (0) | 2015.03.25 |
시리얼 통신 UBRR register (0) | 2015.03.24 |