목차
1. 변수 및 상수
2. 상수
3. 형 변환
4. 입출력 연산
5. 연산자와 수식
6. 제어 문장
7. 함수
8.포인터와 배열
9. 구조체와 공용체
10. 메모리 종류
11. 실시간 방법
2. 상수
3. 형 변환
4. 입출력 연산
5. 연산자와 수식
6. 제어 문장
7. 함수
8.포인터와 배열
9. 구조체와 공용체
10. 메모리 종류
11. 실시간 방법
본문내용
do_do주_task(void)
{
printf("down selected\n");
}
void main(void)
{
int func_number;
void (*fp) (void); /* fp는 함수를 가리키는 포인터
while(1)
{
printf("\nSelect a function 1-6 ;");
scnaf("%d, &func_number);
if((func_number > 0) && (func_number < 7))
{
fp = task_list[func_number-1];
(*fp)(); /* 함수의 번지 값을 fp에 대입.
} /* 선택된 함수 호출
}
}
9. 구조체와 공용체
구조체와 공용체는 하나의 표제 또는 이름으로 변수들을 묶기 위해 사용.
구조체
한 개 이상의 변수들로부터 단일 데이터 객체를 만드는 방법, 구조체 안의 변수를 멤버라고부른다.
구조체 선언
struct structure_tag_name { struct structure_tag_name {
type member_1; type member_1;
type member_2; 또는 type member_2;
. . . . . .
type member_x; type member_x;
}; } structure_var_name;
struct DATE {
int month; // 일자를 나타내는 구조체의 템플릿 선언
int day;
int year;
} // 구조체 변수를 선언하고 초기화
struct DATE date_of_birth = { 2, 21, 1961 };
struct PART new_location( int x, int y)
{
struct PART temp;
tempart_name = ""; // 이름을 널로 초기화
temp.sku = 0; // sku 번호를 0으로 한다.
temp.bin.x = x; // 위치를 인수로 받은 x와 y값을 한다.
temp.bin.y=y;
return temp; //구조체를 호출 프로그램으로 넘긴다.
}
구조체들의 배열
widget[12].part_name; // widget 12의 명칭
또는
widget[12].part_name[0];
// widget 12의 명칭에서 첫 시작 문자
구조체를 가리키는 포인터
고조체를 가리키는 포인터 선언
struct structure_tag_name *structure_var_name;
struct PART {
char part_name[20] // 부품명을 나타내는 문자열
long it sku; // 부품의 sku 번호
struct LOCATION bin; // 창고 안에서 부품의 위치
}
struct PART widget, *this_widget; // 구조체와 구조체를 가리키는 포인터 선언
. . .
this_widget = &widget;
// 구조체의 번지 값을 포인터의 값으로 한다.
공용체
공용체 선언
union union_tag_name { union union_tag_name {
type member_1; type_member_1;
type member_2; type member_2;
. . . . . .
type member_x; type member_x;
}; } union_var_name;
TYPEDEF 연산자
●
typedf struct
{
char name[20];
char age;
int home_room_number;
} student;
student Bob; // 자료 형이 student인 구조체 형태로 메모리 할당
student Sally;
비트와 비트필드
메모리 공간이 매우 적고 수요가 많을 때 종종 사용.
//비트필드는 대입문에서도 사용할수있다.
PORT.bit_3 = 1;
PORT.bit_5 = 0;
// 비트필드는 조건부 식에서도 사용할 수 있다.
if(PORTB.bit_2 || PORTB.bit_1)
PORT.bit_4 = 1;
sizeof 연산자
단항 연산자라고 부른다. 이 연산자는 컴파일할 때 데이터 객체 또는 그 자료 형의 크기와 관계있는 상수 값을 생성해주는 특징을 가진다.
x= sizeof(int); // int는 2바이트이므로 x=2
x= sizeof(value); // value는 int이므로 x=2
x= sizeof(long); // long는 4바이트이므로 x=4
x=sizeof(record); // x = 24 +2 (문자열과 정수를 더함)
10. 메모리 종류
포인터
//SRAM에 들어 있는 문자열을 가리키는 포인터
char *ptr_to_ram = "This string is placed in SRAM" ;
//FLASH에 들어 있는 문자열을 가리키는 포인터
char flash *ptr_to_flash = "This string is placed in FLASH";
//EEPROM에 들어 있는 문자열을 가리키는 포인터
char *ptr_to_eeprom = "This string is placed in EEPROM";
레지스터 변수
volatile이란 수식어는 마이크로컨트롤러가 취침하는 동안에 변수를 SRAM에 저장해두는 응용에 자주 사용한다.
Sfrb와 strw
입출력 포트와 주변 장치는 레지스터 파일에 위치한다.
sfrb와 sfrw 주요어는 컴파일러에게 IN과 OUT 어셈블리 명령어를 사용하여 AVR 마이크로컨트롤러의 입출력 레지스터를 접근하라고 지시
●
strb PORTA=0x1b;
strb DDRA=0x18;
strb PINA=0x19;
void main(void)
{
DDRA.0 = 1; // 포트 A의 비트 0을 출력으로 설정
DDRA.1 = 0; // 포트 A의 비트 1을 입력으로 설정
PORTA.0 = 1; // 포트 A의 비트 0을 1로 설정
while(1)
{
if (PINA.1) // 포트 A의 비트 1 입력을 시험
PORTA.0 = 0;
}
}
11. 실시간 방법
인트럽트
인트럽트는 외부 또는 내부 하드웨어 소스에 의한 예외 프로그램 흐름의 변경 또는 프로그램 동작의 일시중지를 말한다.
interrupt [EXT_INT0] void external_int0(void)
{
/* 외부 인트럽트 0이 걸리면 자동으로 호출
}
{
printf("down selected\n");
}
void main(void)
{
int func_number;
void (*fp) (void); /* fp는 함수를 가리키는 포인터
while(1)
{
printf("\nSelect a function 1-6 ;");
scnaf("%d, &func_number);
if((func_number > 0) && (func_number < 7))
{
fp = task_list[func_number-1];
(*fp)(); /* 함수의 번지 값을 fp에 대입.
} /* 선택된 함수 호출
}
}
9. 구조체와 공용체
구조체와 공용체는 하나의 표제 또는 이름으로 변수들을 묶기 위해 사용.
구조체
한 개 이상의 변수들로부터 단일 데이터 객체를 만드는 방법, 구조체 안의 변수를 멤버라고부른다.
구조체 선언
struct structure_tag_name { struct structure_tag_name {
type member_1; type member_1;
type member_2; 또는 type member_2;
. . . . . .
type member_x; type member_x;
}; } structure_var_name;
struct DATE {
int month; // 일자를 나타내는 구조체의 템플릿 선언
int day;
int year;
} // 구조체 변수를 선언하고 초기화
struct DATE date_of_birth = { 2, 21, 1961 };
struct PART new_location( int x, int y)
{
struct PART temp;
tempart_name = ""; // 이름을 널로 초기화
temp.sku = 0; // sku 번호를 0으로 한다.
temp.bin.x = x; // 위치를 인수로 받은 x와 y값을 한다.
temp.bin.y=y;
return temp; //구조체를 호출 프로그램으로 넘긴다.
}
구조체들의 배열
widget[12].part_name; // widget 12의 명칭
또는
widget[12].part_name[0];
// widget 12의 명칭에서 첫 시작 문자
구조체를 가리키는 포인터
고조체를 가리키는 포인터 선언
struct structure_tag_name *structure_var_name;
struct PART {
char part_name[20] // 부품명을 나타내는 문자열
long it sku; // 부품의 sku 번호
struct LOCATION bin; // 창고 안에서 부품의 위치
}
struct PART widget, *this_widget; // 구조체와 구조체를 가리키는 포인터 선언
. . .
this_widget = &widget;
// 구조체의 번지 값을 포인터의 값으로 한다.
공용체
공용체 선언
union union_tag_name { union union_tag_name {
type member_1; type_member_1;
type member_2; type member_2;
. . . . . .
type member_x; type member_x;
}; } union_var_name;
TYPEDEF 연산자
●
typedf struct
{
char name[20];
char age;
int home_room_number;
} student;
student Bob; // 자료 형이 student인 구조체 형태로 메모리 할당
student Sally;
비트와 비트필드
메모리 공간이 매우 적고 수요가 많을 때 종종 사용.
//비트필드는 대입문에서도 사용할수있다.
PORT.bit_3 = 1;
PORT.bit_5 = 0;
// 비트필드는 조건부 식에서도 사용할 수 있다.
if(PORTB.bit_2 || PORTB.bit_1)
PORT.bit_4 = 1;
sizeof 연산자
단항 연산자라고 부른다. 이 연산자는 컴파일할 때 데이터 객체 또는 그 자료 형의 크기와 관계있는 상수 값을 생성해주는 특징을 가진다.
x= sizeof(int); // int는 2바이트이므로 x=2
x= sizeof(value); // value는 int이므로 x=2
x= sizeof(long); // long는 4바이트이므로 x=4
x=sizeof(record); // x = 24 +2 (문자열과 정수를 더함)
10. 메모리 종류
포인터
//SRAM에 들어 있는 문자열을 가리키는 포인터
char *ptr_to_ram = "This string is placed in SRAM" ;
//FLASH에 들어 있는 문자열을 가리키는 포인터
char flash *ptr_to_flash = "This string is placed in FLASH";
//EEPROM에 들어 있는 문자열을 가리키는 포인터
char *ptr_to_eeprom = "This string is placed in EEPROM";
레지스터 변수
volatile이란 수식어는 마이크로컨트롤러가 취침하는 동안에 변수를 SRAM에 저장해두는 응용에 자주 사용한다.
Sfrb와 strw
입출력 포트와 주변 장치는 레지스터 파일에 위치한다.
sfrb와 sfrw 주요어는 컴파일러에게 IN과 OUT 어셈블리 명령어를 사용하여 AVR 마이크로컨트롤러의 입출력 레지스터를 접근하라고 지시
●
strb PORTA=0x1b;
strb DDRA=0x18;
strb PINA=0x19;
void main(void)
{
DDRA.0 = 1; // 포트 A의 비트 0을 출력으로 설정
DDRA.1 = 0; // 포트 A의 비트 1을 입력으로 설정
PORTA.0 = 1; // 포트 A의 비트 0을 1로 설정
while(1)
{
if (PINA.1) // 포트 A의 비트 1 입력을 시험
PORTA.0 = 0;
}
}
11. 실시간 방법
인트럽트
인트럽트는 외부 또는 내부 하드웨어 소스에 의한 예외 프로그램 흐름의 변경 또는 프로그램 동작의 일시중지를 말한다.
interrupt [EXT_INT0] void external_int0(void)
{
/* 외부 인트럽트 0이 걸리면 자동으로 호출
}
추천자료
캐쉬 메모리에 관해서
빌게이츠 기업가 사례보고서
[뉴미디어]뉴미디어의 등장, 뉴미디어의 개념, 뉴미디어의 종류, 뉴미디어의 특성, 뉴미디어...
음성인식 리모컨
arm보드 C# 기반 제안서
적외선센서를 이용한 자동문 (졸업작품) 8051사용
안테나 공학 요약정리
ADC DAC의 종류와 시뮬레이션
[실험보고서] 금속의 현미경 조직 실험
인텔 계열 cpu의 발전사
데이터 구조 - 소팅[Sorting Program]프로그램에 관해서
[IT와경영정보시스템 공통] (1) 컴퓨터 시스템을 분류하는 기준은 다양하다. 현대의 컴퓨터를...
컴퓨터의 이해 - 입력장치, 출력장치, 기억장치, 중앙처리장치 CPU, 2차원 바코드의 개념과 ...