//=====================================================
// 파일명 A.C
// 코드비젼 컴파일러
//=====================================================
// 코드 최적화 금지
#pragma opt-
//=====================================================
#include <mega128.h>
#include <delay.h>
//=====================================================
#define U_C unsigned char
#define F_C flash char
//=====================================================
F_C msg1[] = \"기말텀프로젝트\\r\\n\";
F_C msg2[] = \"시리얼리모콘\\r\\n\";
F_C msg3[] = \"하드웨어\\r\\n\";
F_C msg4[] = \"소프트웨어\\r\\n\";
//=====================================================
// 시리얼1 수신 인터럽트
void TX1_CHAR(U_C Sdata){ while (!(UCSR1A&0x20)); UDR1=Sdata; } // 송신함수
//
interrupt [USART1_RXC] void usart1_rx_isr(void){ // 수신 인터럽트
U_C Rdata, i;
Rdata=UDR1;
if (Rdata==\'1\'){ i=0; while(msg1[i]){ TX1_CHAR(msg1[i++]); } }
else if(Rdata==\'2\'){ i=0; while(msg2[i]){ TX1_CHAR(msg2[i++]); } }
else if(Rdata==\'3\'){ i=0; while(msg3[i]){ TX1_CHAR(msg3[i++]); } }
else if(Rdata==\'4\'){ i=0; while(msg4[i]){ TX1_CHAR(msg4[i++]); } }
}
//=====================================================
// 메인함수
void main(void){
// 시리얼1
DDRD=8; // TXD1 PORTD.3
UCSR1A=0; UCSR1B=0x98; UCSR1C=6; UBRR1H=416/256; UBRR1L=416&0xFF; //2400
//CTC Mode
DDRB=0xFF; // PORTB.5=A
OCR1A=210; // 16000000/(1+210)=75800Hz
TCCR1A=0x40; TCCR1B=9; TCCR1C=0x80; //WGM11=0, WGM10=0, WGM13=0, WGM12=1
//
#asm(\"sei\")
//
while(1){}
}
//=====================================================
// 파일명 B.C
// 코드비젼 컴파일러
//=====================================================
// 코드 최적화 금지
#pragma opt-
//=====================================================
#include <mega128.h>
#include <delay.h>
//=====================================================
#define U_C unsigned char
//=====================================================
#define SW1 PINA.0
#define SW2 PINA.1
#define SW3 PINA.2
#define SW4 PINA.3
//=====================================================
U_C Rx1Cnt=0, Rx1Buf[100];
//=====================================================
// 시리얼0 수신 인터럽트
void TX0_CHAR(U_C Sdata){ while ((UCSR0A&0x20)==0); UDR0=Sdata; } // 송신함수
//
// 시리얼1 수신 인터럽트
void TX1_CHAR(U_C Sdata){ while ((UCSR1A&0x20)==0); UDR1=Sdata; } // 송신함수
//
interrupt [USART1_RXC] void usart1_rx_isr(void){ // 수신 인터럽트
U_C R1data, i;
R1data=UDR1;
if(R1data==0x0A){
Rx1Buf[Rx1Cnt++]=R1data;
Rx1Buf[Rx1Cnt++]=0;
i=0; while(Rx1Buf[i]){ TX0_CHAR(Rx1Buf[i++]); }
Rx1Cnt=0;
}
else{ if(Rx1Cnt<90)Rx1Buf[Rx1Cnt++]=R1data; }
}
//=====================================================
// 메인함수
void main(void){
PORTA=0xFF; // 내부풀업저항 사용
// 시리얼0 (128은 ISP와 공용으로 사용되므로 주의)
DDRE=2; // TXD0 PORTE.1
UCSR0A=0; UCSR0B=0x18; UCSR0C=6; UBRR0H=416/256; UBRR0L=416&0xFF; //2400
// 시리얼1
DDRD=8; // TXD1 PORTD.3
UCSR1A=0; UCSR1B=0x98; UCSR1C=6; UBRR1H=416/256; UBRR1L=416&0xFF; //2400
//CTC Mode
DDRB=0xFF; // PORTB.5=A
OCR1A=210; // 16000000/(1+210)=75800Hz
TCCR1A=0x40; TCCR1B=9; TCCR1C=0x80; //WGM11=0, WGM10=0, WGM13=0, WGM12=1
//
#asm(\"sei\")
//
while(1){
if(!SW1){ TX1_CHAR(\'1\'); while(!SW1); delay_ms(100); }
if(!SW2){ TX1_CHAR(\'2\'); while(!SW2); delay_ms(100); }
if(!SW3){ TX1_CHAR(\'3\'); while(!SW3); delay_ms(100); }
if(!SW4){ TX1_CHAR(\'4\'); while(!SW4); delay_ms(100); }
}
}
제가 당신보다 뛰어나진않지만 적어도 저한테 욕짓거리할정도로 쩌는분인지 궁금합니다
여태까지 발광수광센서로 두모듈을통해 시리얼통신하는것을 짜온 소스입니다
완벽한 소스는아니지만 쩌는님을위해 몇개의 주석을달았고
이걸이해하고 설명해주신다면 제가 욕을 달게먹겠으나,
설명도못하고 대체 뭔소린가 고민하신다면 제가 욕을하겠습니다
c가 답변을 안달면 어떻게 됩니까?
c형 졸라 점 이런거 기본
안달아도 상관없습니다 전 여태 제가 이만큼했고 여기서 도움을 얻으려 한것을 증명하려고 올린거니까요.
단지 욕먹을짓했다고 첨보는사람에게 욕을하는것은 좀 아닌것같습니다.
c를 제외한 다른 플갤여러분께 눈살을 찌푸리게 했다면 죄송합니다 그럼 가보겠습니다 건승하세요~
ㅂㅂ
그래서 너는 잘하는 짓이다? 이런 시발럼이 쳐안된다고 문화상품권 떡밥 던져 주면서 해달라는 별 시덥잖은 딜을 요구쳐하네 이런 개 시발넘이
너같은 병신이 일주일에 20명쯤 나타나.. 컨셉도 재미없고 예선탈락 병신이다.
리모콘 스펙은 어딨죠? 하드웨어 설계도는요? AVR 두개가 UART로 서로 메시지 주고 받는 소스밖엔 안 보이네요