BASIC4MCU | C언어 | C언어 | 졸면서 보는 C Tip - 14. 구조체 시리얼 송신
페이지 정보
작성자 키트 작성일2017-09-12 12:58 조회1,865회 댓글0건본문
14. 구조체 시리얼 송신
//
#include <mega128.h>
#include <string.h>
//
struct my{
char c[2]; // 2바이트
int i; // 2바이트
long l; // 4바이트
double d; // 4바이트
}test; // test라는 이름의 구조체 선언
//void TX0_CH(char ch){ while(!(UCSR0A&0x20)); UDR0=ch; } // 송신함수
char RX0_CH(void) { while(!(UCSR0A&0x80)); return UDR0; } // 수신함수
//
void main(void){int i;
UCSR0B=0x18; UBRR0H=0; UBRR0L=103; //9600, 송신, 수신 함수
while(1){
for(i=0;i<12;i++)TX0_CH(test.c[i]); // 구조체 시리얼 전송
//
delay_ms(1000);
//
}
}
c가 가진 유연성(?) 덕분에 구조체 전송도 쉽게 처리 됩니다.
구조체는 여러가지 데이터형으로 선언 되어 있지만 전체를 char[]로 처리 가능 합니다.
제일 처음의 데이터형이 char 형의 배열로 되어 있어야지 가능하겠죠
제 경우에는 구조체 첫 데이터는 char 형의 배열 사용이 습관화 되어 있습니다.
윈도우 c컴파일러 경우엔 배열의 범위를 벗어나기 때문에 워닝이나 에러 처리를 해줄겁니다.
수신하는 곳에서도 같은 구조체를 선언하고
동일한 위치가 되도록 복사하면 됩니다.
rx_buf[]에 12바이트를 수신했다면
for(i=0;i<12;i++)test.c[i]=rx_buf[i]; // 구조체 복사
msmcpy() 함수를 사용해도 되겠죠
댓글 0
조회수 1,865등록된 댓글이 없습니다.