아래 언싱크 통신에 이어서 입니다.
두가닥의 선을 이용하며 단방향 통신입니다.
송신부 소스
#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;
}
};
}
'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 |