728x90
반응형
ADC - Analog to Digital
아날로그를 디지털로 변환
DAC - Digital to Analog
디지털을 아날로그로 변환
시리얼 데이터 통신
main.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include "main.h" #include "lcd.h" #include "usart.h" int main(void) { unsigned char ucData; LCD_Init(); // usart0_Init(); sei(); usart0_Str("AVR on"); while(1) { ucData = usart0_Rx(); //리턴 값이 LCD_Data(ucData);// lcd에 출력 } return 0; } | cs |
9번 : usart0_Init(); //usart 초기화
13번 : 시리얼 포트 연결시 표시될 문자열 AVR on
17번 : 수신된 데이터를 ucData에 넣은뒤
18번 : LCD에 뿌려줌
usart.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | #include "usart.h" void usart0_Init(void) // 초기화 { UBRR0H = (unsigned long)(( OSC / (16.0 * BAUD))-0.5)>>8; // (fosc/16*baud) -1 //115200 bps UBRR0L = (unsigned long)(( OSC / (16.0 * BAUD))-0.5); // 오차가 나므로 -1 + 0.5 //UCSR0A = (0 << RXC) |(0 << TXC ) |(0 << UDRE )|(0 << FE ) |(0 << DOR )|(0 << UPE) |(0 << U2X) |(0 << MPCM); UCSR0A = (0 << U2X) |(0 << MPCM); //UCSR0B = (0 << RXCIE) |(0 << TXCIE) |(0 << UDRIE)|(1 << RXEN)|(1 << TXEN)|(1 << UCSZ2)|(0 << RXB8 )|(0 << TXB8); UCSR0B = (1 << RXEN)|(1 << TXEN)|(0 << UCSZ2); //UCSR0C = (0 << UMSEL1)|(0 << UMSEL0)|(1 << UPM1) |(1 << UPM0)|(1 << USBS)|(1 << UCSZ1)|(1 << UCSZ0)|(0 << UCPOL); UCSR0C=(0<<UMSEL1)|(0<<UMSEL0)|(1<<UPM1)|(1<<UPM0)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0)|(0<<UCPOL); return; } unsigned char usart0_Rx(void) // 수신을 기다리는 함수 { while( 0 == ((1 << RXC)&UCSR0A)); // data 가 수신될때까지 기다림 return UDR0; // } void usart0_Tx(unsigned char ucData) // usart 0번에 전송 { while( 0 == ((1 << UDRE)&UCSR0A)); // data 기다림 UDR0 = ucData; // return; } void usart0_Str(char const *cString) //usart0의 문자열 전송함수 { while(0 != *cString) { usart0_Tx(*cString); ++cString; } } void usart1_Init(void) { UBRR1H = (unsigned long)((OSC/(16.0*BAUD))-0.5)>>8; UBRR1L= ((OSC/(16.0*BAUD))-0.5); //UCSR1A = (0≪RXC)|(0≪ TXC)|(0≪ UDRE)|(0≪ FE)|(0≪ DOR) |(0≪UPE)|(0≪ U2X)|(0≪ MPCM); UCSR1B = (0<<RXCIE)|(0<< TXCIE)|(0<< UDRIE)|(1<< RXEN)|(1<< TXEN) |(0<<UCSZ2)|(0<< RXB8)|(0<< TXB8); UCSR1C=(0<<UMSEL1)|(0<<UMSEL0)|(1<<UPM1)|(1<<UPM0)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0)|(0<<UCPOL); } unsigned char usart1_Rx(void) //1번 수신 { while(((1<<RXC) & UCSR1A)==0); return UDR1; } void usart1_Tx(unsigned char ucData)// usart 1번에 전송 { while(((1<<UDRE) & UCSR1A)==0); UDR1=ucData; } void usart1_Str(const char *cString)//문자열 전송함수 { while(0 != (*cString))//!=같지 않음 { usart1_Tx(*cString); ++cString; } } | cs |
728x90
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
20160401_노유찬_리눅스 명령어 (1) | 2016.04.04 |
---|---|
20160330_김도관_업무일지_C언어기초 및 리눅스기초 (0) | 2016.04.03 |
20160324_김도관_업무일지_시리얼통신4_저항및온도측정,PWM (0) | 2016.04.03 |
20160323_김도관_업무일지_시리얼통신3_저항연결 (0) | 2016.04.03 |
20160321_김도관_업무일지_시리얼통신1 (0) | 2016.04.03 |
20160403_김가연_스터디일지_섭씨 화씨 변환 소스 (7) | 2016.04.03 |
20160401_조재찬_업무일지_리눅스 터미널 및 통신 (6) | 2016.04.02 |
WINSCP -SFTP 및 FTP 클라이언트 프로그램 (0) | 2016.04.02 |