아래 언싱크 통신에 이어서 입니다.
두가닥의 선을 이용하며 단방향 통신입니다.

송신부 소스

#define BITS 8


void sendData(unsigned char ucData){

unsigned char i;

for(i=0; i<BITS; i++){

if((ucData >> i) & 0x01)

PORTB |= 0x01;

else

PORTB &= 0xFE;

delay_us(50);

PORTB &= 0xFD;

delay_us(50);

PORTB |= 0x02;

}

}



void main( void ){

unsigned char ucKey;

DDRA = 0xF0;

DDRB = 0xFF;

PORTB |= 0x02;

while(1){

ucKey = 'a';

sendData(ucKey);

delay_ms(10);

};

}


수신부 소스
#define BITS 8



void main( void ){

unsigned char ucKey=0, ucFlag=0, ucShift=0;

unsigned char timeoutCount=0;

DDRA = 0xFC;

DDRB = 0xFF;

while(1){

delay_us(10);

if(PINA & 0x02){

ucFlag=1;

}else if(ucFlag){

ucFlag=0;

timeoutCount=0;

ucKey |= (PINA&0x01) << ucShift;

ucShift++;

}

if(ucShift == BITS){

PORTB = ucKey;

ucShift = 0;

}

if(++timeoutCount>100){

ucShift=0;

ucKey=0;

timeoutCount=0;

}

};

}


수정해서 쓰기는 조금 모호하니까... 원리만 이해 하시고 직접 만들어서 쓰시길 권합니다.

http://magicom9.tistory.com/48

'Old category > 비밀의방' 카테고리의 다른 글

PS/2 마우스  (0) 2011.10.15
PS/2 키보드  (0) 2011.10.15
시리얼통신 (unsynchronous)  (0) 2011.10.15
USART (RS232)  (0) 2011.10.15
AVR 내부 EEPROM 사용 함수  (0) 2011.10.15

+ Recent posts