목차
제1장 C 언어
1-1 첫걸음 = 17
1-1-1. C 언어 구성요소 = 17
1-1-1-1. 문장 형식 = 17
1-1-1-2. 식별자 혹은 이름 = 19
1-1-1-3. 예약어(Keyword) = 21
1-1-1-4. 주석(comment) = 21
1-1-1-5. 공백문자(white space) = 22
1-1-1-6. 구분하는 기호 = 22
1-1-1-7. 상수 = 23
1-1-2. 데이터·형 = 26
1-1-2-1. 데이터·형의 종류 = 26
1-1-2-2. 부호있는 데이터와 부호없는 데이터 = 27
1-1-2-3. 정수 데이터·형의 비트 길이 = 30
1-1-2-4. 부동 소수점 숫자 = 30
1-1-2-5. 캐스트(cast) 연산자 = 31
1-1-3. 연습문제 = 33
1-1-3-1. 데이터·형 크기 이해하기 = 33
1-1-3-2. 데이터·형 이해하기 = 36
1-1-3-3. 캐스트 연산자 이해하기 = 38
1-2 연산 = 40
1-2-1. 산술 연산 = 40
1-2-1-1. 단항식 = 40
1-2-1-2. 산술식 = 42
1-2-1-3. 대입 연산 = 43
1-2-2. 논리 연산 = 44
1-2-2-1. 관계식 = 44
1-2-2-2. 논리식 = 45
1-2-2-3. 조건식 = 46
1-2-2-4. 콤마(,) 연산자 = 47
1-2-3. 비트 연산 = 47
1-2-3-1. 비트 연산 = 47
1-2-3-2. 시프트 연산 = 48
1-2-3-3. 비트, 시프트 대입 연산 = 49
1-2-4. 연산자 우선순위 = 50
1-2-4-1. 우선순위를 생각하는 방법 = 50
1-2-4-2. 우선순위 = 50
1-2-5. 연습문제 = 52
1-2-5-1. 산술 연산자 이해하기 = 52
1-2-5-2. 논리 연산자 이해하기 = 55
1-2-5-3. 비트 연산자 이해하기 = 57
1-2-5-4. 우선순위 이해하기 = 59
1-3 제어 구조 = 62
1-3-1. 문장과 블록 = 62
1-3-1-1. 문장(statement) = 62
1-3-1-2. 블록(block) = 62
1-3-2. 선택 처리 = 63
1-3-2-1. if∼else 문 = 63
1-3-2-2. switch 문 = 65
1-3-3. 반복 처리 = 68
1-3-3-1. while 문 = 68
1-3-3-2. do∼while 문 = 69
1-3-3-3. for 문 = 70
1-3-3-4. break 문 = 72
1-3-3-5. continue 문 = 74
1-3-3-6. goto 문 = 75
1-3-4. 연습문제 = 76
1-3-4-1. if 문 이해하기 = 76
1-3-4-2. switch 문 이해하기 = 78
1-3-4-3. while 문 이해하기 = 79
1-3-4-4. do∼while 문 이해하기 = 81
1-3-4-5. for 문 이해하기 = 83
1-3-4-6. break 문 이해하기 = 84
1-4 함수 = 87
1-4-1. 함수의 서식과 사용 방법 = 87
1-4-1-1. 함수란? = 87
1-4-1-2. 함수의 정의 = 88
1-4-1-3. 자기 자신 함수를 호출 = 93
1-4-2. 함수에 관한 변수 = 94
1-4-2-1. 기억 클래스 = 94
1-4-2-2. 변수의 유효범위 = 97
1-4-2-3. 변수의 초기화 = 100
1-4-3. 프리프로세서 = 101
1-4-3-1. 프리프로세서란? = 101
1-4-3-2. 프리프로세서 기능 = 102
1-4-4. 연습문제 = 109
1-4-4-1. return 문 이해하기 = 109
1-4-4-2. 가인수 이해하기 = 112
1-4-4-3. return 문 및 가인수 이해하기 = 114
1-4-4-4. static 이해하기 = 117
1-5 포인터와 배열 = 119
1-5-1. 포인터 = 119
1-5-1-1. 메모리 어드레스와 포인터 = 119
1-5-1-2. 포인터와 함수 = 126
1-5-2. 배열 = 131
1-5-2-1. 1차원 배열 = 131
1-5-2-2. 다차원 배열 = 134
1-5-2-3. 배열과 포인터 = 136
1-5-2-4. 문자열 = 141
1-5-2-5. 배열과 함수 = 146
1-5-3. 연습문제 = 151
1-5-3-1. 포인터 이해하기 = 151
1-5-3-2. 포인터 가인수 이해하기 = 155
1-5-3-3. 포인터 리턴 이해하기 = 157
1-5-3-4. 1차원 배열 이해하기 = 159
1-5-3-5. 2차원 배열 이해하기 = 161
1-5-3-6. 1차원 문자열 이해하기 = 163
1-5-3-7. 2차원 문자열 이해하기 = 165
1-5-3-8. 배열의 가인수 이해하기 = 168
1-5-3-9. 배열의 리턴 이해하기 = 171
1-5-3-10. 여러 개 배열의 가인수 이해하기 = 173
1-5-3-11. 포인터의 포인터 이해하기 = 175
1-6 구조체와 공용체 = 178
1-6-1. 구조체 = 178
1-6-1-1. 구조체의 서식과 사용 방법 = 178
1-6-1-2. 구조체 배열 = 183
1-6-1-3. 구조체에 대한 포인터 = 186
1-6-1-4. 함수에서 구조체 주고받기 = 188
1-6-1-5. 구조체의 구조체 = 191
1-6-1-6. 비트 필드 = 192
1-6-2. 공용체 및 열거형 = 193
1-6-2-1. 공용체란? = 193
1-6-2-2. 열거형이란? = 196
1-6-3. 연습문제 = 197
1-6-3-1. 구조체 이해하기 = 197
1-6-3-2. 구조체 배열 이해하기 = 200
1-6-3-3. 구조체 포인터 이해하기 = 202
1-6-3-4. 구조체 가인수 이해하기 = 205
1-6-3-5. 구조체의 구조체 이해하기 = 207
1-6-3-6. 구조체의 포인터 이해하기 = 210
1-6-3-7. 구조체의 재귀적 방법 이해하기 = 213
1-6-3-8. 구조체의 문자열 이해하기 = 216
1-6-3-9. 구조체의 비트 필드 이해하기 = 219
1-6-3-10. 기본적인 공용체 이해하기 = 221
1-6-3-11. 공용체 응용 이해하기 = 224
1-6-3-12. 열거형 데이터·형 이해하기 = 227
제2장 라이브러리
2-1 라이브러리 파일 = 231
2-1-1. 라이브러리 파일들 = 231
2-1-2. 메모리 액세스 매크로 = 232
2-2 라이브러리 함수 = 235
2-2-1. 입·출력 함수 = 235
2-2-1-1. putchar, puts = 236
2-2-1-2. printf = 238
2-2-1-3. vprintf = 243
2-2-1-4. sprintf = 245
2-2-1-5. vsprintf = 247
2-2-1-6. _getkey = 249
2-2-1-7. getchar = 251
2-2-1-8. ungetchar = 253
2-2-1-9. gets = 255
2-2-1-10. scanf = 257
2-2-1-11. sscanf = 262
2-2-2. 문자 변환 및 분류 함수 = 264
2-2-2-1. 문자 검사 함수 = 265
2-2-2-2. toascii = 269
2-2-2-3. toint = 271
2-2-2-4. _toupper, toupper = 273
2-2-2-5. _tolower, tolower = 275
2-2-3. 문자열 조작 함수 = 277
2-2-3-1. strlen = 278
2-2-3-2. strcpy, strncpy = 280
2-2-3-3. strcat, strncat = 282
2-2-3-4. strcmp, strncmp = 284
2-2-3-5. strpos, strrpos = 287
2-2-3-6. strchr, strrchr = 289
2-2-3-7. strcspn, strspn = 291
2-2-3-8. strpbrk, strspn = 293
2-2-4. 메모리 조작 함수 = 295
2-2-4-1. memset, memchr = 295
2-2-4-2. memcpy, memccpy = 297
2-2-4-3. memmove = 300
2-2-4-4. memcmp = 302
2-2-5. 메모리 할당 함수 = 304
2-2-5-1. init_ mempool = 304
2-2-5-2. calloc = 306
2-2-5-3. malloc = 308
2-2-5-4. free = 310
2-2-5-5. realloc = 312
2-2-6. 가변 인수 처리 함수 = 314
2-2-6-1. va_list, va_strat, va_end = 314
2-2-6-2. va_arg = 315
2-2-7. 데이터 변환 함수 = 318
2-2-7-1. abs, cabs, labs, fabs = 318
2-2-7-2. atoi, atol, atof = 322
2-2-7-3. strtol, strtoul, strtod = 325
2-2-8. 수학 함수 = 328
2-2-8-1. _crol_, _cror_, _irol_, _lrol_, lrol,_crol_, _lror_ = 329
2-2-8-2. rand, srand = 333
2-2-8-3. _chkfloat = 335
2-2-8-4. fabs, ceil, floor, fmod, modf = 337
2-2-8-5. sqrt, pow, exp, log, log10 = 340
2-2-8-6. sin, cos, tan, sinh, cosh, tanh, asin, acos, atan, atan2 = 344
2-2-9. 기타 함수들 = 350
2-2-9-1. _nop_, _testbit_ = 350
2-2-9-2. setjmp, longjmp = 353
제3장 AT89S51
3-1 AT89S51의 구조 = 359
3-1-1 AT89S51의 내부 구조 = 359
3-1-1-1. AT89S51의 특징 = 359
3-1-1-2. AT89S51의 레지스터 기능 = 359
3-1-1-3. 메모리 구조 = 361
3-1-2 AT89S51 하드웨어 사양 = 365
3-1-2-1. AT89S51의 핀 기능 = 365
3-1-2-2. AT89S51의 기본 동작 = 368
3-1-3 AT89S51을 위한 C 언어 기능 = 373
3-1-3-1. 확장된 데이터·형 = 373
3-2 I/O 포트 = 375
3-2-1 I/O 포트 기능 및 구조 = 375
3-2-1-1. 포트 0 = 375
3-2-1-2. 포트 1 = 376
3-2-1-3. 포트 2 = 377
3-2-1-4. 포트 3 = 378
3-2-2 I/O 포트 기능 연습 = 381
3-2-2-1. 포트의 출력 기능 이해하기 = 381
3-2-2-2. 포트의 입력 기능 이해하기 = 384
3-3 인터럽트 및 파워 절약 모드 = 386
3-3-1 인터럽트 = 386
3-3-1-1. 인터럽트의 종류 = 386
3-3-1-2. 인터럽트에 사용되는 레지스터 = 387
3-3-1-3. 인터럽트 함수 = 390
3-3-1-4. 외부 인터럽트 = 390
3-3-2 파워 절약 모드 = 392
3-3-2-1. 파워 다운 모드 = 392
3-3-2-2. 아이들 모드 = 394
3-3-2-3. 워치독 타이머 = 394
3-3-3 인터럽트 기능 연습 = 397
3-3-3-1. 외부 인터럽트 이해하기 = 397
3-4 타이머 = 400
3-4-1 타이머/카운터 = 400
3-4-1-1. 타이머/카운터란? = 400
3-4-1-2. 타이머/카운터에서 사용되는 레지스터 = 401
3-4-1-3. 타이머/카운터 동작 모드 = 403
3-4-2 타이머/카운터 기능 연습 = 409
3-4-2-1. 타이머 기능 이해하기 = 409
3-4-2-2. 카운터 기능 이해하기 = 413
3-5 데이터 통신 = 416
3-5-1 시리얼 포트 = 416
3-5-1-1. 시리얼 포트에서 사용되는 레지스터 = 416
3-5-1-2. 보 레이트 = 418
3-5-1-3. 동작 모드 = 420
3-5-2 시리얼 포트 기능 연습 = 423
3-5-2-1. 모드 1 통신하기 = 423