Page 538 - 2
P. 538
UBRR1L = 103; // 통신속도 9600Bps 설정
UCSR0A = 0x00;
UCSR0B = 0x18; // 수신기 송신기, Enable 설정
UCSR0C = 0x06; // 8Bit 데이터 전송 설정
UBRR0L = 103; // 통신속도 9600Bps 설정
while(1)
{
// 수신 코드 ( 데이터를 받아 변수에 정리해 저장 )
if(UCSR1A & 0x80){ // 항상 수신
data = UDR1; // 통신을 통해 data 변수에 받아
now = ((data & 0x70) >> 4); // 플래그 추출(000~100)
if(now != past)
{
angle[now] &= 0xf0; // angle 의 하위 4 비트를 And 처리해 하위비트 4 비트를 ' 0000 ' 으로 만듬
angle[now] |= (data & 0x0f); //data 의 4 비트를 angle 하위 비트에 저장4
} else { // 같은 플래그가 두번 들어와 한번은 하위 4 비트에 한번은 상위, 4 비트에 각각 저
장함
angle[now] &= 0x0f; // angle 의 상위 4 비트를 And 처리해 상위비트 4 비트를 ' 0000 ' 으로 만듬
angle[now] |= ((data & 0x0f) << 4); //data 의 4 비트를 angle 상위 비트에 저장4
}
past = now; // 같은 플래그면 정보를 2 번을 받기 위함
}
/*
{
if(flag >= 5)
{
flag = 0;
for(i = 0; i < 45; i++)
{
while(!(UCSR0A & 0x20));
UDR0 = ' ';
}
}
while(!(UCSR0A & 0x20));
UDR0 = flag + '0';
while(!(UCSR0A & 0x20));
UDR0 = '/';
while(!(UCSR0A & 0x20));
UDR0 = angle[flag]/1000%10 + '0';
- 538 -