스마트 컨트롤러 - 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문 안의 조건 UCSR0A0B00010011이고 1<<UDRE(5)0B00010000이다.

즉 버터가 차 있을 때 0을 전송하게 되면 위의 연산의 결과 값은 0이 된다. 여기에 '!'부정이 더해져 1이 되면 루프가 진행된다. 때문에 shift register에 데이터가 전송되지 않는다.

 

//Polling방식: CPU가 한 가지 명령어를 지속적으로 수행하여 다른 일은 할 수 없는 방식

LCD.c

LCD.h

Main.c

UART.c

 

 

UART.h

 

짜잔 결과값!





반응형
Posted by newind2000